Сценарій
Після довгого робочого дня в офісі і перегляду stackexchange.com , я нарешті виходжу з дверей о 16:58, вже втомившись із днем. Оскільки я все ще лише стажист, теперішній вид транспорту на велосипеді. Я переїжджаю до свого надійного Peugeot Reynolds 501 , але перш ніж я зможу відплисти на ньому, мені потрібно його розблокувати. Замок - це стандартний чотиризначний комбінований замок (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 , але їм це не сподобалось ...
Відмова: Перший гольф, так що все, що порушено / будь-яка відсутність інформації, дайте мені знати! Також я робив усі приклади вручну, тому можуть бути рішення, які передбачають менше рухів!
EDIT: Для відповідей, які мають кілька шляхів рішення з однаковою кількістю рухів (практично всі вони), немає кращого рішення.