import java.text.DecimalFormat ;
import java.util.Arrays ;
import java.util.Iterator ;
import java.util.List ;
import java.util.SortedMap ;
import java.util.TreeMap ;
class test{
public static void main
( String args
[ ] ) { "R U R' U' R' F R2 U' R' U' R U R' F'" ,
"F R U' R' U R U R2 F' R U R U' R'" ,
"L2 U' L2 D F2 R2 U R2 D' F2 U" ,
"R2 U' R2 D B2 L2 U L2 D' B2 U" ,
"R2 U R2' U' R2 U' D R2' U' R2 U R2' D'" ,
"R2 U R2 U' R2 F2 U' F2 D R2 D'" } ;
"U" , "U'" , "U2" ,
"R" , "R'" , "R2" ,
"F" , "F'" , "F2" ,
"D" , "D'" , "D2" ,
"B" , "B'" , "B2" ,
"L" , "L'" , "L2" ,
"M" , "M'" , "M2" ,
"E" , "E'" , "E2" ,
"S" , "S'" , "S2" } ;
List
< String
> moveList
= Arrays .
asList ( moveArray
) ; double [ ] moveCount= {
.09, .10, .15,
.08, .08, .14,
.13, .14, .19,
.11, .12, .17,
.17, .15, .22,
.13, .18, .22,
.15, .11, .18,
.22, .25, .28,
.22, .25, .28} ;
SortedMap
< Double , String
> map
= new TreeMap
< Double , String
> ( ) ;
for ( int x= 0 ; x< algList.length ; x++ ) {
ialgList[ x] = algList[ x] .replace ( "(" , "" ) ;
ialgList[ x] = ialgList[ x] .replace ( ")" , "" ) ;
ialgList[ x] = ialgList[ x] .replace ( "2'" , "2" ) ;
ialgList[ x] = ialgList[ x] .replace ( " " , " " ) ;
String [ ] algFiltered
= ialgList
[ x
] .
split ( " " ) ; double t = 0 ;
for ( int y= 0 ; y< algFiltered.length ; y++ ) {
t+= moveCount[ moveList.indexOf ( algFiltered[ y] ) ] ;
}
map.put ( t, algList[ x] ) ;
}
Iterator< Double> iterator = map.keySet ( ) .iterator ( ) ;
while ( iterator.hasNext ( ) ) {
double time = 0 ;
time
= Double .
valueOf ( df.
format ( key
) ) ; System .
out .
println ( time
+ ": " + map.
get ( key
) ) ; }
}
}
aW1wb3J0IGphdmEudGV4dC5EZWNpbWFsRm9ybWF0OwppbXBvcnQgamF2YS51dGlsLkFycmF5czsKaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwppbXBvcnQgamF2YS51dGlsLlNvcnRlZE1hcDsKaW1wb3J0IGphdmEudXRpbC5UcmVlTWFwOwoKY2xhc3MgdGVzdHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmcgYXJnc1tdKXsKCQlTdHJpbmdbXSBhbGdMaXN0PXsKCQkJIlIgVSBSJyBVJyBSJyBGIFIyIFUnIFInIFUnIFIgVSBSJyBGJyIsCgkJICAgICAgICAiRiBSIFUnIFInIFUgUiBVIFIyIEYnIFIgVSBSIFUnIFInIiwKCQkgICAgICAgICJMMiBVJyBMMiBEIEYyIFIyIFUgUjIgRCcgRjIgVSIsCgkJICAgICAgICAiUjIgVScgUjIgRCBCMiBMMiBVIEwyIEQnIEIyIFUiLAoJCSAgICAgICAgIlIyIFUgUjInIFUnIFIyIFUnIEQgUjInIFUnIFIyIFUgUjInIEQnIiwgCgkJICAgICAgICAiUjIgVSBSMiBVJyBSMiBGMiBVJyBGMiBEIFIyIEQnIn07CgkJU3RyaW5nW10gaWFsZ0xpc3Q9bmV3IFN0cmluZ1thbGdMaXN0Lmxlbmd0aF07CgkJU3RyaW5nW10gbW92ZUFycmF5PXsKCQkJIlUiLCAiVSciLCAiVTIiLAogICAgICAgICAgICAgICAgCSJSIiwgIlInIiwgIlIyIiwKICAgICAgICAgICAgICAgIAkiRiIsICJGJyIsICJGMiIsCiAgICAgICAgICAgICAgICAJIkQiLCAiRCciLCAiRDIiLAogICAgICAgICAgICAgICAgCSJCIiwgIkInIiwgIkIyIiwKICAgICAgICAgICAgICAgIAkiTCIsICJMJyIsICJMMiIsICAgIAogCQogCSAgICAgICAgICAgICAgICJNIiwgIk0nIiwgIk0yIiwKIAkgICAgICAgICAgICAgICAiRSIsICJFJyIsICJFMiIsCiAJICAgICAgICAgICAgICAgIlMiLCAiUyciLCAiUzIifTsKCQlMaXN0PFN0cmluZz4gbW92ZUxpc3Q9QXJyYXlzLmFzTGlzdChtb3ZlQXJyYXkpOwoJCWRvdWJsZVtdIG1vdmVDb3VudD17CgkJCS4wOSwgLjEwLCAuMTUsCiAgICAgICAgICAgICAgICAJLjA4LCAuMDgsIC4xNCwKICAgICAgICAgICAgICAgIAkuMTMsIC4xNCwgLjE5LAogICAgICAgICAgICAgICAgCS4xMSwgLjEyLCAuMTcsCiAgICAgICAgICAgICAgICAJLjE3LCAuMTUsIC4yMiwKICAgICAgICAgICAgICAgIAkuMTMsIC4xOCwgLjIyLAogCiAgICAgICAgICAgICAgICAJLjE1LCAuMTEsIC4xOCwKICAgICAgICAgICAgICAgIAkuMjIsIC4yNSwgLjI4LAogICAgICAgICAgICAgICAgCS4yMiwgLjI1LCAuMjh9OwoKCQlTb3J0ZWRNYXA8RG91YmxlLCBTdHJpbmc+IG1hcCA9IG5ldyBUcmVlTWFwPERvdWJsZSwgU3RyaW5nPigpOwoJCQoJCWZvcihpbnQgeD0wOyB4PGFsZ0xpc3QubGVuZ3RoOyB4KyspewoJCQlpYWxnTGlzdFt4XSA9IGFsZ0xpc3RbeF0ucmVwbGFjZSgiKCIsICIiKTsKCQkJaWFsZ0xpc3RbeF0gPSBpYWxnTGlzdFt4XS5yZXBsYWNlKCIpIiwgIiIpOwoJCQlpYWxnTGlzdFt4XSA9IGlhbGdMaXN0W3hdLnJlcGxhY2UoIjInIiwgIjIiKTsKCQkJaWFsZ0xpc3RbeF0gPSBpYWxnTGlzdFt4XS5yZXBsYWNlKCIgICIsICIgIik7CgkJCVN0cmluZ1tdIGFsZ0ZpbHRlcmVkID0gaWFsZ0xpc3RbeF0uc3BsaXQoIiAiKTsKCQkJZG91YmxlIHQgPSAwOwoJCQlmb3IoaW50IHk9MDsgeTxhbGdGaWx0ZXJlZC5sZW5ndGg7IHkrKyl7CgkJCQl0Kz1tb3ZlQ291bnRbbW92ZUxpc3QuaW5kZXhPZihhbGdGaWx0ZXJlZFt5XSldOwoJCQl9CgkJCW1hcC5wdXQodCwgYWxnTGlzdFt4XSk7CgkJfQoJCUl0ZXJhdG9yPERvdWJsZT4gaXRlcmF0b3IgPSBtYXAua2V5U2V0KCkuaXRlcmF0b3IoKTsKCQl3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7CgkJICAgT2JqZWN0IGtleSA9IGl0ZXJhdG9yLm5leHQoKTsKCQkgICBkb3VibGUgdGltZSA9IDA7CgkJICAgRGVjaW1hbEZvcm1hdCBkZiA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjLiMjIik7CgkJICAgdGltZSA9IERvdWJsZS52YWx1ZU9mKGRmLmZvcm1hdChrZXkpKTsKCQkgICBTeXN0ZW0ub3V0LnByaW50bG4odGltZSArICI6ICIgKyBtYXAuZ2V0KGtleSkpOwoJCX0KCX0KfQ==