Фон
Випадковий Domino Automaton іграшки модель для землетрусів, натхненна клітинними автоматами. У цьому виклику ваше завдання - імітувати спрощену версію цієї моделі та збирати з неї дані.
Автомат задається на масив 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]
Правила
Дозволені як повні програми, так і функції. Виграє найкоротший байт, а стандартні лазівки заборонені.
Зауважте, що вам не потрібно моделювати автомат за допомогою будь-якої конкретної реалізації, лише вихід має значення.