Ich habe einen Zähler. Es ist ein kleines Gerät, das so aussieht:
Die Anzeige geht von 0000bis 9999. Oben befindet sich ein kleiner Druckknopf, der die Anzahl um 1 erhöht, und rechts ein kleiner Knopf, mit dem der Zähler auf 0 zurückgesetzt werden soll.
Das Besondere an dem kleinen Knopf ist, dass Sie ihn, wenn Sie ihn rückwärts drehen, beliebig vergrößern können, sobald Sie ihn wieder vorwärts drehen. Wenn ich also den Zählerknopf 10 Mal drücke, damit der Zähler angezeigt wird 0010, kann ich den Knopf nach hinten drehen, bis ich ein winziges Klicken höre, ihn dann wieder nach vorne drehen und ihn direkt zu bewegen 0090.
Der Knopf erhöht jedoch jedes Mal, wenn er Zahlen nach vorne drückt, alle Vorkommen derselben Ziffer um 1. Wenn der Zähler angezeigt wird 6060, können Sie ihn nur auf 7070, nicht auf 6070oder erhöhen 7060. Außerdem wird der Knopf rollen 9s über 0ohne zu tragen, so 0990wird Voraus 0000statt 1000oder 1100.
Ich möchte wissen, wie der Zähler am effizientesten auf eine bestimmte Zahl eingestellt werden kann. Ihre Aufgabe ist es, ein Programm oder eine Funktion zu schreiben, die die kürzeste Folge von Tastendrücken und Knopfbewegungen bestimmt, die dazu erforderlich sind.
Ihr Programm nimmt eine 4-stellige Zahl von 0000bis als Eingabe 9999und gibt eine Reihe von Schritten im folgenden Format zurück:
> 0001
C
> 0093
C12345678C12345678CCC
> 1000
C12345678C12345678C12345678C12345678C12345678C12345678C12345678C
> 9999
012345678
Wobei Cfür "Druckknopf drücken" steht und jede Ziffer Dvon 0 bis 9 für "Verwenden Sie den Knopf, um alle Vorkommen Dum 1 vorzuschieben" steht.
Ihr Programm muss eine gültige Abfolge von Schritten für alle möglichen vierstelligen Kombinationen erstellen und wird anhand der Gesamtzahl der Schritte bewertet, die für alle 10.000 Fälle erforderlich sind. Bei einem Gleichstand (höchstwahrscheinlich, wenn der optimale Algorithmus gefunden wurde) gewinnt der kürzere Code.

0010in0020in diesem Fall? Oder können Sie den Knopf nur rückwärts drehen? Und zählt jedes "D" als "D" Anzahl der Vorschübe des Knopfes (bedeutet zum Beispiel,1234567den Knopf 1 Mal, dann 2 Mal, dann 3 Mal usw. zu drehen)? Oder bedeutet es nur jede einzelne Knopfdrehung (bedeutet zum Beispiel1234567nur, den Knopf 7 Mal zu drehen)?