Sie haben Ihr Fahrrad mit einem 3-stelligen Zahlenschloss gesperrt. Jetzt möchten Sie eine Fahrt machen und müssen diese mit Hilfe des folgenden Programms entsperren.
Eingang
1. Parameter
Die Ziffernkombination Ihres Schlosses im gesperrten Zustand. Es muss sich vom 2. Parameter unterscheiden (= die Kombination des entsperrten Zustands). (Sonst könnte dein Fahrrad gestohlen werden!)
Bereich 000..999. Führende Nullen dürfen nicht weggelassen werden.
2. Parameter
Die Ziffernkombination Ihres Schlosses im entsperrten Zustand. Dieser Wert ist Ihr Ziel.
Bereich 000..999. Führende Nullen dürfen nicht weggelassen werden.
Ausgabe
Eine Liste aller Zustände des Zahlenschlosses nach jeder "Drehung", einschließlich des Anfangszustands (der immer der 1. Parameter ist) und des letzten Schritts (der immer der 2. Parameter ist).
Algorithmus
Sie beginnen, die erste Ziffer einzeln zu "drehen", bis Sie im entsperrten Zustand die richtige Ziffer erreicht haben . Da Sie jedoch den gesamten Entsperrcode kennen, drehen Sie die Ziffer in die Richtung, in der Sie die geringste Anzahl von Umdrehungen benötigen, um die Ziffer im entsperrten Zustand zu erreichen . Bei einem Unentschieden können Sie die Richtung wählen, die Sie bevorzugen.
Wenn Sie die richtige erste Ziffer erreicht haben, beginnen Sie den gleichen Vorgang mit der 2. und dann mit der 3. Ziffer.
Die Reihenfolge der Ziffern ist als Kreis zu verstehen:
... 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ...
Dies bedeutet, dass die kleinste Anzahl von Umdrehungen von 1 bis 9 nicht ist
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9
= 8
aber
1 -> 0 -> 9
= 2.
Anmerkungen
- Sie können sich auf Standard-E / A-Regeln verlassen
- Sie können die Reihenfolge der Parameter ändern.
Beispiele
Beispiel 1, richtig
Input: 999 001
Output:
999
099
009
000
001
Beispiel 2, richtig
Input: 000 292
Output:
000
100
200
290
291
292
Beispiel 3, falsche Ausgabe
Input: 999 121
Wrong output:
999
899 // Wrong because wrong rotation direction.
799
699
...
Correct output:
999
099
199
109
119
129
120
121
Beispiel 4, falsche Eingabe
Input: 1 212 // Wrong because no leading zeros.
Dies ist Code-Golf, die kürzeste Antwort gewinnt.