def afficher(tab):
for ligne in tab:
for element in ligne:
print(element, end='\t')
print()
A = [['🕱','♡', '♡'],
['♡','🕱', '🕱'],
['♡','♡','♡'],
['♡','♡','♡'],
['♡','♡','♡'],
['♡','♡','🕱'],
['♡','♡','♡']]
B = [['🕱','♡', '♡'],
['♡','🕱', '🕱'],
['♡','♡','♡'],
['♡','♡','♡']]
afficher(B)
def manhattan(a,b, p,q):
"""
(a,b) -- coordonnées (ligne, colonne) d'une cellule
(p,q) -- coordonnées (ligne, colonne) d'une cellule
renvoie la distance manhattan entre ces deux cellules
"""
return abs(a-p)+abs(b-q)
def minimum(liste):
"""
liste: liste d'entiers
renvoie la valeur minimale contenue dans liste
"""
mini = liste[0]
for valeur in liste:
if valeur < mini:
mini = valeur
return mini
def distance_aux_pollutions(grille, a,b):
"""
grille -- matrice, chaque cellule contenant '🕱' ou '♡'
(a,b) -- couple (ligne, colonne) d'une cellule
renvoie la distance manhattan minimale de la cellule (a,b) à une case '🕱' de grille
"""
liste_distances = []
for col in range(0,len(grille[0])):
for lig in range(0, len(grille)):
if grille[lig][col] == '🕱':
liste_distances.append(manhattan(a,b, lig, col))
return minimum(liste_distances)
distance_aux_pollutions(B,3,1)
def grille_dist_pollutions(grille):
largeur = len(grille[0]) # nombre de colonnes de la grille
hauteur = len(grille) # nombre de lignes de la grille
D = [[0 for k in range(largeur)] for j in range(hauteur)]
for lig in range(0, hauteur):
for col in range(0,largeur):
D[lig][col] = distance_aux_pollutions(grille, lig,col)
return D
afficher(grille_dist_pollutions(A))
def cellule_refuge(grille):
"""
renvoie les coordonnées d'une cellule parmi les plus éloignées
de toute région polluée
"""
# la matrice des distances aux pollutions:
largeur = len(grille[0]) # nombre de colonnes de la grille
hauteur = len(grille) # nombre de lignes de la grille
D = grille_dist_pollutions(grille)
# calcul des coordonnées d'une cellule
# d'éloignement aux pollutions maximal:
maxi = D[0][0]
cellule = (0,0)
for lig in range(0, hauteur):
for col in range(0,largeur):
dist = D[lig][col]
if dist > maxi:
maxi = dist
cellule = (lig, col)
return cellule
cellule_refuge(A)