Gli automi cellulari simili alla vita sono automi cellulari simili al Gioco della vita di Conway, in quanto operano su una griglia quadrata (teoricamente) infinitamente grande, in cui ogni cellula ha esattamente 8 vicini ed è uno dei 2 stati, ovvero vivo e morto .
Tuttavia, queste versioni simil-simili sono diverse in modo cruciale: le regole per una determinata cellula prendono vita e le regole per una determinata cellula sopravvivono alla generazione successiva.
Ad esempio, il classico Game of Life usa la regola B3/S23
, il che significa che ci vogliono 3 cellule vive per farne nascere una nuova e 2 o 3 vicini viventi per sopravvivere. Per questa sfida, supponiamo che i vicini non si includano, quindi ogni cella ha esattamente 8 vicini.
Il tuo compito è, data una configurazione iniziale, una regola di nascita, una regola di sopravvivenza e un numero intero positivo (il numero di generazioni da eseguire), simulare l'automa Life-like usando quelle regole per il numero di generazioni indicato nel codice più breve possibile . La configurazione iniziale sarà una matrice quadrata / matrice bidimensionale o una stringa multilinea, è possibile scegliere. Gli altri possono essere forniti in qualsiasi formato e metodo ragionevoli.
Ad esempio, se la regola della nascita era 12345678
(qualsiasi vicino vivente), la regola della sopravvivenza era 2357
e la configurazione iniziale era
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
le prossime due generazioni sarebbero
Generation 1: Generation 2:
0 0 0 0 0 1 1 1 1 1
0 1 1 1 0 1 1 0 1 1
0 1 0 1 0 1 0 1 0 1
0 1 1 1 0 1 1 0 1 1
0 0 0 0 0 1 1 1 1 1
Se il numero di generazioni fornite fosse 10, l'output sarebbe qualcosa sulla falsariga di
0 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 1 1 1 0
Non è necessario gestire i cambiamenti che avvengono al di fuori dei limiti forniti dalla matrice di input, tuttavia, tutte le celle esterne alla matrice iniziano a essere morte. Pertanto, la matrice di input può essere di qualsiasi dimensione, fino al valore massimo che la tua lingua può supportare. Non è necessario produrre la scheda tra generazioni.
Questo è un codice-golf, quindi vince il codice più corto.
Casi test
Questi usano la B/S
notazione per indicare le regole utilizzate
B2/S2
, generations = 100
, Configurazione:
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
Produzione:
0 0 0 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
B1357/S2468
, generations = 12
, Configurazione:
1 0 1 0 1 0
0 1 1 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
1 1 1 1 1 0
0 1 1 0 0 1
Produzione:
0 1 0 0 0 0
0 1 1 1 1 0
0 1 0 1 1 0
1 1 1 0 0 0
0 0 1 1 1 0
0 1 1 0 0 0
Se hai bisogno di generare più casi di test, puoi usare questo fantastico simulatore. Assicurati di limitare le dimensioni della scheda