Sie sollten ein Programm oder eine Funktion schreiben, die eine Startreihenfolge von eindeutigen positiven Ganzzahlen mit einer Ziffer und die Länge der Spur als Eingabe ausgibt oder die Endreihenfolge der Zahlen zurückgibt.
Die Eingabe [5,1,2,6,7] and 14
definiert die folgende Rasse:
--------------
76215 ->
--------------
Regeln des Rennens
- Die Strecke wird umbrochen und die Ziffern können mehrere Runden lang sein.
- Die Reihenfolge der Schritte ist zyklisch und basiert auf der Startposition. In unserem Beispiel
5 1 2 6 7 5 1 2 ...
. - Es können nicht mehrere Ziffern an derselben Position stehen.
Jede Ziffer hat eine Geschwindigkeit von
digit_value
Zelle pro Schritt. Das Überholen einer Ziffer oder eines fortlaufenden Ziffernblocks kostet einen zusätzlichen Schritt. Wenn die Ziffer nicht die dafür erforderliche Geschwindigkeit hat, stoppt sie vor der (dem) Ziffernblock (en). Beispiele:[41 ] => [ 1 4 ] 4 overtakes 1 [2 1 ] => [ 21 ] 2 can only move 1 as it can't move 3 to overtake 1 [4 12 ] => [ 412 ] 4 can only move 1 as it can't move 5 to overtake 12 [ 3 ] => [ 3 ] 3 starting a new lap
Jede Ziffer muss
digit_value
Runden drehen, bevor sie endet. Eine Runde ist beendet, wenn die letzte Zelle der Strecke verlassen wurde. Eine fertige Ziffer wird aus der Spur entfernt.- Beachten Sie, dass eine Ziffer in einem Schritt möglicherweise mehrmals ihre Startposition erreicht und mehrere Runden absolviert.
Eingang
- Eine Liste eindeutiger positiver Ganzzahlen (
1..9
) mit mindestens einem Element und einer einzelnen positiven Ganzzahl, die größer als die Länge der Liste und die Länge der Spur ist.
Ausgabe
- Eine Liste der Ziffern in der Reihenfolge, in der sie in einem eindeutigen Format abgeschlossen wurden.
Beispiele
Ein visuelles Schritt-für-Schritt-Beispiel für die Eingabe starting_order = [5,9,2] and length = 6
295 | Start position
29 5| digit 5 moves
2 9 5| digit 9 moves, finishing lap #1
29 5| digit 2 moves
529 | digit 5 moves, finishing lap #1
52 9| digit 9 moves, finishing lap #2
5 29| digit 2 moves
529| digit 5 moves
9 52 | digit 9 moves, finishing laps #3 and #4
29 5 | digit 2 moves, finishing lap #1
29 5| digit 5 moves
2 9 5| digit 9 moves, finishing lap #5
29 5| digit 2 moves
529 | digit 5 moves, finishing lap #2
52 9| digit 9 moves, finishing lap #6
5 29| digit 2 moves
529| digit 5 moves
9 52 | digit 9 moves, finishing laps #7 and #8
9 5 | digit 2 moves, finishing lap #2 --> remove 2 from the track
59 | digit 5 moves, finishing lap #3
5 | digit 9 moves, finishing lap #9 --> remove 9 from the track
5| digit 5 moves
5 | digit 5 moves, finishing lap #4
| digit 5 moves, finishing lap #5 --> remove 5 from the track
------
Finish order: 2 9 5
Beispiele im Format Input => Output
[3], 2 => [3]
[9, 5], 3 => [9, 5]
[5, 9, 2], 6 => [2, 9, 5]
[5, 9, 2], 10 => [5, 9, 2]
[5, 7, 8, 1, 2], 10 => [1, 5, 7, 8, 2]
[5, 1, 6, 8, 3, 2], 17 => [1, 6, 8, 2, 3, 5]
[1, 2, 3, 7, 8, 9], 15 => [1, 7, 8, 9, 2, 3]
[9, 8, 7, 3, 2, 1], 15 => [8, 7, 9, 1, 2, 3]
[1, 2, 3, 4, 5, 6, 7, 8, 9], 20 => [1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1], 20 => [8, 7, 5, 9, 6, 1, 2, 4, 3]
Dies ist Code-Golf, also gewinnt der kürzeste Eintrag.