이동 순서는 Rubik 's Cube에서의 이동 순서 (회전)입니다 (아래 표기법 참조). 빈 이동 시퀀스 외에도 큐브에 전혀 영향을 미치지 않는 다른 많은 이동 시퀀스가 있습니다. 우리는 이러한 이동 시퀀스를 식별 시퀀스라고 부릅니다.
이러한 신원 순서 중 일부는 U2 R R' U2
또는 같은 결정을 내릴 수 U D2 U' D2
있습니다. 첫 번째에서는 두 번의 임의 이동이 수행 된 U2 R
후 즉시 취소 R' U2
됩니다. 두 번째는 비슷합니다. 처음 두 번의 임의 이동 U D2
후 실행 취소되지만 순서는 반대 U' D2
입니다. 이동 U
은 상위 레이어의 조각 D2
에만 영향을 미치고 이동 은 하위 레이어의 조각에만 영향을 미치기 때문에 작동합니다 . 이 두 이동 시퀀스의 시각화를 볼 수 있습니다.
다른 식별 순서는 전혀 명확하지 않을 수 있습니다. 예를 들어 시퀀스 R' U' R' F' U F U' R' F R F' U' R U2 R
입니다. 꽤 길지만 큐브에는 전혀 영향을 미치지 않습니다.
이동 표기법
움직임은 큐브의 6면 중 하나의 한 레이어의 회전을 나타냅니다. 이동은면을 나타내는 하나의 문자와 회전 각도를 나타내는 선택적 접미사로 구성됩니다.
글자와 해당면은 U (위-위를 향한면), D (아래-아래를 향한면), R (오른쪽-오른쪽을 향한면), L (왼쪽-왼쪽을 향한면) , F (앞면-자신을 향한면) 및 B (뒷면-자신을 향한면)
접미사가 없으면 얼굴이 시계 방향으로 90도 회전하고 접미사가 '
의미되고 얼굴이 시계 반대 방향으로 90도 회전되고 접미사가 2
의미되면 얼굴이 시계 방향으로 180도 회전됩니다.
표기법에 문제가있는 경우 http://alg.cubing.net을 사용 하면 이러한 이동 시퀀스를 시각화 할 수 있습니다.
도전
당신의 임무는 이동 시퀀스가 ID인지 아닌지를 결정하는 프로그램을 작성하는 것입니다.
당신은 전체 프로그램이나 함수를 작성할 수 있습니다. STDIN, 명령 행 인수, 프롬프트 또는 함수 인수를 통해 입력으로 이동 시퀀스 (공백이 공백으로 구분됨)를 포함하는 문자열을 수신하고 부울 값 또는 해당 정수를 리턴 (반환 값 또는 STDOUT을 통해)해야합니다. True-1-동일성 시퀀스 / False-0-동일성 시퀀스가 아님).
접미사 '
가 프로그래밍 언어에서 문제를 일으키는 경우 숫자가 아닌 다른 기호를 사용할 수 있습니다. R F2 U3
허용되지 않습니다.
이것은 codegolf이므로 가장 짧은 코드 (바이트)가 이깁니다.
테스트 사례
"" -> True
"U2 R R' U2" -> True
"U D2 U' D2" -> True
"U2 R U2 R'" -> False
"R' U' R' F' U F U' R' F R F' U' R U2 R" -> True
"L'" -> False
"B B2 B' B2" -> True
"D D2 D'" -> False
"R F' D2 U B' F2 B' U2 D2 F2 B2 U F R'" -> True
"D2 U' R2 U F2 D2 U' R2 U' B' L2 R' B' D2 U B2 L' D' R2" -> False
"R U R' U' R' F R2 U' R' U' R U R' F' R2 U R2 U' R2 U' D R2 U' R2 U R2 D'" -> True
"R U R' U' R' F R2 U' R' U' R U R' F' R2 U' R2 U R2 U' D R2 U' R2 U R2 D'" -> False
"B2 F2 U' F2 U R2 F2 U2 B D' R' D' R2 D' F2 U' F U R2 U R B D B D2 L2 D' F2 U D' R' D B R2 D2 F2 R' F2 D2" -> True
"R U2 R' U R' U2 R U2 R U R' U' R' U R U2" -> False
"U F B' R' U F' R U' F' B L U' F L'" -> False
"R2 U' R' U' R U R U R U' R" -> False
"R' F R' B2 R F' R' B2 R2" -> False
U3
하면 접미사를 숫자로 캐스팅하는 것보다을 허용 합니다.
R2 D2
입니다.
That is F(orward), B(ackward), L(eft), R(ight), U(p), D(own)
R F2 U3
?