sfondo
Il Random Domino Automaton è un modello giocattolo per i terremoti, ispirato agli automi cellulari. In questa sfida, il tuo compito è simulare una versione semplificata di questo modello e raccoglierne i dati.
L'automa è definito su una matrice A
di k
bit, che rappresenta una linea di faglia su cui possono verificarsi terremoti. L'array si avvolge ai suoi bordi. La condizione A[i] = 0
significa che la posizione i
è rilassata e A[i] = 1
significa che è eccitata o contiene energia immagazzinata. Ad ogni fase, una posizione dell'array viene scelta in modo uniforme a caso. Se quella posizione viene rilassata, diventa eccitata (l'energia potenziale viene aggiunta al sistema). Se quella posizione è già eccitata, si innesca un terremoto e la posizione scelta e tutte le posizioni eccitate ad essa collegate vengono nuovamente rilassate. Il numero di posizioni eccitate che si rilassano è l' entità del terremoto.
Esempio
Considera l'array
100101110111
di lunghezza 12. Se il processo casuale sceglie il secondo bit da sinistra, l'array viene aggiornato
110101110111
^
poiché il bit scelto (contrassegnato con ^
) era 0
. Se scegliamo successivamente il quarto bit da sinistra, che è un isolato 1
, viene attivato un terremoto di magnitudo 1 e il bit viene 0
nuovamente impostato su :
110001110111
^
Successivamente, potremmo scegliere il secondo bit da destra, che innesca un terremoto di magnitudo 5:
000001110000
^
Si noti che tutti gli 1
s nello stesso "cluster" di quello scelto facevano parte del sisma e l'array si avvolge attorno al bordo.
L'obiettivo
Si deve prendere come input due interi positivi k
e t
, e il vostro compito è quello di simulare l'automa domino casuale per t
passi temporali, a partire da un length- primo k
array di tutti 0
s. L'output deve essere un elenco L
di k
numeri interi, dove L[i]
(con indicizzazione basata su 1) contiene il numero di terremoti di magnitudo i
verificatisi durante la simulazione. È consentito eliminare gli zero finali dall'output.
Per gli input k = 15
e t = 1000
, alcuni output rappresentativi sono
[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]
Regole
Sono ammessi programmi e funzioni completi. Vince il conteggio dei byte più breve e non sono consentite scappatoie standard.
Si noti che non è necessario simulare l'automa utilizzando un'implementazione particolare, solo l'output è importante.