Remise en jambe STID - TP Noté

2023-2024
Author

Ludovic DENEUVILLE

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 devient az (car dD disparait)
    • exemple2 : zrRYye devient ze
  • 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 devient zAa puis devient z

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.