Dado um quebra-cabeça Sudoku, encontre todas as marcas possíveis que podem ser preenchidas em cada célula vazia.
Caso de teste
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
]
]
]
Resultado:
[
[
// 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]
]
]
]
Visualização de saída; os pequenos números:
Regras
- Este é um código de golfe . A resposta mais curta em bytes (ou equivalente) vence.
- A entrada pode estar no formato de matriz ou sequência.
- A entrada deve estar na ordem apresentada acima (superior esquerdo, superior médio, superior direito, etc ...)
- A saída pode estar no formato de matriz ou sequência, desde que a saída possa representar logicamente o resultado esperado.
- A saída deve estar na mesma ordem que a entrada (superior esquerda, superior central, superior direita, etc ...)
- A saída não precisa ser prettificada.
- O código deve ser aplicável a qualquer grade Sudoku incompleta válida.
- Aplicam-se regras de golfe padrão.
Notas Adicionais:
Você ganha pontos de internet falsos adicionais se o seu programa ou função usar o resultado para resolver o quebra-cabeça do Sudoku até o ponto em que os valores das células não possam mais ser resolvidos logicamente. Por exemplo, a primeira célula do caso de teste só pode conter o número 5, portanto deve ser considerada ao preencher os outros valores. Isso é apenas para diversão e desafio adicional; caso contrário, a resposta mais curta vence, independentemente de esse critério ser ou não atendido.
code-golf
puzzle-solver
sudoku
driima
fonte
fonte
["000340002", "740000003", ...]
)Respostas:
C (gcc), 193 bytes
Assume a entrada no seguinte formato (o mesmo sudoku que acima):
E saídas no seguinte formato:
fonte
Python 2, 178 bytes
Uma função anônima que pega uma matriz tridimensional de entradas e retorna uma matriz tridimensional de entradas.
fonte
JavaScript (ES6),
208196190188186 bytesEntrada :
uma matriz de 9 strings (uma por caixa, do canto superior esquerdo para o canto inferior direito).
Saída :
Uma matriz de 9 matrizes, em que cada item consiste no número original nessa posição ou em uma matriz de caracteres representando os possíveis dígitos.
Formatado e comentado
Demo
fonte
Haskell, 135 bytes
Define uma função
f
de listas de 81Int
s para listas de listas deInt
s;IO é como a resposta do orlp , exceto que usa em
[0,1,2,3,4,5,6,7,8,9]
vez de".123456789"
.dianne salvou alguns bytes.
fonte
JavaScript (ES6), 185 bytes
Toma como entrada uma matriz de três linhas de uma matriz de três colunas de uma matriz de três por três de células de números inteiros e retorna uma matriz tridimensional em que todos os números inteiros foram substituídos por matrizes.
fonte