Este desafío se basa en el juego Layerz.
Dado, en stdin o como argumento de función, una matriz rectangular 2D de celdas donde cada celda contiene un espacio en blanco (puede optar por usar 0s en lugar de espacios en blanco sin penalización), un 1, un 2, un 3 o un 4 ; encuentre una manera de dividirlo en regiones válidas (como se define a continuación) de modo que cada celda no vacía esté contenida exactamente por una región. Luego, envíe la solución encontrada en cualquier formato razonable. Si no hay solución, deténgase sin producir salida o dé un solo valor de falsey y luego deténgase.
Cualquiera de los siguientes constituye una región válida:
- Una sola celda que contiene un 1
- Una celda que contiene un 2 y exactamente uno de sus vecinos ortogonales no en blanco
- Una celda que contiene un 3 y exactamente dos de sus vecinos ortogonales no en blanco
- Una celda que contiene un 4 y exactamente tres de sus vecinos ortogonales no en blanco
Este es el código de golf , por lo que la respuesta válida más corta, en bytes, gana.
Algunos casos de prueba:
1. Una bastante trivial:
Y esta es la solución, con cada región en un color diferente:
2. Una más interesante
Esta tiene más de una solución, pero esta es una de ellas:
3. Una más pequeña, que contenga espacios en blanco, que no tenga ninguna solución (dependiendo de si usas una de las dos para "capturar" las tres, o las tres para tomar dos de las dos, te queda un par de dos no adyacentes [y por lo tanto no agrupables] o un solo dos por sí solo):
Debido a que esta grilla no tiene soluciones, su programa debería detenerse sin producir ningún resultado cuando se le da esta grilla.
4. Sin embargo, esta (con los 2 primeros desplazados una celda a la izquierda) tiene una solución:
Solución:
(La parte inferior derecha 2 se usa para "capturar" la 3)
5. Porque necesitábamos un caso de prueba con cuatro patas:
Una solución:
4
s si son entradas válidas.