Aller au contenu

Répétitions et symétries⚓︎

Remarque pour les fonctions suivantes

Les fonctions de cette partie vont uniquement manipuler et renvoyer des instructions sous forme textuelle. Elles n'affichent rien. Pour voir la figure correspondant aux instructions, il faut utiliser executer.

Exercice 5

Compléter la fonction repeter qui prend en paramètre un texte instructions et un entier positif n et qui renvoie une nouvelle suite d'instructions où instructions est répétée n fois.

# Exercice 5
def repeter(instructions, n):
    ...
Exemple d'utilisation
>>> repeter('hghgbd', 3)
'hghgbdhghgbdhghgbd'
Exercice 6

Compléter la fonction sym_h qui prend en paramètre un texte instructions et qui renvoie une nouvelle suite d'instructions qui correspond au symétrique par rapport à un axe horizontal de la figure produite par instructions. L'axe de symétrie passe par la position initiale de la tortue avant d'exécuter instructions.

# Exercice 6
def sym_h(instructions):
    rep = ''
    for instr in instructions:
        if instr == ...:
            rep = rep + ...
        elif instr == ...:
            rep = rep + ...
        else:  # sinon on ne change pas l'instruction
            rep = rep + ...
    return rep

Dans la figure ci-contre, on obtient le dessin du dessus avec executer('hhddbg') et celui en bleu avec executer(sym_h('hhddbg')).

Exercice 7

Compléter la fonction sym_v qui prend en paramètre un texte instructions et qui renvoie une nouvelle suite d'instructions qui correspond au symétrique par rapport à un axe horizontal de la figure produite par instructions. L'axe de symétrie passe par la position initiale de la tortue avant d'exécuter instructions.

# Exercice 7
def sym_v(instructions):
    rep = ''
    for instr in instructions:
        ...
    return rep 

Dans la figure ci-contre, on obtient le dessin du droite avec executer('ddhhgb') et celui en bleu avec executer(sym_v('ddhhgb')).

Exercice 8

Compléter la fonction inverser qui prend en paramètre un texte instructions qui renvoie une nouvelle suite d'instructions qui inverse l'ordre des instructions de instructions.

Il faut modifier les commandes lever et Ă©crire, mais pas les autres. Il faut par contre recopier les instructions de droite Ă  gauche.

# Exercice 8
def inverser(instructions):
    rep = ''
    for instr in instructions:
        if instr == 'l':
            rep = ...
        elif instr == 'e':
            rep = ...
        else:
            rep = ...
    return rep
Exemple d'utilisation
>>> inverser('hhgggbdd')
'ddbggghh'
>>> inverser('glhheddd')
'dddlhheg'
Exercice 9

Compléter la première des lignes ci-dessous avec des instructions pour la tortue afin d'obtenir la figure suivante.

# Exercice 9
base = ...
executer(repeter(base + inverser(base), 5))

Les instructions de base correspondent Ă  la partie en rouge.

Une fois cet exercice fini, vous pouvez commenter ces 2 lignes en mettant un # devant chacune.

Exercice 10

Compléter la fonction sym_h_i qui prend en paramètre un texte instructions et qui renvoie une nouvelle suite d'instructions qui correspond au symétrique horizontal de la figure produite par instructions, mais en partant du point d'arrivée. Il faut donc inverser l'ordre des instructions et faire attention avec les commandes lever et écrire.

# Exercice 10
def sym_h_i(instructions):
    ...

Dans la figure ci-contre, on obtient le dessin du dessus avec executer('ddb') et celui en bleu avec executer(sym_h_i('ddb')).

⚠ La fonction ne doit renvoyer que les instructions pour tracer le symétrique, pas pour se déplacer au point d'arrivée de la figure originale. Dans l'exemple ci-contre, sym_h_i('ddb') est un texte composé de 3 instructions.

Exercice 11

Compléter la fonction sym_v_i qui prend en paramètre un texte instructions et qui renvoie une nouvelle suite d'instructions qui correspond au symétrique vertical de la figure produite par instructions, mais en partant du point d'arrivée. Il faut donc inverser l'ordre des instructions et faire attention avec les commandes lever et écrire.

# Exercice 11
def sym_v_i(instructions):
    ...

Dans la figure ci-contre, on obtient le dessin du dessus avec executer('hdhhd') et celui en bleu avec executer(sym_v_i('hdhhd')).

⚠ La fonction ne doit renvoyer que les instructions pour tracer le symétrique, pas pour se déplacer au point d'arrivée de la figure originale. Dans l'exemple ci-contre, sym_v_i('hdhhd') est un texte composé de 5 instructions.

Exercice 12

En utilisant les fonctions précédentes et le motif de base, dessiner la figure ci-contre. Il faut utiliser la plus petite suite d’instructions possible.