Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
ens:dasi2015-2016:tpchaines [2016/01/06 13:56] admin Cordier Amelie () créée |
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 53: | Ligne 55: | ||
- | Partie 3. Arrivée de Gunter. | + | ===== Partie 3. Arrivée de Gunter. |
+ | |||
Gunter est le nouvel admin système de la société loufoque ou travaille Edward. Il tombe dans les pommes quand il apprend la façon de faire de ce dernier. Quelques secondes après avoir repris ses esprits, il décide de mettre en place des règles sur les mots de passe. Edward ne comprend pas le sens de ces règles, car à part lui compliquer la vie, elles ne changent en rien les problèmes évidents de sécurité de son système... mais qu' | Gunter est le nouvel admin système de la société loufoque ou travaille Edward. Il tombe dans les pommes quand il apprend la façon de faire de ce dernier. Quelques secondes après avoir repris ses esprits, il décide de mettre en place des règles sur les mots de passe. Edward ne comprend pas le sens de ces règles, car à part lui compliquer la vie, elles ne changent en rien les problèmes évidents de sécurité de son système... mais qu' | ||
Ligne 106: | Ligne 109: | ||
- | 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 116: | Ligne 119: | ||
Serez-vous plus malin que Gunter ? | Serez-vous plus malin que Gunter ? | ||
- | 1. Écrire les tests puis la fonction getNext(terme) qui renvoie le successeur d'un terme de la suite de Conway. | + | - Écrire les tests puis la fonction getNext(terme) qui renvoie le successeur d'un terme de la suite de Conway. |
+ | - COMMIT | ||
+ | - Écrire les tests puis la fonction getNNext(n, | ||
+ | - COMMIT | ||
+ | - Mettez en place des tests de performances et faites varier votre implémentation pour voir si vous pouvez l' | ||
+ | - Sous quelles conditions peut-on voir apparaître le chiffre 4 dans la suite de Conway ? | ||
+ | |||
+ | |||
+ | ===== 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() | ||
+ | </ | ||
- | 2. COMMIT | + | <code python test_password.py> |
- | 3. Écrire les tests puis la fonction getNNext(n, | + | # coding: utf-8 |
+ | import unittest | ||
+ | import password as pwd | ||
- | 4. COMMIT | + | class TestPassword(unittest.TestCase): |
- | 5. Mettez en place des tests de performances et faites varier votre implémentation pour voir si vous pouvez l' | + | def test_getNextNormal(self): |
+ | self.assertEqual(pwd.getNext(" | ||
- | 6. Sous quelles conditions peut-on voir apparaître le chiffre 4 dans la suite de Conway ? | + | 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' |