On se donne une grille de nombre. Par exemple :
| 17 | 7 | 21 | 71 | 40 | 77 | 58 | 42 | 67 | 48 |
| 1 | 40 | 70 | 54 | 43 | 60 | 19 | 49 | 32 | 6 |
| 58 | 91 | 69 | 75 | 1 | 27 | 89 | 50 | 74 | 77 |
| 96 | 28 | 89 | 18 | 9 | 67 | 30 | 32 | 14 | 52 |
| 24 | 77 | 44 | 83 | 2 | 51 | 20 | 16 | 50 | 69 |
| 53 | 75 | 52 | 3 | 21 | 46 | 59 | 68 | 86 | 24 |
| 52 | 45 | 80 | 82 | 19 | 47 | 18 | 68 | 16 | 92 |
| 14 | 65 | 43 | 16 | 4 | 79 | 61 | 43 | 72 | 88 |
Le but est d'obtenir le plus grand score.
grid = [ [17, 7, 21, 71, 40, 77, 58, 42, 67, 48], [1, 40, 70, 54, 43, 60, 19, 49, 32, 6], [58, 91, 69, 75, 1, 27, 89, 50, 74, 77], [96, 28, 89, 18, 9, 67, 30, 32, 14, 52], [24, 77, 44, 83, 2, 51, 20, 16, 50, 69], [53, 75, 52, 3, 21, 46, 59, 68, 86, 24], [52, 45, 80, 82, 19, 47, 18, 68, 16, 92], [14, 65, 43, 16, 4, 79, 61, 43, 72, 88] ] LIGNES = len(grid) # nombre de lignes COLONNES = len(grid[0]) # nombre de colonnes
| 17 | 7 | 21 | 71 | 40 | 77 | 58 | 42 | 67 | 48 |
| 1 | 40 | 70 | 54 | 43 | 60 | 19 | 49 | 32 | 6 |
| 58 | 91 | 69 | 75 | 1 | 27 | 89 | 50 | 74 | 77 |
| 96 | 28 | 89 | 18 | 9 | 67 | 30 | 32 | 14 | 52 |
| 24 | 77 | 44 | 83 | 2 | 51 | 20 | 16 | 50 | 69 |
| 53 | 75 | 52 | 3 | 21 | 46 | 59 | 68 | 86 | 24 |
| 52 | 45 | 80 | 82 | 19 | 47 | 18 | 68 | 16 | 92 |
| 14 | 65 | 43 | 16 | 4 | 79 | 61 | 43 | 72 | 88 |
Le parcours marqué en gras totalise un score de : $$17 + 7 + 21 + \cdots + 92 + 88 = 702$$
À chaque pas, on se dirige vers la case (à droite ou en bas) contenant le score maximal.
On pourrait aussi stocker le contenu de la grille dans un fichier csv comme celui-ci : grid.csv
Il faudrait alors charger le fichier pour lire la grille avant de pouvoir chercher le parcours.
Un module
# glouton.py
def glouton(grid) -> str:
"""
grid: tableau 2D contenant des entiers
renvoie le parcours fait de mouvements H, B, G, D
donnant le parcours glouton de coin supérieur gauche
au coin inférieur droit
"""
def load_grid(filename:str):
"""
filename: nom de fichier
renvoie la grille contenu dans le fichier
"""
Une première démo :
# demo1.py from glouton import glouton grid = [ [17, 7, 21, 71, 40, 77, 58, 42, 67, 48], [1, 40, 70, 54, 43, 60, 19, 49, 32, 6], [58, 91, 69, 75, 1, 27, 89, 50, 74, 77], [96, 28, 89, 18, 9, 67, 30, 32, 14, 52], [24, 77, 44, 83, 2, 51, 20, 16, 50, 69], [53, 75, 52, 3, 21, 46, 59, 68, 86, 24], [52, 45, 80, 82, 19, 47, 18, 68, 16, 92], [14, 65, 43, 16, 4, 79, 61, 43, 72, 88] ] LIGNES = len(grid) # nombre de lignes COLONNES = len(grid[0]) # nombre de colonnes # utilisation de la fonction et affichage de la réponse
et une deuxième démonstration
#demo2.py
import glouton
glouton.load_grid("grid.csv")
# utilisation de la fonction et affichage de la réponse