Lo scenario
Dopo una lunga giornata di lavoro in ufficio e navigando su stackexchange.com , finalmente esco dalla porta alle 16:58, già stanco della giornata. Poiché sono ancora solo uno stagista, la mia attuale modalità di trasporto è in bicicletta. Mi dirigo verso la mia fidata Peugeot Reynolds 501 , ma prima di poter salpare su di essa, devo sbloccarla. Il blocco è un blocco a combinazione standard a quattro cifre (0-9), attraverso il telaio e la ruota anteriore. Mentre provo a rimanere sveglio, alzo la mano per entrare nella combinazione.
La sfida
Poiché le mie dita sono così stanche, voglio ruotare la serratura sulla combinazione corretta con il minor numero di movimenti. Un movimento è definito come una rotazione di una posizione (36 gradi), ad esempio c'è un movimento da 5737
a 5738
. Tuttavia, sono in grado di afferrare fino a tre squilli consecutivi contemporaneamente e di ruotarli come uno , che conta solo come un singolo movimento. Ad esempio v'è anche solo movimento da 5737
a 6837
o 5626
. Passare da 5737
a 6838
non è un movimento, poiché le cifre numero 1,2 e 4 si sono spostate nella stessa direzione, ma indipendentemente dalla cifra numero 3.
Pertanto, per una data combinazione che posso vedere sul blocco bici (qualsiasi numero intero a 4 cifre), qual è il numero più basso di movimenti che posso fare per sbloccarlo, e sì, posso ruotare in entrambe le direzioni in qualsiasi momento. Con questo intendo dire che posso girare alcune cifre in una direzione e altre nell'altra direzione: non tutti i miei movimenti saranno in senso antiorario o orario per ogni sblocco.
Poiché sono pigro, il mio codice di sblocco è 0000.
Questo è il golf del codice, non posso preoccuparmi di scrivere molto codice, quindi vince il programma più breve in numero di byte.
L'input proviene da stdin e il tuo codice dovrebbe generare le combinazioni che posso vedere ad ogni passo dopo ogni movimento, incluso lo 0000 alla fine. Ciascuna delle combinazioni di output deve essere separata da uno spazio / newline / virgola / punto / e commerciale.
Esempi
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
Ho provato a pubblicarlo su http://bicycles.stackexchange.com , ma a loro non è piaciuto ...
Disclaimer: prima golf, quindi tutto ciò che è rotto / qualsiasi informazione mancante fammi sapere! Inoltre ho fatto tutti gli esempi a mano, quindi potrebbero esserci soluzioni che comportano meno movimenti!
EDIT: per le risposte che hanno più percorsi di soluzione con uguale numero di movimenti (praticamente tutti), non esiste una soluzione preferita.