Lien vers le repository GitHub du TP : https://classroom.github.com/a/_smX5cgY
Compléter le programme exo_0.py
pour qu’il ne cesse de demander le nom de l’utilisateur tant que sa réponse ne fait pas partie de la liste de noms autorisés.
Le ROT13 (rotate by 13 places) est un cas particulier du chiffre de César, un algorithme simpliste de chiffrement de texte.
Comme son nom l’indique, il s’agit d’un décalage de 13 caractères de chaque lettre du texte à chiffrer. Son principal aspect pratique est que le codage et le décodage se font exactement de la même manière.
Indications :
in
ou la méthode isalpha
permettront de savoir si un caractère est alphabétique.%
peut s’avérer utile).Écrire un programme (dans exo_1.py
) permettant de décoder l’énoncé de l’exercice 2.
Épever ha cebtenzzr dhv genafsbezr ha grkgr qr znavèer à pr dhr yn cerzvèer rg yn qreavèer yrgger qr pundhr zbg erfgr vapunatér nybef dhr yrf yrggerf qr zvyvrh fbag zéynatérf nh unfneq. Ln cbapghngvba qbvg erfgre ra cynpr. Oa cbheen hgvyvfre yn sbapgvba enaqbz.fuhssyr() qh cnpxntr enaqbz dhv zéynatr yrf qvsséeragf éyézragf dh’ba yhv qbaar ra nethzrag.
Texte à modifier (voir exo_2.py
) :
On avale à pleine gorgée le mensonge qui nous flatte, et on boit goutte à goutte une vérité qui nous est amère.
On pourra utiliser la fonction random.shuffle()
du package random qui mélange les différents éléments qu’on lui donne en argument en se rappelant que les chaînes de caractères sont immuables, il faut donc les transformer en listes (grâce à list(chaîne)
) si on veut les modifier.
Les alcanes linéaires sont les hydrocarbures de formule brute $C_nH_{2n+2}$ dont les carbones forment une chaîne linéaire.
Écrire (dans exo_3.py
) un programme donnant la formule semi-développée d’un tel alcane à partir d’une formule brute.
Par exemple : si brut = 'C4H10'
alors le programme doit afficher CH3-CH2-CH2-CH3
.
L’algorithme de Luhn est une formule de somme de contrôle permettant de valider un numéro de carte bancaire.
On considère le numéro de carte comme une suite de nombres à 1 chiffre.
Écrire (dans exo_4.py
) un programme permettant de vérifier un numéro de carte.
Que fait ce programme et comment ? (Écrire votre réponse dans exo_5.md
)
nmax = 5
x = [1]
for n in range(1, nmax+2) :
print(x)
x = [([0]+x)[i] + (x+[0])[i] for i in range(n+1)]
Dans la série “The Wire”, les dealers codent les numéros de téléphone en utilisant une méthode (“jump the five”) qui repose sur la disposition des touches sur le clavier.
Chaque numéro (sauf le 5 et le 0) permute avec celui qui se trouve de l’autre côté du 5. Le 5 et le 0 sont intervertis.
Écrire (dans exo_6.py
) un programme qui crypte et décrypte les numéros de téléphone.
Crypter le numéro de Vieljeux : “05 46 34 79 32”.
La distance de Hamming entre deux chaînes de caractères de même longueur est le nombre de positions où les caractères sont différents. C’est une notion très importante en théorie du signal puisqu’elle mesure la corruption d’un message transmis.
Écrire (dans exo_7.py
) un programme pour calculer la distance de Hamming entre deux chaînes.
La suite de Syracuse est une suite d’entiers naturels définie de la manière suivante : on part d’un nombre entier plus grand que zéro ;
En répétant l’opération, on obtient une suite d’entiers positifs dont chacun ne dépend que de son prédécesseur.
Lorsque 1 est atteint, un cycle de longueur 3 se répète sans fin : 1, 4, 2, 1, 4, 2, 1,…
On ajoute donc une nouvelle règle :
exo_8a.py
).exo_8b.py
).La conjecture de Syracuse (ou Collatz) dit que toutes les suites de Syracuse ont une fin.
exo_8c.py
).