Bonjour a tous !
Je viens vers vous pour chercher de l'aide, Je dois compléter dans un programme une fonction qui me permettrait de trouver les voisin de certaines coordonnées dans un tableau avec un patron donné. Par exemple les voisins de [2,4] seraient [(1,3)(1,4)(1,5)(2,3)(2,5)(3,3)(3,4)(3,5)]. Jusque la, tout est simple, le problème arrive pour les coordonnées comme [0,0].
Voila la Signature que mon professeur m'as donné :
"Fonction qui retourne la liste des voisins de l'élément à la position (posLig,posCol) selon un certain patron
Avec le patron par défaut, on retrouve les 3, 5 ou 8 voisins
voisins(10,10,4,3) retourne [(3, 2), (3, 3), (3, 4), (4, 2), (4, 4), (5, 2), (5, 3), (5, 4)]
voisins(10,10,0,0) retourne [(0, 1), (1, 0), (1, 1)]
voisins(10,10,9,6) retourne [(8, 5), (8, 6), (8, 7), (9, 5), (9, 7)]
voisins(10,10,9,6,[[0,0,1],[0,0,1],[1,1,1]]) retourne [(8, 7), (9, 7)]
voisins(10,10,4,3,[[0,0,1],[0,0,1],[1,1,1]]) retourne [(3, 4), (4, 4), (5, 2), (5, 3), (5, 4)]
Entrèe : nbLig : int, nbCol : int, posLig : int, posCol : int, patron : list (liste de listes)
Sortie : list (une liste de tuples)"
Et voila le code que j'ai fait (Une méthode très barbare, je n'ai pas trouvé mieux) :
Merci d'avance pour votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 def voisins(nbLig,nbCol,posLig,posCol,patron=[[1,1,1],[1,0,1],[1,1,1]]): listeVoisin=[] tabForet=[[0 for i in range(nbCol)] for j in range(nbLig)] if tabForet[posLig][posCol+1]==0 : listeVoisin.append((posLig,posCol+1)) if tabForet[posLig][posCol-1]==0 : listeVoisin.append((posLig,posCol-1)) if tabForet[posLig+1][posCol]==0 : listeVoisin.append((posLig+1,posCol)) if tabForet[posLig-1][posCol]==0 : listeVoisin.append((posLig-1,posCol)) if tabForet[posLig+1][posCol+1]==0 : listeVoisin.append((posLig+1,posCol+1)) if tabForet[posLig-1][posCol+1]==0 : listeVoisin.append((posLig-1,posCol+1)) if tabForet[posLig+1][posCol-1]==0 : listeVoisin.append((posLig+1,posCol-1)) if tabForet[posLig-1][posCol-1]==0 : listeVoisin.append((posLig-1,posCol-1)) return listeVoisin,tabForet
Partager