前書き
この課題では、タスクは特定の種類の消去ゲームをシミュレートすることです。ゲームでは、参加者は輪になっており、全員が整数を保持しています。ゲームの各ラウンドで、すべての参加者は、保持している数nである場合nは、その人が離れる方向を指しています。n正の場合は右nに数え、負の場合は左に数え、nゼロの場合は自分自身を指します。誰かが彼らを指しているすべての参加者は排除され、円を離れます。これでラウンドが終了します。ラウンドは、参加者がなくなるまで続けられます。
入力
入力は、適切な形式の整数の空でないリストです。ゲームの参加者が保持している数字を表します。
出力
出力は、ゲームが終了するまでにかかるラウンドの数です。
例
入力リストを検討してください[3,1,-2,0,8]。最初のラウンドでは、次のことが起こります。
- 保持者は保持
3者を指さし0ます。 - 保持者は保持
1者を指さし-2ます。 - 持っている人
-2のポイントは、人物保持のまま3。 0自分自身でポイントを保持している人。- 保持
8している人は、保持している人のすぐ-2近くにポイントを置きます(リストは円を表しているため、端で折り返します)。
これは0、-2と3が削除されることを意味するため、listで2回目のラウンドが実行されます[1,8]。ここでは、を1指して8おり、8自分自身を指してい8ます。3番目のラウンドはlistを使用して行われ[1]、1単純に自分自身を指して排除されます。すべての参加者を排除するのに3ラウンドかかったため、正しい出力は3です。
ルールとスコアリング
完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。
テストケース
[3] -> 1
[0,0,0] -> 1
[-2,-1,0,1,2,3,4,5,6,7] -> 2
[5,5,5,6,6,6] -> 2
[3,-7,-13,18,-10,8] -> 2
[-7,5,1,-5,-13,-10,9] -> 2
[4,20,19,16,8,-9,-14,-2,17,7,2,-2,10,0,18,-5,-5,20] -> 3
[11,2,7,-6,-15,-8,15,-12,-2,-8,-17,6,-6,-5,0,-20,-2,11,1] -> 4
[2,-12,-11,7,-16,9,15,-10,7,3,-17,18,6,6,13,0,18,10,-7,-1] -> 3
[18,-18,-16,-2,-19,1,-9,-18,2,1,6,-15,12,3,-10,8,-3,7,-4,-11,5,-15,17,17,-20,11,-13,9,15] -> 6
n人が保持している番号ですか?