constante N : entier <- ... constante M : entier <- ... Tableau [N][M] de entier fonction matriceDesDistances(px,py) Données px : entier py : entier Locales i : entier j : entier md : Tableau [N][M] de entier pour i de 0 à N-1 faire pour j de 0 à M-1 faire md[i][j] <- abs(i-py)+abs(j-px) fait fait retourner md fin fonction booleen fonction voisin(x,y,md,distance) Données x : entier y : entier md : Tableau [N][M] de entier distance : entier Locales res : booleen res <- faux si ( x >= 0 ) et ( x < M ) et ( y >= 0 ) et ( y < N ) alors si md[y][x] = distance alors res <- vrai fsi fsi retourner res fin fonction booleen fonction voisinage(c,l,md,distance,t,v) Données c : entier l : entier md : Tableau [N][M] de entier distance : entier t : Tableau [N][M] de booleen v : booleen Locales res : booleen res <- faux si ( md[l][c] = -1 ) et ( t[l][c] = v ) alors si voisin(c+1,l,md,distance) alors res <- vrai sinon si voisin(c-1,l,md,distance) alors res <- vrai sinon si voisin(c,l+1,md,distance) alors res <- vrai sinon si voisin(c,l-1,md,distance) alors res <- vrai fsi fsi fsi fsi fsi retourner res fin fonction Tableau [N][M] de entier fonction distances(px,py,t) Données px : entier py : entier t : Tableau [N][M] de booleen Locales i : entier j : entier l : entier c : entier change : booleen distance : entier md : Tableau [N][M] de entier distance <- 0 pour i de 0 à N-1 faire pour j de 0 à M-1 faire md[i][j] <- -1 fait fait md[py][px] <- 0 faire change <- faux pour l de 0 à N-1 faire pour c de 0 à M-1 faire si voisinage(c,l,md,distance,t,t[py][px]) alors change <- vrai md[l][c] <- distance+1 fsi fait fait distance <- distance+1 tant que (change) retourner md fin fonction