Contexte
Le Random Domino Automaton est un modèle de jouet pour les tremblements de terre, inspiré des automates cellulaires. Dans ce défi, votre tâche consiste à simuler une version simplifiée de ce modèle et à en collecter des données.
L'automate est défini sur un tableau Ade kbits, représentant une ligne de faille sur laquelle des tremblements de terre peuvent se produire. Le tableau s'enroule autour de ses frontières. La condition A[i] = 0signifie que la position iest détendue et A[i] = 1signifie qu'elle est excitée ou contient de l'énergie stockée. À chaque pas de temps, une position de la matrice est choisie uniformément au hasard. Si cette position est détendue, elle devient excitée (une énergie potentielle est ajoutée au système). Si cette position est déjà excitée, elle déclenche un tremblement de terre, et la position choisie et toutes les positions excitées qui y sont reliées sont à nouveau détendues. Le nombre de positions excitées qui se relâchent est la magnitude du tremblement de terre.
Exemple
Considérez le tableau
100101110111
de longueur 12. Si le processus aléatoire choisit le deuxième bit de gauche, le tableau est mis à jour pour
110101110111
^
puisque le bit choisi (marqué avec ^) était 0. Si nous choisissons ensuite le quatrième bit de gauche, qui est un bit isolé 1, un tremblement de terre de magnitude 1 est déclenché et le bit est remis à 0nouveau:
110001110111
^
Ensuite, nous pourrions choisir le deuxième bit de droite, ce qui déclenche un tremblement de terre de magnitude 5:
000001110000
^
Notez que tous les 1s dans le même "cluster" que celui choisi faisaient partie du tremblement de terre, et le tableau s'enroule à la frontière.
La tâche
Vous devez prendre en entrée deux entiers positifs ket t, et votre tâche consiste à simuler l'automate domino aléatoire pour les tpas de temps, à partir d'un ktableau de longueur initial de tous les 0s. Votre sortie doit être une liste Ld' kentiers, où L[i](avec une indexation basée sur 1) contient le nombre de tremblements de terre de magnitude iqui se sont produits pendant la simulation. Vous êtes autorisé à supprimer les zéros de fin de la sortie.
Pour les entrées k = 15et t = 1000, certaines sorties représentatives sont
[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]
Règles
Les programmes complets et les fonctions sont autorisés. Le nombre d'octets le plus court l'emporte et les failles standard sont interdites.
Notez que vous n'êtes pas obligé de simuler l'automate à l'aide d'une implémentation particulière, seule la sortie compte.