from turtle import *


def etat_suivant(etat_courant, regle):
    """Renvoie une chaîne de caractères correspondant à
    l'application de regle sur etat_courant.
    """
    
    # Transcrire ici l'algorithme en Python
             

def etat_evolution(etat_initial, n, regle):
    """Renvoie une chaîne de caractères correspondant à l'état
    final obtenu après n applications successives de regle à
    etat_initial.
    """
    
    # Transcrire ici l'algorithme en Python


def trace(motif, pas, angle):
    """Tracé de la plante. Cette fonction ne renvoie rien."""
    etat_tortue = []

    for car in motif:
        if car == '[':
            etat_tortue.append((xcor(), ycor(), heading()))
        elif car == ']':
            up()
            x, y, head = etat_tortue.pop()
            goto(x, y)
            seth(head)
            down()
        elif ...
        # à compléter avec les autres instructions de tracé
        

if __name__ == '__main__' :
    # Initialisation de la tortue
    setheading(90) # Orientation, peut être nécessaire de la changer
    speed(0)
    up()
    goto(0, -250) # position initiale, peut être nécessaire de la changer
    down()

    # Plante
    etat_initial = # à compléter : chaîne de caractères
    regle = # à compléter : chaîne de caractères
    n = # à compléter : nombre d'évolutions
    pas = # à compléter : nombre de pixels pour F
    angle =  # à compléter : nombre exprimé en degrés
    motif = etat_evolution(etat_initial, n, regle)

    trace(motif,pas,angle)
    
    mainloop()
