Pour rappel: le contexte est disponible dans la question 5 introduction.
En utilisant les méthodes get_carre
et get_val
des classes SudokuPuzzle
et SudokuCarre
, respectivement, ajoutez les méthodes suivantes à la classe SudokuPuzzle
:
- Une méthode
get_carre_valeurs(self, x, y)
, où 0 ≤x
< N et 0 ≤y
< N qui retourne une liste de toutes les valeurs apparaissant dans leSudokuCarre
qui se trouve à la position (x
,y
) du puzzle Sudoku. Si une valeur apparaît plusieurs fois dans ce carré, elle se retrouvera plusieurs fois dans la liste retournée. - Une méthode
get_ligne(self, ligne)
, où 0 ≤ligne
< N * N, qui retourne une liste de toutes les valeurs apparaissant à une certaine ligne du puzzle Sudoku. Si une valeur apparaît plusieurs fois sur une ligne, elle se retrouvera plusieurs fois dans la liste retournée. - Une méthode
get_colonne(self, colonne)
, où 0 ≤colonne
< N * N qui retourne une liste de toutes les valeurs apparaissant à une certaine colonne du puzzle Sudoku. Si une valeur apparaît plusieurs fois sur un colonne, elle se retrouvera plusieurs fois dans la liste retournée.
Quelques exemples. Pour le SudokuPuzzle p de dimension 2 de l’exemple du contexte de cette question 5, on a :
p.get_carre_valeurs(0, 1) # retourne la liste des valeurs du carré à la position (0, 1) # par exemple: [4, 1, 2, 3] p.get_ligne(3) # retourne la liste avec les valeurs de la ligne 3 du Sudoku # par exemple: [2, 3, 1, 4] p.get_colonne(2) # rerourne la liste avec les valeurs de la colonne 2 # par exemple: [3, 4, 2, 1] # pour illustrer plus visuellement : # 1 4 | 3 2 # 3 2 | 4 1 # ---------- # 4 1 | 2 3 # 2 3 | 1 4 <- dernière ligne : [2,3,1,4] # ^ # ^ | # | | avant dernière colonne : [3,4,2,1] # | # carré à la position (0,1) : [4,1,2,3]
Les méthodes demandées sont les suivantes:
def get_carre_valeurs(self, x, y): """ @pre: 0 ≤ x < N 0 ≤ y < N @post: retourne une liste de toutes les valeurs apparaissant dans le SudokuCarre qui se trouve à la position (x, y) du puzzle Sudoku Si une valeur apparaît plusieurs fois dans ce carré, elle se retrouvera plusieurs fois dans la liste retournée. """ # à compléter def get_ligne(self, ligne): """ @pre: 0 ≤ ligne < N x N @post: retourne une liste de toutes les valeurs apparaissant à une certaine ligne du puzzle Sudoku Si une valeur apparaît plusieurs fois sur une ligne elle se retrouvera plusieurs fois dans la liste retournée """ # à compléter def get_colonne(self, colonne): """ @pre: 0 ≤ colonne < N x N @post: retourne une liste de toutes les valeurs apparaissant à une certaine colonne du puzzle Sudoku Si une valeur apparaît plusieurs fois sur une colonne elle se retrouvera plusieurs fois dans la liste retournée """ # à compléter
Si nécessaire vous pouvez aussi définir des fonctions auxiliaires.