합리적인 시간과 이동 시간 내에서 Rubik의 큐브 (3 * 3 * 3)를 해결하는 가장 짧은 프로그램을 작성하십시오 (예 : 기계에서 최대 5 초, 1000 미만).
입력 형식은 다음과 같습니다.
UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR
이 특정 입력은 해결 된 큐브를 나타냅니다.
처음 12 개의 2 문자열은 UF, UR, ... BL 위치의 가장자리입니다 (U = 위, F = 앞면, R = 오른쪽, B = 뒤쪽, L = 왼쪽, D = 아래). 3 문자열은 UFR, URB, ... DBR 위치의 모서리입니다.
출력은 다음 형식으로 일련의 이동을 제공해야합니다.
D+ L2 U+ F+ D+ L+ D+ F+ U- F+
D1 또는 D +는 D (아래)면을 시계 방향으로 90도 돌리는 것을 나타내고 L2는 L면을 180도 돌리고, U3 또는 U-는 U면을 시계 반대 방향으로 90도 돌리는 것을 나타냅니다.
문자는 대소 문자를 구분하지 않으며 공백은 선택 사항입니다.
예를 들어, 위의 출력은 다음 입력에 적합합니다.
RU LF UB DR DL BL UL FU BD RF BR FD LDF LBD FUL RFD UFR RDB UBL RBU
자세한 내용 은 일반적인 코드 골프 문제와 같이 파일 크기로 직접 점수를 매기는 것을 제외하고는 Tomas Rokicki의 큐브 콘테스트 를 참조하십시오 . 온라인 테스터 도 포함되어 있습니다.
참고로 이미 작성된 가장 짧은 솔루션은 큐브 콘테스트 수상자 목록의 마지막 항목입니다.
레이아웃 형식을 시각화하는 데 어려움을 겪고있는 사람들을 위해 :
0-1 2-3 4-5 6-7 8-9 10-11 12-13 14-15 16-17 18-19 20-21 22-23 24-25-26 27-28-29 30-31-32 33-34-35 36-37-38 39-40-41 42-43-44 45-46-47
UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR
Front:
+-------+-------+-------+
/ / / /|
/ 30 / 4 / 27 / |
+-------+-------+-------+ |
/ / / /|28+
/ 6 / / 2 / | /|
+-------+-------+-------+ |/ |
/ / / /|3 + |
/ 33 / 0 / 24 / | /|21+
+-------+-------+-------+ |/ | /|
| | | |26+ |/ |
| 35 | 1 | 25 | /| + |
| | | |/ | /|47+
+-------+-------+-------+ |/ | /
| | | |17+ |/
| 18 | | 16 | /|11+
| | | |/ | /
+-------+-------+-------+ |/
| | | |37+
| 40 | 9 | 38 | /
| | | |/
+-------+-------+-------+
Hidden faces:
+-------+-------+-------+
/| | | |
/ | 31 | 5 | 29 |
+ | | | |
/|32+-------+-------+-------+
/ | /| | | |
+ |/ | 22 | | 20 |
/|7 + | | | |
/ | /|23+-------+-------+-------+
+ |/ | /| | | |
|34+ |/ | 44 | 13 | 46 |
| /| + | | | |
|/ | /|43+-------+-------+-------+
+ |/ | / / / /
|19+ |/ 42 / 12 / 45 /
| /|15+-------+-------+-------+
|/ | / / / /
+ |/ 14 / / 10 /
|41+-------+-------+-------+
| / / / /
|/ 39 / 8 / 36 /
+-------+-------+-------+