Фон
Случайный Domino Automaton игрушки модель для землетрясений, вдохновленная клеточными автоматами. В этой задаче ваша задача - смоделировать упрощенную версию этой модели и собрать из нее данные.
Автомат задается на массив A
из k
битов, представляющих собой линии разлома , на котором может произойти землетрясения. Массив оборачивается на своих границах. В состоянии A[i] = 0
означает , что позиция i
является расслаблена , и A[i] = 1
означает , что она возбуждается , или содержат запас энергии. На каждом временном шаге одна позиция массива выбирается случайным образом равномерно. Если это положение расслаблено, оно становится возбужденным (потенциальная энергия добавляется в систему). Если эта позиция уже взволнована, она вызывает землетрясение, и выбранная позиция и все связанные с ней возбужденные позиции снова ослабляются. Количество возбужденных позиций, которые становятся расслабленными, является величиной землетрясения.
пример
Рассмотрим массив
100101110111
длины 12. Если случайный процесс выбирает второй бит слева, массив обновляется до
110101110111
^
так как выбранный бит (отмечен ^
) был 0
. Если мы затем выберем четвертый бит слева, который является изолированным 1
, землетрясение магнитудой 1 сработает, и бит будет установлен 0
снова:
110001110111
^
Затем мы можем выбрать второй бит справа, который вызовет землетрясение магнитудой 5:
000001110000
^
Обратите внимание, что все находящиеся 1
в том же «кластере», что и выбранный, были частью землетрясения, и массив обвивается вокруг границы.
Задание
Вы должны взять в качестве входных данных два натуральных числа 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]
правила
Разрешены как полные программы, так и функции. Самый короткий счет байтов побеждает, и стандартные лазейки запрещены.
Обратите внимание, что вам не требуется моделировать автомат с использованием какой-либо конкретной реализации, важен только вывод.