Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
ens:dasi2015-2016:tpchaines [2016/01/06 13:57] admin Cordier Amelie () [Partie 2. Les mots de passe d'Edward] |
ens:dasi2015-2016:tpchaines [2016/01/06 14:21] (Version actuelle) admin Cordier Amelie () [Partie 4. La vengeance d'Edward] |
||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| <note important> | <note important> | ||
| - | ===== Partie 1. Préparation de l' | + | ===== Partie 1. Préparation de l' |
| Ligne 12: | Ligne 12: | ||
| * Commitez ces fichiers. | * Commitez ces fichiers. | ||
| - | Dans la suite du sujet, vous devez faire un commit à chaque fois que vous verrez le mot " | + | Dans la suite du sujet, vous devez faire un commit à chaque fois que vous verrez le mot " |
| + | |||
| + | À la fin du TP (et uniquement à ce moment là), vous devrez pousser l' | ||
| ===== Partie 2. Les mots de passe d' | ===== Partie 2. Les mots de passe d' | ||
| Ligne 109: | Ligne 111: | ||
| ===== Partie 4. La vengeance d' | ===== Partie 4. La vengeance d' | ||
| - | Pour se venger de ce stupide administrateur système, Edward lui donne une énigme à résoudre. Il lui demande d' | + | Pour se venger de ce stupide administrateur système, Edward lui donne une énigme à résoudre. Il lui demande d' |
| Gunter, après avoir passé plusieurs heures à comprendre le problème (les énigmes, c'est pas son truc), écrit en deux temps trois mouvements l'algo qui répond au problème. | Gunter, après avoir passé plusieurs heures à comprendre le problème (les énigmes, c'est pas son truc), écrit en deux temps trois mouvements l'algo qui répond au problème. | ||
| Ligne 117: | Ligne 119: | ||
| Serez-vous plus malin que Gunter ? | Serez-vous plus malin que Gunter ? | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| + | |||
| + | |||
| + | ===== Ressources ===== | ||
| + | |||
| + | <code python password.py> | ||
| + | |||
| + | # coding: utf-8 | ||
| + | def getNext(password): | ||
| + | """ | ||
| + | Série de tests exprimés en doctest | ||
| + | >>> | ||
| + | ' | ||
| + | >>> | ||
| + | ' | ||
| + | >>> | ||
| + | ' | ||
| + | """ | ||
| + | pwd = list(password) | ||
| + | found = False | ||
| + | i=len(pwd)-1 | ||
| + | |||
| + | while not found: | ||
| + | if pwd[i] < ' | ||
| + | | ||
| + | found = True | ||
| + | else: | ||
| + | i = i-1 | ||
| + | |||
| + | return '' | ||
| + | |||
| + | |||
| + | |||
| + | # Grâce à ce fragment de code, si vous exécutez ce fichier, les tests doctests seront exécutés également. | ||
| + | # Si vous ne voulez plus que les tests s' | ||
| + | # Si vous préférez lancer vos tests à la main, commentez également les lignes, et utilisez " | ||
| + | if __name__ == " | ||
| + | import doctest | ||
| + | doctest.testmod() | ||
| + | </ | ||
| + | |||
| + | <code python test_password.py> | ||
| + | |||
| + | # coding: utf-8 | ||
| + | import unittest | ||
| + | import password as pwd | ||
| + | |||
| + | class TestPassword(unittest.TestCase): | ||
| + | |||
| + | def test_getNextNormal(self): | ||
| + | self.assertEqual(pwd.getNext(" | ||
| + | |||
| + | def test_getNextEndLine(self): | ||
| + | self.assertEqual(pwd.getNext(" | ||
| + | # Permet d' | ||
| + | unittest.main() | ||
| + | </ | ||
| //Ce TP est fortement inspiré des exercices du prodigieux projet Advent of Code. Merci à son créateur pour ces belles sources d' | //Ce TP est fortement inspiré des exercices du prodigieux projet Advent of Code. Merci à son créateur pour ces belles sources d' | ||