És Sudoku? V95027


Statement
 

pdf   zip

Recordeu que un Sudoku és un joc que consisteix a completar una graella 9 × 9 amb números entre 1 i 9 de manera que el resultat final no tingui números repetits a la mateixa fila, columna o submatriu 3 × 3.

Escriu una funció es_sudoku(m) que, donada una matriu de 9 files i 9 columnes de digits diferents de zero (nombres dd tal que 1d91 \leq d \leq 9), retorni True si la matriu m correspon a un Sudoku resolt, o False en cas contrari.

Teniu exemples en el joc de proves públic.

Entrada

La funció té una matriu 9 × 9 amb digits diferents de zero (nombres dd tal que 1d91 \leq d \leq 9) com a paràmetre.

Observacions

En aquest problema us pot anar molt bé fer servir la construcció set comprehension (o, com ho vam anomenar, conjunts per comprensió).

Un cop definida la funció, en provar-la al REPL de Python us hauria de sortir el mateix que podeu observar més avall.

Sample session
>>> 
>>> m1 = [[1,2,3,4,5,6,7,8,9],
...       [4,5,6,7,8,9,1,2,3],
...       [7,8,9,1,2,3,4,5,6],
...       [2,3,1,6,7,4,8,9,5],
...       [8,7,5,9,1,2,3,6,4],
...       [6,9,4,5,3,8,2,1,7],
...       [3,1,7,2,6,5,9,4,8],
...       [5,4,2,8,9,7,6,3,1],
...       [9,6,8,3,4,1,5,7,2]]
>>> 
>>> es_sudoku(m1)
True
>>> 
>>> 
>>> m2 = [[1,2,3,4,5,6,7,8,9],
...       [4,5,6,7,8,9,1,2,3],
...       [7,8,9,1,2,3,4,5,6],
...       [2,3,1,6,7,4,8,9,5],
...       [8,7,5,9,1,2,3,6,4],
...       [6,9,4,5,3,8,2,1,7],
...       [3,1,7,2,6,5,9,4,8],
...       [5,4,2,8,9,7,6,2,1],
...       [9,6,8,3,4,1,5,7,3]]
>>> 
>>> es_sudoku(m2)
False
>>>
Information
Author
Jordi Delgado (basat en el problema P16893 de Salvador Roura)
Language
Catalan
Official solutions
Python
User solutions
Python