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
tal que
),
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.
La funció té una matriu 9 × 9 amb digits diferents de zero (nombres tal que ) com a paràmetre.
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.
>>> >>> 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 >>>