Anda harus menulis sebuah program atau fungsi yang memberikan urutan awal bilangan bulat positif satu digit dan panjang lintasan sebagai input output atau mengembalikan urutan selesai angka.
Input [5,1,2,6,7] and 14
mendefinisikan perlombaan berikut:
--------------
76215 ->
--------------
Aturan lomba
- Lintasan membungkus dan angka bisa beberapa putaran.
- Urutan langkah bersifat siklik dan berdasarkan pada posisi awal. Dalam contoh kita
5 1 2 6 7 5 1 2 ...
. - Tidak ada beberapa digit di posisi yang sama.
Setiap digit memiliki kecepatan
digit_value
sel per langkah. Melampaui satu digit atau satu blok digit yang terus menerus membutuhkan satu langkah ekstra. Jika digit tidak memiliki kecepatan yang diperlukan untuk itu akan berhenti sebelum (blok) digit. Contoh:[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
Setiap digit harus melewati
digit_value
putaran sebelum selesai. Lap selesai ketika sel terakhir dari trek ditinggalkan. Digit yang sudah selesai dihapus dari trek.- Perhatikan bahwa digit mungkin mencapai posisi awal beberapa kali melalui langkah dan menyelesaikan beberapa putaran.
Memasukkan
- Daftar bilangan bulat positif satu digit yang berbeda (
1..9
) dengan setidaknya satu elemen dan satu bilangan bulat positif, lebih besar dari panjang daftar, panjang trek.
Keluaran
- Daftar digit dalam urutan yang mereka selesaikan dalam format apa pun yang tidak ambigu.
Contohnya
Contoh langkah demi langkah visual untuk input 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
Contoh dalam 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]
Ini adalah kode-golf sehingga entri terpendek menang.