From abba6662319467f0cc290ced479c3aaf3d42e987 Mon Sep 17 00:00:00 2001 From: gwen Date: Wed, 21 Jun 2017 10:53:35 +0200 Subject: [PATCH] =?UTF-8?q?notes=20pour=20am=C3=A9lioration=20du=20cours?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- algorithmique/cours/cesar.py | 61 ++++++++++++++++++++++++++++++++++++ algorithmique/todo.txt | 21 +++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 algorithmique/cours/cesar.py create mode 100644 algorithmique/todo.txt diff --git a/algorithmique/cours/cesar.py b/algorithmique/cours/cesar.py new file mode 100644 index 0000000..c3d25ac --- /dev/null +++ b/algorithmique/cours/cesar.py @@ -0,0 +1,61 @@ +# coding: utf-8 +minuscules = 'abcdefghijklmnopqrstuvwxyz' +majuscules = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + +def rotation(chaine, x): + """ + Effectue une rotation de x caractères vers la droite: + >>> rotation('abcde', 2) + 'cdeab' + """ + return chaine[x:] + chaine[:x] + +def index(c, chaine): + """ + Trouve l'index de c dans la chaine: + >>> index('n', 'bonjour') + 2 + """ + for i in range(len(chaine)): + if (c == chaine[i]): + return i + return -1 + +def chiffre_minuscules(chaine, x): + """ + Chiffre une chaîne composée de minuscules + >>> chiffre_minuscules('bonjour', 3) + 'erqmrxu' + """ + r = rotation(minuscules, x) + resultat = '' + for lettre in chaine: + resultat = resultat + r[index(lettre, minuscules)] + return resultat + +def chiffre(chaine, x): + """ + Chiffre une chaîne quelconque + >>> chiffre('Bonjour les amis!', 3) + 'Erqmrxu ohv dplv!' + """ + r_min = rotation(minuscules, x) + r_maj = rotation(majuscules, x) + resultat = '' + for lettre in chaine: + if lettre in minuscules: + resultat = resultat + r_min[index(lettre, minuscules)] + elif lettre in majuscules: + resultat = resultat + r_maj[index(lettre, majuscules)] + else: + resultat = resultat + lettre + return resultat + +############################################################################# +# Programme principal +############################################################################# +print(chiffre_minuscules('bonjour', 3)) +print(chiffre('Bonjour les amis!', 3)) +print(chiffre('Erqmrxu ohv dplv!', 23)) +print(chiffre('Eudyr, yrxv dyhc ilql fhw hahuflfh!', 23)) + diff --git a/algorithmique/todo.txt b/algorithmique/todo.txt new file mode 100644 index 0000000..98897d9 --- /dev/null +++ b/algorithmique/todo.txt @@ -0,0 +1,21 @@ +todo +==== + +- un code-block:: ocaml ne passe pas (c'était lequel?) +- le tri de listes est à supprimer (ou bien le faire en python) +- donner les corrections des exos de TP +- l'abstraction de type dans les modules : + refaire le type date correctement + +- l'analyse descendante avec les dates : je l'avais zappé mais c'était bien +- modules paramétrés ? à effacer + + +- éviter de "mélanger" le python et le ocaml +- l'appel d'une fonction n'a pas été assez clair: + - reprendre la "boite noire" plutôt avec une analogie avec la cybernétique + - plutôt que de chercher à dire procédure/fonction, dire "bloc de code qu'on + isole" et insister sur les locales et les globales +- ne pas centrer sur la programmation impérative ou fonctionnelle, + mentionner la fonctionnelle +