fork download
  1. @moves = qw(R U R' U' R' F R2 U' R' U' R U R' F');
  2.  
  3. $state = 'UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR';
  4. %turns = (U => 'FLBR', D => 'FRBL', R => 'FUBD', L => 'FDBU', F => 'URDL', B => 'ULDR');
  5.  
  6. sub move {
  7. my ($pos) = @_;
  8. ($cycled = $turns{$side}) =~ s/(.)(.*)/$2$1/;
  9. eval "\$pos =~ y/$turns{$side}/$cycled/";
  10. $pos;
  11. }
  12.  
  13. print "Moves: @moves\nStart: $state\n";
  14. for $move (@moves) {
  15. $move =~ s/'/3/;
  16. ($side, $angle) = split //, $move . 1;
  17. $state =~ s/\w*$side\w*/move($&)/ge while $angle--;
  18. }
  19. print "End: $state\n";
Success #stdin #stdout 0s 3564KB
stdin
Standard input is empty
stdout
Moves: R U R' U' R' F R2 U' R' U' R U R' F'
Start: UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR
End:   UF UL UB UR DF DR DB DL FR FL BR BL URB UFR UBL ULF DRF DFL DLB DBR