En algunos periódicos británicos hay un juego conocido como Hidato . Es algo similar al Sudoku , aunque en lugar de tener 1-9 en una línea y bloque, se trata de colocar números de modo que se conecten en orden desde 01
el más alto hasta el más alto, por lo que todos se tocan horizontal, diagonal o verticalmente .
Las entradas contendrán varias líneas separadas \n
, que contienen bloques separados por un espacio, que puede suponer que tienen dos caracteres de ancho. Cada bloque será un número, un espacio en blanco para ser llenado (indicado por --
) o una pared que no puede tener números en ( XX
).
Su salida debe coincidir con la proporcionada, aunque con bloques vacíos provistos de números. Tenga en cuenta que puede que no haya una solución única, o incluso la existencia de una solución : algunas pueden generar múltiples debido a su ambigüedad, al igual que Sudoku, y algunas pueden ser literalmente irresolubles, en cuyo caso debe dar una salida falsey , pero usted puede asumir que las entradas tienen el formato siguiente.
Use un encabezado estándar Language: XX bytes
. ¡Feliz golf!
Ejemplos
Insumos 01 XX 03
, 01 -- 04
, 01 --
, etc todos debemos devolver algo Falsey- .
Entrada:
01 -- --
-- XX 05
Salida:
01 03 04
02 XX 05
Entrada:
-- 33 35 -- -- XX XX XX
-- -- 24 22 -- XX XX XX
-- -- -- 21 -- -- XX XX
-- 26 -- 13 40 11 XX XX
27 -- -- -- 09 -- 01 XX
XX XX -- -- 18 -- -- XX
XX XX XX XX -- 07 -- --
XX XX XX XX XX XX 05 --
Salida:
32 33 35 36 37 XX XX XX
31 34 24 22 38 XX XX XX
30 25 23 21 12 39 XX XX
29 26 20 13 40 11 XX XX
27 28 14 19 09 10 01 XX
XX XX 15 16 18 08 02 XX
XX XX XX XX 17 07 06 03
XX XX XX XX XX XX 05 04
Entrada:
XX XX XX XX -- 53 XX XX XX XX
XX XX XX XX -- -- XX XX XX XX
XX XX 56 -- -- -- 30 -- XX XX
XX XX -- -- -- -- -- -- XX XX
XX -- -- 20 22 -- -- -- -- XX
XX 13 -- 23 47 -- 41 -- 34 XX
-- -- 11 18 -- -- -- 42 35 37
-- -- -- -- 05 03 01 -- -- --
XX XX XX XX -- -- XX XX XX XX
XX XX XX XX 07 -- XX XX XX XX
Salida:
XX XX XX XX 52 53 XX XX XX XX
XX XX XX XX 54 51 XX XX XX XX
XX XX 56 55 28 50 30 31 XX XX
XX XX 26 27 21 29 49 32 XX XX
XX 25 24 20 22 48 45 44 33 XX
XX 13 19 23 47 46 41 43 34 XX
14 12 11 18 04 02 40 42 35 37
15 16 17 10 05 03 01 39 38 36
XX XX XX XX 09 06 XX XX XX XX
XX XX XX XX 07 08 XX XX XX XX
fuente
-1
ser un muro y0
un espacio en blanco? Eso facilitaría concentrarse en el verdadero desafío del rompecabezas, y luego no hay complejidad de rellenar números con ceros o cadenas de análisis.Respuestas:
JavaScript (Node.js) , 482 bytes
Esta es una solución de fuerza bruta, comienza en
01
y comprueba cada celda vecina buscando celdas vacías (--
) o el número deseado y siguiendo el camino hacia la finalización o imposibilidad. Si el número deseado existe y no es vecino, abrevia esta solución. Toma unos segundos para la cuadrícula más grande.Esto probablemente no sea particularmente interesante, ¡pero pensé que intentaría hacer una solución antes de mirar las respuestas vinculadas en el Código de Rosetta y disfruté abordar un desafío un poco más difícil!
Encuentra todas las soluciones cuando existen muchas . El cuerpo es una función que acepta una matriz bidimensional y el pie de página procesa la entrada al formato deseado, y también devuelve el resultado al formato deseado. Feliz de proporcionar más información (y una implementación menos golfizada si hay interés).
Pruébalo en línea!
fuente