คุณควรเขียนโปรแกรมหรือฟังก์ชั่นที่กำหนดลำดับเริ่มต้นของจำนวนเต็มบวกหนึ่งหลักที่แตกต่างกันอย่างชัดเจนและความยาวของแทร็กเป็นเอาท์พุทอินพุตหรือส่งคืนลำดับเสร็จสิ้นของตัวเลข
อินพุต[5,1,2,6,7] and 14
กำหนดการแข่งขันต่อไปนี้:
--------------
76215 ->
--------------
กฎของการแข่งขัน
- แทร็กล้อมรอบและหลักสามารถไปหลายรอบ
- คำสั่งของขั้นตอนเป็นรอบและขึ้นอยู่กับตำแหน่งเริ่มต้น
5 1 2 6 7 5 1 2 ...
ในตัวอย่างของเรา - ต้องไม่มีตัวเลขหลายหลักในตำแหน่งเดียวกัน
ทุกหลักมีความเร็วของ
digit_value
เซลล์ต่อขั้นตอน การแซงตัวเลขหรือการบล็อกตัวเลขต่อเนื่องมีค่าใช้จ่ายเพิ่มอีกหนึ่งขั้น หากตัวเลขไม่มีความเร็วที่จำเป็นสำหรับสิ่งนั้นมันจะหยุดก่อนที่ตัวเลข (บล็อก) ตัวอย่าง:[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
ตัวเลขทุกตัวต้องผ่าน
digit_value
รอบก่อนที่มันจะเสร็จ รอบจะเสร็จสมบูรณ์เมื่อเซลล์สุดท้ายของแทร็กถูกทิ้ง ตัวเลขที่เสร็จแล้วจะถูกลบออกจากแทร็ค- โปรดทราบว่าตัวเลขอาจถึงตำแหน่งเริ่มต้นหลายครั้งผ่านหนึ่งขั้นตอนและทำหลายรอบ
อินพุต
- รายการเลขจำนวนเต็มบวกหนึ่งหลัก (
1..9
) ที่แตกต่างกันอย่างน้อยหนึ่งองค์ประกอบและจำนวนเต็มบวกเดียวมากกว่าความยาวของรายการความยาวของแทร็ก
เอาท์พุต
- รายการตัวเลขตามลำดับพวกเขาเสร็จสิ้นในรูปแบบที่ชัดเจนใด ๆ
ตัวอย่าง
ภาพตัวอย่างทีละขั้นตอนสำหรับภาพ 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
ตัวอย่างในรูปแบบ 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]
นี่คือรหัสกอล์ฟเพื่อให้รายการที่สั้นที่สุดชนะ