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 leSudokuCarrequi 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.
INGInious