Puisque demain est le 4 mai, voici un petit post sur le thème de Star Wars pour vous préparer mentalement à toutes les mauvaises blagues à venir demain.
PASSÉ
Au cours d'une session du Sénat galactique, tous les sénateurs sont assis sur une n*n
grille. Une soudaine éclosion de grippe JarJar (qui dure éternellement et fait parler les personnes infectées comme JarJar Binks) provoque l'infection de certains sénateurs.
Voici un exemple avec une 6*6
grille où se X
trouvent les sénateurs infectés, la liste correspondante est [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[0,5]]
:
Après cela, l'infection commence à se propager étape par étape. Deux sénateurs sont adjacents s'ils partagent un bord entier sur la grille (c'est-à-dire en haut, en bas, à droite, à gauche), ce qui signifie que nous excluons les diagonales.
Nous pouvons conclure qu'un sénateur peut être adjacent à 2,3 ou 4 autres sénateurs et réclamer les règles suivantes pour l'infection:
- Un sénateur infecté reste infecté pour toujours
- Un sénateur est infecté à une étape s'il était adjacent à 2 sénateurs infectés ou plus à l'étape précédente
Voici un exemple avec la grille précédente qui montre les 2 premières étapes de l'infection:
Après les prochaines étapes, tout le Sénat sera infecté
TA TÂCHE
Votre code n'a pas besoin de gérer des entrées non valides comme une liste supérieure à n*n
ou des coordonnées qui ne sont pas distinctes.
Votre code prendra en entrée une liste de couples d'entiers (ou une grille binaire ou tout autre format adapté à votre langue) et un entier n
(qui peut être inutile si vous utilisez un autre format qu'une liste), par exemple:
8 [[1,2],[1,1],[7,4],[2,7],[4,3]]
n étant le côté de la grille, ce qui signifie que la grille sera une grille * n, et la liste des couples d'entiers étant les coordonnées des cellules des sénateurs initialement infectés.
Le coin inférieur gauche de la grille est [0,0] et le coin supérieur droit est [n-1, n-1]. Le coin supérieur gauche est [0, n-1].
Votre code doit générer un entier:
-1
ou une valeur falsifiée ou une erreur si toute la grille ne sera jamais totalement infectée ou le nombre minimum d'étapes nécessaires pour infecter toute la grille
Cas de 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
N'oubliez pas qu'il s'agit de code-golf , donc la réponse la plus courte en octets gagne!
n
? Y a-t-il une valeur maximale?
CellularAutomaton
...