blob.py

text/x-python blob.py — 1.8 KB

Contenu du fichier

''' **********************************************************************
    Fichier blob.py

    Programme qui calcule le nombre de case d'une figure

    Entree : (clavier) les coordonnées de départ dans la grille

    auteur gabriel girard
    date 2017

 ********************************************************************** '''
import numpy as np
MAX_Y = 8
MAX_X = 8

#
#  Fontion récursive calculant le nombre de cases dans une figure
#
# Entree :
#   (parametre) la grille
#   (parametre) la valeur en x du point de départ
#   (parametre) la valeur en y du point de départ
# Sortie : Le nombre de cases dans la figure
#
def blob(grille, x, y):
    # fin de la grille
    if x<0 or (x > MAX_X -1) or y < 0 or (y > MAX_Y -1):
        compte = 0
    # c'est une case marquée ou externe à la figure
    elif grille[x][y] == 0 : compte = 0
    # Une case de plus dans la figure .. on avance..
    else :
        grille[x][y] = 0
        compte = 1 + blob(grille, x-1, y) + \
                 blob(grille, x-1, y+1) + \
                 blob(grille, x-1, y-1) + \
                 blob(grille, x, y+1) + \
                 blob(grille, x, y-1) + \
                 blob(grille, x+1, y+1) + \
                 blob(grille, x+1, y) + \
                 blob(grille, x+1, y-1)
    return compte

#
# Initialisation de la grille
grille = np.array([1,1,0,0,0,1,1,1,
                   1,1,0,0,0,0,0,1,
                   1,0,0,1,0,0,0,1,
                   1,0,0,1,1,0,0,0,
                   1,0,1,1,1,1,0,0,
                   1,0,0,1,1,0,0,0,
                   1,0,0,1,0,0,1,1,
                   1,1,0,0,0,1,0,1])

grille = grille.reshape((MAX_X, MAX_Y))
print(grille)
# On lit le point de départ
x, y = map(int, input("x , y =").split(","))
# On calcule le nombre de cases dans la figure
cpt = blob(grille, x, y);
print("Pts ds figure =", cpt)