1383 - Sudoku
Vamos ver que não é tão fácil assim fazer as regrinhas do jogo...
Descrição
Solução
Eu decidi separar o conjunto de regras em três funções diferentes:
Verificação de linha: verificar se todos os números aparecem na linha uma e apenas uma vez.
Verificação de coluna: verificar se todos os números aparecem na coluna uma e apenas uma vez.
Verificação de quadrado: verificar se todos os números aparecem no quadrado uma e apenas uma vez.
Daí executar o programa para cada uma das 9 linhas, 9 colunas e 9 quadrados.
Nas linguagens de programação onde era permitido, utilizei conjuntos para adicionar todos os números de uma determinada linha, coluna ou quadrado e depois verificar se tal conjunto tinha tamanho exatamente 9. Para linguagens onde tal estrutura não é trivial, utilizei um vetor para marcar cada número e se fosse marcar um número já marcado, apontar a irregularidade.
Para definir onde começa cada quadrado, onde x é o identificador do quadrado, fiz 3*(x/3) para definir a linha e 3*(x%3) para definir a coluna da coordenada de cada quadrado. Dessa maneira, temos as seguintes coordenadas para os 9 quadrados:
Quadrado
Coordenada
0
(0, 0)
1
(0, 3)
2
(0, 6)
3
(3, 0)
4
(3, 3)
5
(3, 6)
6
(6, 0)
7
(6, 3)
8
(6, 6)
Last updated
Was this helpful?