Dado un rompecabezas de Sudoku, encuentra todas las marcas posibles que se pueden llenar en cada celda vacía.
Caso de prueba
Entrada:
[
[
// Top left:
[
0, 0, 0,
3, 4, 0,
0, 0, 2
],
// Top middle:
[
7, 4, 0,
0, 0, 0,
0, 0, 3
],
// Top right:
[
8, 0, 0,
1, 7, 0,
0, 0, 0
]
],
[
// Middle left:
[
9, 0, 4,
7, 0, 0,
1, 0, 3
],
// Center:
[
0, 5, 0,
0, 0, 0,
0, 7, 0
],
// Middle right:
[
0, 0, 0,
6, 4, 0,
0, 0, 0
]
],
[
// Bottom left:
[
0, 0, 7,
6, 3, 0,
0, 0, 0
],
// Bottom middle:
[
0, 0, 5,
0, 0, 0,
9, 1, 0
],
// Bottom right:
[
0, 0, 0,
5, 2, 0,
7, 0, 0
]
]
]
Salida:
[
[
// Top left:
[
[5], [1, 5, 6, 9], [1, 5, 6, 9],
[], [], [5, 6, 8, 9],
[5, 8], [1, 5, 6, 7, 8, 9], []
],
// Top middle:
[
[], [], [1, 2, 6, 9],
[2, 5, 6, 8], [2, 6, 8, 9], [2, 6, 8, 9],
[1, 5, 6, 8], [6, 8, 9], []
],
// Top right:
[
[], [3, 5, 6, 9], [2, 3, 5, 6, 9],
[], [], [2, 5, 6, 9],
[4, 9], [5, 6, 9], [4, 5, 6, 9]
]
],
[
// Middle left:
[
[], [2, 6, 8], [],
[], [2, 5, 8], [5, 8],
[], [2, 5, 6, 8], []
],
// Center:
[
[1, 2, 3, 6, 8], [], [1, 2, 6, 8],
[1, 2, 3, 8], [2, 3, 8, 9], [1, 2, 8, 9],
[2, 4, 6, 8], [], [2, 4, 6, 8, 9]
],
// Middle right:
[
[2, 3], [1, 3, 8], [1, 2, 3, 7, 8],
[], [], [1, 2, 3, 5, 8, 9],
[2, 9], [5, 8, 9], [2, 5, 8, 9]
]
],
[
// Bottom left:
[
[2, 4, 8], [1, 2, 8, 9], [],
[], [], [1, 8, 9],
[2, 4, 5, 8], [2, 5, 8], [5, 8]
],
// Bottom middle:
[
[2, 3, 4, 6, 8], [2, 3, 6, 8], [],
[4, 8], [8], [4, 7, 8],
[], [], [2, 4, 6, 8]
],
// Bottom right:
[
[3, 4, 9], [1, 3, 6, 8, 9], [1, 3, 4, 6, 8, 9],
[], [], [1, 4, 8, 9],
[], [3, 6, 8], [3, 4, 6, 8]
]
]
]
Visualización de salida; los pequeños números:
Reglas
- Este es un código de golf . La respuesta más corta en bytes (o equivalente) gana.
- La entrada puede estar en formato de matriz o cadena.
- La entrada debe estar en el orden presentado arriba (arriba a la izquierda, arriba a la mitad, arriba a la derecha, etc.)
- La salida puede estar en formato de matriz o cadena, siempre que la salida pueda representar lógicamente el resultado esperado.
- La salida debe estar en el mismo orden que la entrada (arriba a la izquierda, arriba a la mitad, arriba a la derecha, etc.)
- La salida no necesita ser prettified.
- El código debe ser aplicable a cualquier cuadrícula Sudoku incompleta válida.
- Se aplican las reglas estándar de golf.
Notas adicionales:
Obtiene puntos de Internet falsos adicionales si su programa o función utiliza el resultado para resolver el rompecabezas de Sudoku hasta el punto en que los valores de las celdas ya no se puedan resolver lógicamente. Por ejemplo, la primera celda en el caso de prueba solo puede contener el número 5, por lo que debe tenerse en cuenta al completar los otros valores. Esto es solo por diversión y un desafío adicional, de lo contrario, la respuesta más corta gana independientemente de si se cumple o no este criterio.
code-golf
puzzle-solver
sudoku
driima
fuente
fuente
["000340002", "740000003", ...]
)Respuestas:
C (gcc), 193 bytes
Asume la entrada en el siguiente formato (el mismo sudoku que el anterior):
Y salidas en el siguiente formato:
fuente
Python 2, 178 bytes
Una función anónima que toma una matriz tridimensional de entradas y devuelve una matriz tridimensional de entradas.
fuente
JavaScript (ES6),
208196190188186 bytesEntrada :
una matriz de 9 cadenas (una por caja, de arriba a la izquierda a abajo a la derecha).
Salida :
una matriz de 9 matrices, donde cada elemento consta del número original en esta posición o una matriz de caracteres que representan los posibles dígitos.
Formateado y comentado
Manifestación
fuente
Haskell, 135 bytes
Define una función
f
de listas de 81Int
s a listas de listas deInt
s;IO es como la respuesta de orlp , excepto que usa en
[0,1,2,3,4,5,6,7,8,9]
lugar de".123456789"
.dianne guardó un par de bytes.
fuente
JavaScript (ES6), 185 bytes
Toma como entrada una matriz de tres filas de una matriz de tres columnas de una matriz de tres por tres de celdas de enteros, y devuelve una matriz de cinco dimensiones donde todos los enteros han sido reemplazados por matrices.
fuente