Vous devez écrire un programme ou une fonction qui a donné un ordre de départ d'entiers positifs distincts à un chiffre et la longueur de la piste en tant que sorties d'entrée ou retourne l'ordre d'arrivée des nombres.
L'entrée [5,1,2,6,7] and 14
définit la course suivante:
--------------
76215 ->
--------------
Règles de la course
- La piste s'enroule et les chiffres peuvent parcourir plusieurs tours.
- L'ordre des étapes est cyclique et basé sur la position de départ. Dans notre exemple
5 1 2 6 7 5 1 2 ...
. - Il ne peut pas y avoir plusieurs chiffres dans la même position.
Chaque chiffre a une vitesse de
digit_value
cellule par pas. Le dépassement d'un chiffre ou d'un bloc continu de chiffres coûte une étape supplémentaire. Si le chiffre n'a pas la vitesse nécessaire pour cela, il s'arrêtera avant le (bloc de) chiffre (s). Exemples:[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
Chaque chiffre doit faire des
digit_value
tours avant de terminer. Un tour est terminé lorsque la dernière cellule de la piste est laissée. Un chiffre terminé est supprimé de la piste.- Notez qu'un chiffre peut atteindre sa position de départ plusieurs fois au cours d'une étape et effectuer plusieurs tours.
Contribution
- Une liste d'entiers positifs distincts à un chiffre (
1..9
) avec au moins un élément et un seul entier positif, supérieur à la longueur de la liste, la longueur de la piste.
Production
- Une liste de chiffres dans l'ordre où ils ont terminé dans un format non ambigu.
Exemples
Un exemple visuel étape par étape pour l'entrée 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
Exemples de 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]
Il s'agit de code-golf, donc l'entrée la plus courte l'emporte.