Remise en jambe STID - TP Noté

2024-2025
Author

Ludovic DENEUVILLE

Consignes

  • À rendre soit seul, soit par groupe de 2
  • Déposez sous Moodle (Compléments d’informatique et d’économie), vos 3 fichiers Python nommés :
    • ex1.py
    • ex2.py
    • ex3.py
  • Date limite : 12/09/24 19:00
Conseils
  • Lisez attentivement et respectez les consignes
  • Commentez et expliquez ce que font vos algorithmes

Vos fichiers devront ressembler à ceci :

ex1.py
"""
Remise en jambe - TP Noté
12/09/2024
Élève 1 : ?
Élève 2 : ?
"""

def ma_fonction(?) -> ?:
    # TODO coder fonction


if __name__ == "__main__":

    # TODO charger fichier si nécessaire

    # exemple = """coller ici l'exemple"""
    # print(ma_fonction(exemple), ma_fonction(exemple) == "mettez ici le résultat attendu pour l'exemple")

    resultat = ma_fonction(?)
    print(resultat)  # résultat obtenu : ?

Avant de commencer

Créez votre espace de travail

La même chose en lignes de commande :

    • Sur le bureau > clic droit > Git Bash here
    • cp -r /u/Eleves/Informatique/TP2 /p/Cours1A/UE0-Info-Remise-en-jambe/
    • Dans Git Bash ➡️ clic droit > Paste ou MAJ + INSER

Ouvrez votre espace de travail dans Visual Studio Code

    • Allez dans le dossier P:/Cours1A/UE0-Info-Remise-en-jambe/
    • Cliquez une seule fois sur TP2
    • Cliquez sur le bouton Sélectionner un dossier
    • Votre dossier apparait à gauche dans l’explorer

1 Exercice 1

Vous allez coder une fonction qui reçoit en entrée une chaine de caractères représentant des lignes d’entiers.

Cette fonction effectue ensuite les actions suivantes :

  • Pour chaque ligne, elle fait la différence entre plus grande et plus petite valeur
  • Somme les résultats obtenus pour chaque ligne
  • Retourne cette somme

1.1 Exemple

somme.txt
4 1 9 5
7 5 3
2 4 4 8
Ligne Min Max Différence
Ligne 1 1 9 8
Ligne 2 3 7 4
Ligne 3 2 8 6
Total 18
Note

Résultat : 18

1.2 Travail à faire

    • Ecrivez en commentaire le résultat obtenu

2 Exercice 2

Votre objectif est de compter le nombre de mots de passe valides entre 153517 et 630395.

Un mot de passe valide vérifie les conditions suivantes :

  • taille : 6 digits
  • les digits sont rangés dans l’ordre croissant
  • il doit y avoir à minima 2 digits de même valeur

2.1 Exemples

  • 334561 : les digits ne sont pas dans l’ordre croissant
  • 456789 : absence de 2 digits de même valeur
  • 224789 : ✔️ ordre croissant avec 2 digits de même valeur
  • 223344 : ✔️ ordre croissant avec au moins 2 digits de même valeur

2.2 Travail à faire

    • vérifie que ces 2 paramètres sont de type int
    • vérifie que ces 2 paramètres contiennent exactement 6 digits
    • retourne le nombre de mots de passe valides compris entre ces 2 paramètres
    • Écrivez en commentaire le résultat obtenu

2.3 Bonus

    • ⚠️ Ici un triplet ou un quadruplet n’est pas une paire

  • 223344 : ✔️
  • 222345 : car 222 n’est pas une paire mais un triplet
  • 222244 : ✔️ grâce à la paire 44

3 Exercice 3

3.1 Objectif

Vous allez recevoir en entrée un fichier contenant une liste d’instructions pour mettre à jour des variables.

Au départ, toutes les variables utilisées sont initialisées à 0.

Pour chaque instruction :

  • Si la condition est valide, vous appliquez la mise à jour
  • Sinon vous passez à l’instruction suivante

3.2 Exemple

Voici ci-dessous une liste d’instructions.

instructions.txt
b inc 4 if a > 1
a inc 1 if b < 2
c dec -5 if a >= 1
c inc -10 if c == 5

Votre programme doit lire et appliquer ces instructions dans l’ordre :

  • b inc 4 if a > 1 : signifie que l’on va incrémenter la variable b de 4 si la variable a est strictement supérieure à 1
    • or initialement a=0 ➡️ condition a > 1 ➡️ la mise à jour de b n’est pas appliquée
  • a inc 1 if b < 2 : a est incrémenté de 1 si b est strictement inférieur à 2
    • b = 0 ➡️ condition b < 2 ✔️ ➡️ a = a + 1 ➡️ a = 1
  • c dec -5 if a >= 1
    • a = 1 ➡️ condition ✔️ ➡️ c = c - (-5) ➡️ a = 1, c = 5
  • c inc -10 if c == 5
    • c = 5 ➡️ condition ✔️ ➡️ c = c + (-10) ➡️ a = 1, c = -5

Vous pourriez également rencontrer les opérateurs <= (inférieur ou égal à) ou != (différent de).

Le résultat final attendu est le produit de :

  • la plus grande valeur d’une variable à la fin (une fois toutes les intructions passées)
  • la plus grande valeur d’une variable rencontrée au cours des instructions
Dans l’exemple
  • La plus grande valeur à la fin est 1 (a).
  • La plus grande valeur au cours des instructions est 5 (c à la 3e étape).

Le résultat attendu est 1 x 5 = 5.

3.3 Travail à faire

    • en entrée : une chaine de caractères
    • en sortie : retourne le résultat numérique
    • Ecrivez en commentaire le résultat obtenu
Source

Exercices inspirés du site AdventOfCode qui propose chaque année en décembre, un problème à résoudre par jour.