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 A
de k
bits, 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] = 0
signifie que la position i
est détendue et A[i] = 1
signifie 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 à 0
nouveau:
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 1
s 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 k
et t
, et votre tâche consiste à simuler l'automate domino aléatoire pour les t
pas de temps, à partir d'un k
tableau de longueur initial de tous les 0
s. Votre sortie doit être une liste L
d' k
entiers, où L[i]
(avec une indexation basée sur 1) contient le nombre de tremblements de terre de magnitude i
qui se sont produits pendant la simulation. Vous êtes autorisé à supprimer les zéros de fin de la sortie.
Pour les entrées k = 15
et 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.