Como mañana es el 4 de mayo, aquí hay una pequeña publicación temática de Star Wars para prepararte mentalmente para todos los chistes malos que vendrán mañana.
TRASFONDO
Durante una sesión del senado galáctico, todos los senadores están sentados en una n*n
cuadrícula. Un brote repentino de gripe JarJar (que dura para siempre y hace que los infectados hablen como JarJar Binks) hace que algunos de los senadores se infecten.
Aquí hay un ejemplo con una 6*6
cuadrícula donde X
están los senadores infectados, la lista correspondiente es [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[0,5]]
:
Después de eso, la infección comienza a extenderse paso a paso. Dos senadores son adyacentes si comparten un borde completo en la cuadrícula (es decir, arriba, abajo, derecha, izquierda), lo que significa que excluimos las diagonales.
Podemos concluir que un senador puede ser adyacente a 2,3 o 4 otros senadores y reclamar las siguientes reglas para la infección:
- Un senador que ha sido infectado permanece infectado para siempre.
- Un senador se infecta en un paso si estaba adyacente a 2 o más senadores infectados en el paso anterior
Aquí hay un ejemplo con la cuadrícula anterior que muestra los 2 primeros pasos de la infección:
Después de los siguientes pasos, todo el Senado se infectará.
TU TAREA
Su código no necesita manejar entradas inválidas como una lista mayor n*n
o coordenadas que no son distintivas.
Su código tomará como entrada una lista de pares de enteros (o una cuadrícula binaria o cualquier otro formato que se adapte a su idioma) y un entero n
(que puede ser innecesario si usa otro formato que no sea una lista), por ejemplo:
8 [[1,2],[1,1],[7,4],[2,7],[4,3]]
n es el lado de la cuadrícula, lo que significa que la cuadrícula será una * n cuadrícula, y la lista de pares de enteros son las coordenadas de las celdas de los senadores infectados inicialmente.
La parte inferior izquierda de la cuadrícula es [0,0] y la parte superior derecha es [n-1, n-1]. La esquina superior izquierda es [0, n-1].
Su código debe generar un número entero:
-1
o un valor falso o un error si la cuadrícula completa nunca se infectará totalmente o el número mínimo de pasos necesarios para infectar toda la cuadrícula
Casos de prueba
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
Recuerde que esto es código golf , por lo tanto, ¡la respuesta más corta en bytes gana!
n
? ¿Hay un valor máximo?
CellularAutomaton
...