2015-09-05 La programmation avec les cartes

J’avais décidé de reprendre quelques-uns des jeux développés pour les enfants lors de mon premier cours à l’ENSAE. On a passé un peu de temps à déployer un fil de laine au milieu de l’amphithéâtre pour illustrer un algortihme. On a joué avec des cartes. Il y eut quelques fou rires aussi.

Le travail lors des deux heures qui suivirent fut plus studieux mais j’ai repris les cartes pour expliquer quelques bouts de code utilisant les listes. Alors que j’avais insisté sur la distinction entre la position d’un élément d’une liste et sa valeur, les élèves tombaient sur cet exemple qui mélangeaient allègrement les deux

l = [ 4, 3, 0, 2, 1 ]
i = 0
while l[i] != 0 :
    i = l[i]
    print (i)  # que vaut l[i] à la fin ?

J’ai donc repris les cartes je disposai comme suit :

../../_images/carte1.jpg

Il n’y avait pas de carte zéro dans mon jeu donc j’ai pris une image ronde qui la symbolise. Les cartes sont disposées en ligne, de la position 0 à la position 4 car en Python, la première case est la position 0. Pour connaître la valeur de l’élément du tableau, on retourne la carte. Le jeu est simple :

  • Pour obtenir l’élément i du tableau, on compte à partir du début à partir de 0 jusqu’à i.
  • Pour connaître l’élément du tableau, on retourne la carte.
../../_images/carte2.jpg

Puis on suit l’algorithme, tant que la carte retournée n’est pas zéro (ou le bus dans notre cas), on à la position indiquée par la carte retournée donc 4 :

../../_images/carte3.jpg

Puis carte 1 (soit la deuxième en partant de la gauche) :

../../_images/carte4.jpg

Puis 3 :

../../_images/carte5.jpg

Puis 2 :

../../_images/carte6.jpg

Et on a trouvé.

Pour la petite note, cet algorithme sert à déterminer les cycles d’une permutation.