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:

  1. Verificação de linha: verificar se todos os números aparecem na linha uma e apenas uma vez.

  2. Verificação de coluna: verificar se todos os números aparecem na coluna uma e apenas uma vez.

  3. 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?