시나리오
사무실에서 하루 종일 업무를 수행하고 stackexchange.com을 탐색 한 후 마침내 16:58에 문을 나섰습니다. 나는 여전히 인턴이기 때문에 현재 교통 수단은 자전거입니다. 나는 믿을 수있는 푸조 레이놀즈 501로 향 하지만, 항해를 시작하기 전에 잠금을 해제해야합니다. 잠금 장치는 프레임과 앞 바퀴를 통한 표준 4 자리 콤비네이션 잠금 장치 (0-9)입니다. 깨어 있으려고 노력할 때 손을 위로 들어 올려 조합에 들어갑니다.
도전
손가락이 너무 피곤하기 때문에 자물쇠를 최소한의 움직임으로 올바른 조합으로 돌리고 싶습니다. 하나 개의 이동은 한 위치 (도 36)에 의한 회전으로 정의되며, 예를 들어 하나 개가 이동 5737
하려면 5738
. 그러나, 나는 동시에 세 개의 연속 된 링 을 잡고 하나의 회전으로 돌릴 수 있는데, 이것은 단일 움직임으로 만 간주됩니다. 예를 들어도있다 하나의 운동 에서 5737
에 6837
나에가 5626
. 에서 이동하는 5737
것은 6838
자리 번호 1, 2 및 4는 독립적 자리 숫자 (3)의 동일한 방향으로 이동하지만 것처럼, 하나 개의 이동 아니다.
따라서 주어진 조합에 대해 자전거 잠금 장치 (4 자리 정수)에서 볼 수 있습니다. 잠금 해제를 위해 할 수있는 가장 낮은 움직임 수는 무엇입니까? 그렇습니다. 언제든지 어느 방향 으로든 회전 할 수 있습니다. 이 말은 한 방향으로 일부 숫자를 다른 방향으로 다른 숫자로 돌릴 수 있음을 의미합니다. 각 잠금 해제마다 모든 움직임이 시계 반대 방향 또는 시계 방향은 아닙니다.
게으 르기 때문에 잠금 해제 코드는 0000입니다.
이것은 많은 코드를 작성하는 데 귀찮게 할 수없는 코드 골프 이므로 바이트 수가 가장 짧은 프로그램이 승리합니다.
입력은 stdin에서 왔으며 코드는 끝에 0000을 포함하여 각 이동 후 각 단계에서 볼 수있는 조합을 출력해야합니다. 각 조합 출력은 공백 / 줄 바꿈 / 쉼표 / 마침표 / 앰퍼샌드로 구분해야합니다.
예
Input: 1210
0100
0000
Input: 9871
9870
0980
0090
0000
Input: 5555
4445&3335&2225&1115&0005&0006&0007&0008&0009&0000
Input: 1234
0124 0013 0002 0001 0000
http://bicycles.stackexchange.com에 게시하려고 시도 했지만 마음에 들지 않았습니다 ...
면책 조항 : 첫 번째 골프이므로 깨진 / 누락 된 정보가 있으면 알려주십시오! 또한 모든 예제를 직접 수행 했으므로 움직임이 적은 솔루션이있을 수 있습니다!
편집 : 같은 수의 이동 (실제로는 모두)으로 여러 솔루션 경로가있는 답변에는 선호되는 솔루션이 없습니다.