背景
在随机的Domino自动机是一个地震玩具模型,通过元胞自动机的启发。在此挑战中,您的任务是模拟该模型的简化版本,并从中收集数据。
自动机定义在位阵列上A
,k
位阵列表示可能发生地震的断层线。数组在其边界处环绕。条件A[i] = 0
意味着位置i
被放松,并且A[i] = 1
手段,它的兴奋,或包含存储的能量。在每个时间步长,均一地随机选择阵列的一个位置。如果该位置放松,它将变得兴奋(将势能添加到系统中)。如果该位置已被激发,则将引发地震,并且所选位置和与其连接的所有激发位置将再次放松。放松的激发位置数就是地震的幅度。
例
考虑数组
100101110111
长度为12。如果随机过程从左侧选择第二个位,则数组将更新为
110101110111
^
由于所选位(标有^
)为0
。如果我们接下来从左边选择第四位,它是一个隔离的1
,则触发震级为1的地震,并且该位0
再次设置为:
110001110111
^
接下来,我们可以从右边选择第二个位,这将触发5级地震:
000001110000
^
请注意,1
与所选择的“群集”相同的所有“ s”都是地震的一部分,并且数组在边界处环绕。
任务
您应将两个正整数k
和用作输入t
,您的任务是模拟随机的多米诺自动机的t
时间步长,从k
所有0
s 的初始长度数组开始。您的输出应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]
规则
完整的程序和功能都被允许。最短的字节数获胜,并且不允许出现标准漏洞。
请注意,您不需要使用任何特定的实现来模拟自动机,只需要输出即可。