バックグラウンド
の ランダムドミノオートマトンは、セルオートマトンに触発された地震のためのおもちゃのモデル、です。この課題におけるタスクは、このモデルの単純化されたバージョンをシミュレートし、そこからデータを収集することです。
オートマトンはビット配列A
で定義され、k
地震が発生する可能性のある断層線を表します。配列は境界で折り返されます。状態とA[i] = 0
は、位置i
がリラックスしていること、および興奮しA[i] = 1
ていること、またはエネルギーが蓄積されていることを意味します。各タイムステップで、配列の1つの位置がランダムに均一に選択されます。その位置が緩和されると、興奮します(潜在的なエネルギーがシステムに追加されます)。その位置がすでに興奮している場合、それは地震を引き起こし、選択された位置とそれに接続されているすべての興奮した位置は再びリラックスします。リラックスする興奮した位置の数は、地震の大きさです。
例
配列を考える
100101110111
ランダムプロセスが左から2番目のビットを選択した場合、配列は次のように更新されます。
110101110111
^
(でマークされた選択ビットは、以降^
)でした0
。次に、左から4番目のビット(分離1
)を選択すると、マグニチュード1の地震がトリガーされ、ビットが0
再び設定されます。
110001110111
^
次に、右から2番目のビットを選択すると、マグニチュード5の地震がトリガーされます。
000001110000
^
1
選択されたものと同じ「クラスター」内のすべてのsは地震の一部であり、配列は境界で折り返されていることに注意してください。
タスク
入力として2つの正の整数k
とを取りt
、タスクはすべてのsのt
初期の長さのk
配列から開始して、タイムステップのランダムドミノオートマトンをシミュレートすることです0
。出力は整数のリストL
でk
あり、L[i]
(1から始まるインデックス付けで)マグニチュードの地震の数が含まれますi
シミュレーション中に発生したます。出力から末尾のゼロを削除できます。
入力k = 15
およびについてt = 1000
、いくつかの代表的な出力は
[117, 97, 45, 26, 10, 5, 3, 1, 3, 0, 0, 0, 0, 0, 0]
[135, 91, 58, 21, 8, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0]
[142, 63, 51, 31, 17, 4, 2, 1, 1, 0, 0, 0, 0, 0, 0]
[106, 75, 45, 30, 16, 8, 5, 2, 2, 0, 0, 0, 0, 0, 0]
[111, 96, 61, 22, 3, 8, 3, 2, 0, 0, 0, 1, 0, 0, 0]
ルール
完全なプログラムと機能の両方が許可されます。最短のバイトカウントが優先され、標準の抜け穴は許可されません。
特定の実装を使用してオートマトンをシミュレートする必要はなく、出力のみが重要であることに注意してください。