Poiché domani è il 4 maggio, ecco un piccolo post a tema Star Wars per prepararti mentalmente a tutte le brutte battute che verranno domani.
backstory
Durante una sessione del senato galattico tutti i senatori sono seduti in una n*n
griglia. Un improvviso focolaio di influenza JarJar (che dura per sempre e fa parlare gli infetti come JarJar Binks) fa sì che alcuni senatori vengano infettati.
Ecco un esempio con una 6*6
griglia in cui X
sono presenti i senatori infetti, l'elenco corrispondente è [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[0,5]]
:
Successivamente, l'infezione inizia a diffondersi passo dopo passo. Due senatori sono adiacenti se condividono un intero bordo sulla griglia (cioè, in alto, in basso, a destra, a sinistra), il che significa che escludiamo le diagonali.
Possiamo concludere che un senatore può essere adiacente ad altri 2,3 o 4 senatori e rivendicare le seguenti regole per l'infezione:
- Un senatore che è stato infettato rimane infetto per sempre
- Un senatore viene infettato in un passaggio se era adiacente a 2 o più senatore infetto nel passaggio precedente
Ecco un esempio con la griglia precedente che mostra i 2 primi passi dell'infezione:
Dopo i prossimi passi tutto il senato sarà infetto
IL TUO COMPITO
Non è necessario che il tuo codice gestisca input non validi come un elenco maggiore n*n
o coordinate che non siano distinte.
Il tuo codice prenderà come input un elenco di coppie di numeri interi (o una griglia binaria o qualsiasi altro formato adatto alla tua lingua) e un numero intero n
(che può essere superfluo se usi un formato diverso da un elenco), ad esempio:
8 [[1,2],[1,1],[7,4],[2,7],[4,3]]
n essendo il lato della griglia, il che significa che la griglia sarà una griglia * n, e l'elenco delle coppie di numeri interi sono le coordinate delle cellule dei senatori con infezione iniziale.
La parte inferiore sinistra della griglia è [0,0] e la parte superiore destra è [n-1, n-1]. L'angolo in alto a sinistra è [0, n-1].
Il tuo codice deve generare un numero intero:
-1
o un valore falso o un errore se l'intera griglia non sarà mai totalmente infetta o il numero minimo di passaggi necessari per infettare l'intera griglia
Casi test
6 [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[5,0]] => 7
4 [[1,1][0,3][1,0][3,0][3,3]] => 9
Ricorda che questo è code-golf , quindi vince la risposta più breve in byte!
n
? C'è un valore massimo?
CellularAutomaton
...