Fourmi de Langton

Fermé
LauRo46 Messages postés 5 Date d'inscription dimanche 26 mars 2017 Statut Membre Dernière intervention 28 mars 2017 - Modifié le 26 mars 2017 à 15:42
Cirdek Messages postés 19 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 1 avril 2017 - 28 mars 2017 à 16:59
Bonjour à tous, dans le cadre d'un projet info sur la fourmi de Langton à présenter bientôt, j'aurais voulu savoir si quelqu'un pouvait m'aider à optimiser ma fonction jeu s'il vous plait !

<def jeu(n,p,nbr): # n est le nombre de colonnes, nbr le nombre de déplacements de la fourmi
    A=ones(n,p)
    c=0
    #f=[[i,k]] # liste coordonnées initiales de la positon de la fourmi
    x=n//2
    y=p//2
    f=[[x],[y]]
    Nord=[0,1]
    Sud=[0.-1]
    Est=[1.0]
    Ouest=[-1.0]
    dir=Nord # direction initiale
    while c<nbr:
        if A[f]==1:
            A[f]=0 #change la couleur de la case
            if dir==Nord: #tête vers le haut
                dir=Est
            elif dir==Sud: #tête vers le bas
                dir=Ouest
            elif dir==Ouest: #tête vers la gauche
                dir=Nord                                 
            elif dir==Est: #tête vers la droite
                dir=Sud
            c+=1
            x+=Nord[0]
            y+=Nord[1]
            f=[[x],[y]]
        else:
            A[f]=1 #change la couleur de la case
            if dir==Nord: #tête vers le haut
                dir=Ouest
            elif dir==Sud: #tête vers le bas
                dir=Est
            elif dir==Ouest: #tête vers la gauche
                dir=Sud
            elif dir==Est: #tête vers la droite
                dir=Nord
            c+=1
            x+=Nord[0]
            y+=Nord[1]
            f=[[x],[y]]
    return A>
</code>

1 réponse

Cirdek Messages postés 19 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 1 avril 2017 15
27 mars 2017 à 01:42
Bonsoir!
Ouh là...
En faite là tu voudrais qu'on fasse ton truc à ta place en faite?
Je te laisse méditer sur cette erreur parmi le tas d'autres :
dir=Nord <-ici
while c<nbr:
if A[f]==1:
A[f]=0 #change la couleur de la case
if dir==Nord: <-ici, eyes roll...
dir=Est<-ici
elif dir==Sud: #tête vers le bas
dir=Ouest
elif dir==Ouest: #tête vers la gauche
dir=Nord
elif dir==Est: <-ici
dir=Sud<-ici
0
LauRo46 Messages postés 5 Date d'inscription dimanche 26 mars 2017 Statut Membre Dernière intervention 28 mars 2017
27 mars 2017 à 16:48
Justement non, je ne veux pas que vous le fassiez à ma place, juste qu'on m'explique une manière de l'optimiser !
En fait j'ai remis après coup toutes les directions à la place de Nord, Est, Sud et Ouest.
Mon programme fonctionne, donc pour le coup, cette erreur je ne la comprend pas
0
LauRo46 Messages postés 5 Date d'inscription dimanche 26 mars 2017 Statut Membre Dernière intervention 28 mars 2017
27 mars 2017 à 22:52
Si je mets ça comme ça, c'est pour donner une valeur initiale à la direction mais après je change la valeur de dir dans la boucle non ?

Les listes sont sensées indiquer la direction de ma fourmi, si je ne mets pas de virgule entre mes chiffres dans une liste, je met quoi d'autre ?
0