Remise en jambe STID - TP Noté
2023-2024
- à rendre soit seul, soit par groupe de 2
- Déposez sous Moodle, vos 2 fichiers python :
- ex1.py
- ex2.py
- date limite : Mercredi 6 septembre à 17h00
- Commentez et expliquez ce que font vos algorithmes
Avant de commencer
-
- Dans le dossier TP2, créez 2 sous-dossiers
-
1 Exercice 1
1.1 Contexte
Dans cet exercice, vous allez créer 2 fonctions qui prendront en entrée une chaîne de caractères et réaliseront les traitements ci-dessous
Fonction 1 : Trouvez la première occurrence de 4 caractères consécutifs différents
- En partant du début du texte, trouvez la première occurrence de 4 caractères consécutifs différents
- Et retournez la position du dernier caractère de cette occurrence
Exemple 1
Entrée : jgngmnjdyigpmeawqksgcntozdpjiy
Si en partant du début, nous étudions les suites de 4 caractères consécutifs à la recherche de la 1ere en contenant 4 différents
jgngmnjdyigpmeawqksgcntozdpjiy
jgng -> ko car 2 g
gngm -> ko car 2 g
ngmn -> ko car 2 n
gmnj -> OK donc résultat : 7 car le dernier des 4 caractères (j) est en position 7
Autres exemples
- vpqvdjfvapvbmlfjaxgdkqznphwt : 5
- frfjfxjxflbxenxoervxbdnliftzuhjky : 10
Fonction 2 : Même question avec cette fois une séquence de 14 caractères consécutifs différents
Exemple
ruxrxorrixjdbordjxfhivtzlekuynbo : 26
1.2 Todo
-
- Cherchez une méthode qui permet de réaliser cette opération
- Le fichier texte est composé de caractères alphabétiques
- Stockez le résultat dans une variable
2 Exercice 2
2.1 Contexte
Vous allez devoir réduire une chaîne de caractères alphabétiques selon les règles suivantes :
- lorsque 2 lettres contiguës représentent le même caractère avec une minuscule et une majuscule (peu importe l’ordre), elles disparaissent
- exemple :
adDz
devientaz
(cardD
disparait) - exemple2 :
zrRYye
devientze
- exemple :
- le comportement doit être récursif
- c’est à dire qu’il faut réduire la chaîne tant qu’elle n’est pas stable
- exemple :
zAdDa
devientzAa
puis devientz
Autres exemples
- abCdABcA : ne change pas
- xXx -> x
- abCdeEDcAb -> abCdDcAb -> abCcAb -> abAb
2.2 Todo
Créez une fonction qui :
2.3 Bonus
- Imaginez que l’on retire toutes les occurrences (majuscules et minuscules) d’un même caractère
- Cela va modifier la réduction de la chaîne
- exemple :
- chaîne de départ : bcdCaAcADCaAacBC
- si on enlève tous les a et les A
- bcdCcDCcBC -> bcdDBC -> bcBC (taille = 4)
- si on enlève tous les b et les B
- cdCaAcADCaAacC -> cdCcADCa -> cdADCa (taille = 6)
- si on enlève tous les c et les C
- bdaAADaAaB -> bdADaB (taille = 6)
- si on enlève tous les d et les D
- bcCaAcACaAacBC -> bcACacBC (taille : 8)
- dans l’exemple, la meilleure réduction a été obtenue en retirant la lettre a (et A) car la chaîne finale est de taille minimale
Créez une fonction qui :
Source
Exercices inspirés du site AdventOfCode qui propose chaque année en décembre, un problème à résoudre par jour.