個別の1桁の正の整数の開始順序と、トラックの長さを入力出力として指定するか、番号の終了順序を返すプログラムまたは関数を作成する必要があります。
入力[5,1,2,6,7] and 14
は次のレースを定義します。
--------------
76215 ->
--------------
レースのルール
- トラックはラップアラウンドし、桁は複数のラップを移動できます。
- ステップの順序は周期的で、開始位置に基づいています。この例では
5 1 2 6 7 5 1 2 ...
。 - 同じ位置に複数の数字を含めることはできません。
すべての桁には、
digit_value
ステップごとにセルの速度があります。数字または数字の連続ブロックを追い越すには、余分なステップが1つかかります。桁に必要な速度がない場合、桁(のブロック)の前で停止します。例:[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
少なくとも1つの要素と、リストの長さ、つまりトラックの長さよりも大きい単一の正の整数を持つ、明確な1桁の正の整数()のリスト。
出力
- 明確な形式で終了した順序の数字のリスト。
例
入力の視覚的なステップバイステップの例 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]
これはコードゴルフなので、最短のエントリが優先されます。
おそらく、入力配列に重複した要素を含めることはできませんか?それはそのように見えますが、私はその状態が明示的に述べられているのを見ません。
—
アンドリュー
@Andrewはい、重複する数字はありません。質問を編集しました。ありがとう。
—
randomra
テストケース#6(長さ= 17)の場合、結果が少し異なります(最後の2桁が逆になります)。私のミスはどこにあるのだろうと思っていました。私のレースログはこれです。間違いを見つけて間違いを見つけられるように、あなたのものを提供してもらえますか?
—
クリスチャンルパスク