Défis

Identifiez-vous pour soumettre un défi

Pour obtenir les points d’un défi :

Défi P_3_1 : De Fahrenheit à Celsuis (1 pt)
Écrire un programme en python qui demande à l'utilisateur d'entrer une valeur de température en degrés Fahrenheit puis lui affiche la conversion en degré Celsius sous la forme d'une phrase.
Donnée : `°F=(°Cxx9/5)+32` Il faut inverser l'équation !
Défi P_3_2 : De pouce à cm (1 pt)
Écrire un script python qui vous demande la diagonale de votre écran d’ordinateur en pouce et vous renvoie sa diagonale en centimètre en affichant le calcul. Exemple de résultat attendu :

Quelle est la diagonale (en pouce) de votre écran ? 10
Une diagonale de 10’’ correspond à 25,4 cm.
Défi P_3_3 : Étoile rouge (2 pts)
Écrire un programme en python qui dessine, grâce au module turtle, une étoile à cinq branches identiques à celle représentée ci-contre. L'utilisateur doit pouvoir choisir sa taille en pixel et sa couleur en anglais. La fenêtre d'affichage doit pouvoir être fermée d'un simple clic.
Défi P_3_4 : Cube coloré en perspective (3 pts)
Écrire un script python qui dessine un cube de 100 pixels de côté en perspective à l’aide du module turtle. Le programme doit demander la couleur de la face avant et l’assombrir pour les deux autres faces visibles. La fenêtre d’affichage doit pouvoir être fermée d’un simple clic.
Défi P_3_5 : Admis avec mention (2 pts)
Écrire un programme en python qui demande la moyenne obtenue au bac, informe si on est admis (note ≥ 10) et précise la mention :
  • entre 10 inclus et 12 exclu : « Sans mention »
  • entre 12 inclus et 14 exclu : « Assez bien »
  • entre 14 inclus et 16 exclu : « Bien »
  • entre 16 inclus et 18 exclu : « Très bien »
  • entre 18 inclus et 20 inclus : « Très bien, félicitations »
Défi P_3_6 : Année bissextile (3 pts)
Pour qu’une année soit bissextile, elle doit remplir certaines conditions : l’année est bissextile si elle est un multiple de 4 mais pas un multiple de 100. Toutefois, toutes les années multiples de 400 font exception et sont bissextiles. Écrire en python la fonction est_bissextile(a) qui prend en paramètre un entier correspondant à l'année et retourne le booléen True si l’année est bissextile et False sinon.
Exemples : Années bissextiles : 2012, 2000 Années non bissextiles : 2013, 2030, 2100
Défi P_3_7 : Calcul mental (4 pts)
Écrire un programme en python qui demande à l'utilisateur de réaliser une addition, une soustraction ou une multiplication entre deux entiers aléatoires compris chacun entre 1 et 10 inclus. Si l’utilisateur donne la bonne réponse, le programme doit tracer un smiley souriant avec le module turtle, sinon un smiley triste. Vos smileys doivent être au moins aussi beaux que ceux ci-contre.
La fenêtre d’affichage doit pouvoir être fermée d’un simple clic.
Défi P_3_8 : Qualité d’un triangle (2 pts)
Écrire un programme en python qui demande la longueur des trois côtés a, b, c d'un triangle et répond par la chaîne de caractère "isocèlé" , "equilatéral", "rectangle" ou "quelconque" selon la nature du triangle.
Défi P_3_9 : Année bissextile en une ligne (4 pts)
Réaliser le avec une seule ligne de code dans la fonction.
Attention : Le point-virgule n'est pas autorisé puisque il est assimilable à un saut de ligne.
Défi P_3_10 : Factorielle (2 pts)
Écrire un programme en python qui demande un entier à l’utilisateur et renvoie son factoriel.
L’utilisation d’une fonction prédéfinie est interdite. Vous devez utiliser une structure en boucle.
Défi P_3_11 : Jeu du plus ou moins (3 pts)
Écrire un script python qui choisit aléatoirement un entier entre 1 et 20 sans l'afficher. Le script propose ensuite à l'utilisateur de le deviner.
À chaque proposition de l'utilisateur, il indique si l'entier à deviner est supérieure ou inférieure.
Quand l'entier est trouvé, le programme indique le nombre d'essais ainsi que la valeur qui a été trouvée.
À tout moment si l'utilisateur entre la lettre « q », le programme doit le remercier d'avoir joué et indiquer quel était l'entier à trouver avant de s'arrêter.
Défi P_3_12 : Générateur d’étoiles (4 pts)
Écrire un script python qui demande à l’utilisateur d’entrer un nombre entier 𝑛. Il tracera alors avec le module turtle n étoiles (similaires au défi 3.3) de position, d’orientation et de couleur aléatoire. La position sera incluse dans un espace compris entre -100 et +100 pixels de hauteur et de largeur. La taille des étoiles devra être comprise entre 10 et 40 pixels. Le nombre de couleurs possibles doit être supérieur à 5. Une fois le dessin terminer le script s’arrête et l’utilisateur doit pouvoir fermer la fenêtre de dessin en cliquant dessus.
Exemple : Voici ce que l’on pourrait obtenir avec les entrées : 6, 15 ou 50
Défi P_3_13 : Carré incliné (1 pt)
Écrire en python la fonction carre(n, alpha) qui trace sous turtle un carré de n pixels de côté incliné avec un angle alpha.
Si la fonction est appelée sans argument, par défaut il faut tracer un carré de 100 pixels de côté, incliné à 45°.
La fenêtre d’affichage doit pouvoir être fermée d’un simple clic.
Défi P_3_14 : Puissance (2 pts)
Écrire en python la fonction récursive puissance(x, n) qui calcule x à la puissance n de manière récursive.
Défi P_3_15 : Triangle étoilé (2 pts)
Écrire en python la fonction triangle_etoiles(n) prenant en argument un nombre entier n impair et affichant, dans la console, un triangle ayant une base de n étoiles selon les modèles représentés ci-dessous.
Défi P_3_16 : Fibonacci (2 pts)
La suite de Fibonacci s’obtient en additionnant les deux termes précédents : 0 ; 1 ; 1 ; 2 ; 3 ; 5 ; 8 ; 13 ; …
Le deux premiers termes (de rang 0 et 1) vaut fib(0) = 0, fib(1) = 1 … .
Écrire en python la fonction récursive fibonacci(n) qui renvoie le terme de rang n dans la suite de Fibonacci.
Défi P_3_17 : Equation du second dégré (3 pts)
Une équation du second degré peut s’écrire sous la forme : `ax²+bx+c=0`.
Rechercher dans les cours de math les formules des racines et créer en python la fonction eq2(a, b, c), affichant l’équation ainsi que ses deux racines réelles lorsqu’elles existent.
Dans le cas où il existe une racine unique, la fonction devra l'indiquer et l’afficher.
Dans le cas où il n’y en a pas de racine réelle, la fonction devra l'indiquer.
Défi P_3_18 : Flocon de Von Koch (8 pts)
On définit une fractale en mathématique comme un objet construit à partir d’une série de règles qui se répètent jusqu’à un certain niveau d’itération. En physique, un miroir placé devant un autre miroir réalise une image fractale. Le flocon de Koch est un exemple de fractale et peut être obtenu à partir d’un segment, de façon récursive :
  • Au premier tiers du segment, tourner de 60° à gauche et avancer d’un tiers de la longueur.
  • Tourner de 120° à droite et avancer d’un tiers de la longueur.
  • Tourner de 60° à gauche et avancer d’un tiers de la longueur.
  • On répète les trois actions précédentes jusqu’au niveau de profondeur n souhaité.
Écrire un script python contenant la fonction flocon(n) permettant de tracer sous turtle un flocon de Koch de niveau n ayant toujours la même taille (300 pixels) quelque soit le niveau demandé. La fenêtre d’affichage doit pouvoir être fermée d’un simple clic.
  • Étape 1 : Écrire une fonction qui trace sous turtle le niveau 1 de la fractale, avec des segments de 10px de longueur.
  • Étape 2 : Modifier cette fonction afin qu’elle permette d’obtenir le niveau 2 de la fractale.
  • Étape 3 : Modifier le script afin qu’il permette d’obtenir n’importe quel niveau de la fractale, défini en paramètre.
  • Étape 4 : En réalisant la fractale précédente sur les trois côtés d’un triangle équilatéral, on obtient le flocon de Koch. Cela revient à exécuter la même fonction sur trois segments inclinés de 120° les uns par rapport aux autres :

Par curiosité : Découvrir le Flocon de Koch en 3D dans cette vidéo de Micmaths

Défi P_3_19 : Sapin de Noël (3 pts)
Écrire en python la fonction sapin(h, b) permettant de dessiner en Art ASCII un sapin de h lignes de haut avec b boules réparties au hasard.
Le tronc doit toujours être d'environ 1/4 de la hauteur du sapin.
Exemple : Les appels sapin(11, 6), sapin(5, 56) et sapin(9, 4) doivent dessiner dans la console python :

       ^
      /"\
     /"'o\                              ^
    /"'"'"\                            /"\
   /"o"'"'"\                          /"'o\
  /"'"'"'o'"\                        /"'"'"\ 
 /"'"o"o"'"'"\           ^          /"o"'"'"\
/"'"'"'"'"'o'"\         /o\        /"'"'"'o'"\
      |||              /ooo\      /"'"'"'o'"'"\
      |||             /ooooo\          |||
      |||               |||            |||
Défi P_4_1 : Code César Simplifié (2 pts)
Écrire en python une fonction cesar_simple(mot, n) qui prend en argument un mot, uniquement en majuscule sans lettre accentuée, ni espace ou caractère spécial, et retourne ce mot chiffré selon le Code César avec pour clé l'entier n donné en argument.

Exemples :
cesar_simple('EUROPE', 1) doit répondre FVSPQF
cesar_simple('ZEBRE', 5) doit répondre EJGWJ
Défi P_4_2 : Code César (4 pts)
Écrire en python la fonction cesar(phrase, n) qui prend en argument une phrase et un entier et retourne cette phrase chiffrée selon le Code César avec la clé donnée en argument. La phrase pourra comporter tous les caractères codés en latin-1 selon l'odre de cet alphabet :
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
Attention, le premier caractère est un espace !
Exemple de résultat :
cesar("Science sans conscience n\'est que ruine de l\'âme.", 3) doit renvoyer "Vflhqfh#vdqv#frqvflhqfh#q*hvw#txh#uxlqh#gh#o*åph1"
Défi P_4_3 : Déchiffrement d'un Code César (2 pts)
Écrire en python la fonction dechiffrer_cesar(phrase, n) qui déchiffre une phrase qui a été chiffrée avec la clé n donnée en argument par la fonction du défi précédent P_4_2.

Exemple d'appel :
dechiffrer_cesar(".P{zzq¨9y{u,£z,|{uz¢,p3m||£u8,q¢,vq,¡{£xô¤q~mu,xq,y{zpq:.,M~otuyôpq", 12)'

Remarque : On parle de déchiffrement quand on possède la clé de chiffrement et de décryptage lorsqu'on ne la connaît pas.
Défi P_4_4 : Analyse fréquentielle (2 pts)
Écrire en python la fonction analyse_freq(texte)qui dénombre chaque caractère d’un texte en ignorant la casse, les accents et la ponctuation. Cette fonction prend un seul argument de type chaîne de caractère et renvoi un dictionnaire. Chaque clé du dictionnaire est un caractère minuscule et sa valeur associée est le nombre d’occurrence de ce caractère dans le texte.
La casse n’est pas discriminante : ainsi "a" et "A" compteront pour la même lettre "a".
Les accents ne sont pas discriminants : ainsi "e", "é" ou "É" compteront pour la même lettre "e".

Exemple d'appel :
  • analyse_freq('Alphabet !') doit retourner le dictionnaire {'a': 2, 'l': 1, 'p': 1, 'h': 1, 'b': 1, 'e': 1, 't': 1}
  • Allitération en "s" : analyse_freq('Qui sont ces serpents qui sifflent sur vos têtes ?') doit répondre entre autres qu'il y a 8 "s".
  • Extrait du roman de 139 pages de Georges Perec, écrit sans la lettre "e" pourtant la plus fréquente en français :
    Son pouls battait trop fort. Il avait chaud. Il ouvrit son vasistas, scruta la nuit. Il faisait doux. Un bruit indistinct montait du faubourg. 
    Un carillon, plus lourd qu'un glas, plus sourd qu'un tocsin, plus profond qu'un bourdon, non loin, sonna trois coups.
    Du canal Saint-Martin, un clapotis plaintif signalait un chaland qui passait.
Défi P_4_5 : Décryptage d'un Code César (6 pts)
Écrire en python la fonction decrypter_cesar(phrase) qui décrypte une phrase donnée en argument qui a été chiffrée par un programme du défi P_4_2 sans connaître la clé qui a été utilisée. Pour réussir ce défi, vous pouvez consulter l’article de Wikipédia sur l’analyse fréquentielle.

Exemple d'appel :
decrypter_cesar("q¬;¢£²;²£¡±£³²;¢´;~®¬¦£´±;£²³;¢£;¢£«}¬¢£±;~£}´¡®´¯;ü;²®BI«&«£;£³;¯£´;}´·;}´³±£²J")

Remarque : On parle de déchiffrement quand on possède la clé de chiffrement et de décryptage lorsqu'on ne la connaît pas.
Défi P_4_6 : Jeu du Scrabble - Calcul du score v1 (4 pts)
Au scrabble, le score d’un mot dépend des lettres qui le compose et de sa position sur le plateau de jeu. Certaines cases doublent ou triplent le score de la lettre et d’autres doublent ou triplent le score total du mot. Voir les règles du jeu.
Écrire en python la fonction score(mot, coord) qui retourne le score total d'un mot (entier) et qui prend pour argument :
  • le mot choisi par le joueur : chaîne de caractères,
  • les coordonnées des lettres sur le plateau : liste(tuples)
    Exemple : [(0, 0), (0, 1), (0, 2)] pour un mot de trois lettres écrit horizontalement tout en haut à gauche du plateau de jeu. Attention l’origine est en haut à gauche !
Exemple : score('FIOLE', [(7,7), (7,8), (7,9), (7,10), (7,11)]) doit retourner l'entier `(4+1+1+1+1xx2)xx2 = 18` car la lettre E compte double grâce à la case (7, 11) et le mot entier compte double grâce à la case (7, 7).
Défi P_4_7 : Jeu du Scrabble - Calcul du score v2 (3 pts)
Reprendre, adapter et compléter la fonction score du défi précédent (P_4_6) qui devra désormais prendre comme argument :
  • les lettres disponibles du joueur : chaine de caractère. Exemple : "ALIPN"
  • le mot choisi par le joueur : chaîne de caractère
  • les coordonnées de la première lettre (x, y) et l’orientation du mot sur le plateau (0 pour horizontal et 1 pour vertical) : tuple de 3 valeurs. Exemple : (0, 0, 0) pour un mot horizontal tout en haut à gauche du plateau de jeu.
Si les lettres disponibles ne permettent pas de constituer le mot, la fonction doit retourner un tuple avec l'entier -1 et une phrase explicative pour le joueur (chaîne de caractère) qui indique les lettres qui lui manquent.
Si les coordonnées conduisent à sortir du plateau de jeu, la fonction doit retourner un tuple avec l'entier -1 et une phrase explicative pour le joueur (chaîne de caractère).
Sinon, la fonction renvoie un tuple avec le score obtenu et une phrase à l'adresse du joueur.
Exemples :
score("STOTIPN", "SPIN", (0, 0, 1)) doit retourner le tuple (21, "votre phrase explicative")
score("ABOEQINES", "BANQUISE", (5, 5, 0)) doit retourner le tuple (-1, "votre phrase explicative") car il manque une lettre.
score("UOSRND", "SOURD", (12, 9, 0)) doit retourner le tuple (-1, "votre phrase explicative") car le mot sort du plateau.
Défi P_6_1 : Recherche dans un csv (3 pts)
people.csv contient des informations sur 20 000 personnes.
Écrire la fonction compter(table, critere) qui permet d'obtenir le nombre d'enregistrements qui dans un fichier CSV remplissent les critères demandés.
  • table : est le chemin du fichier csv utilisé
  • critere : est un dictionnaire associant les attributs (cle) aux valeurs recherchées. Exemple : {"job": "Baker"} Ce dictionnaire peut contenir un ou plusieurs critères de recherche.
Défi P_6_2 : Fusion des tables 'villes' et 'aires_urbaines' (3 pts)
75villes.csv contient les 75 plus grandes villes françaises en termes de population. Ses attributs sont 'nom' et 'population'.
50aires_urbaines.csv contient les 50 plus grandes aires urbaines en termes de populations. Ses attributs sont 'ville_centre', 'population_aire_urbaine’ et 'nombre_communes'.
Réaliser un script python avec la fonction jointure_interne(tabA, tabB, tabRes) qui fusionne deux tables A et B par une jointure interne.
Les arguments de la fonction sont les chemins relatifs des fichiers csv : tabA et tabB contiennent les tables à fusionner et tabRes est le fichier qui contiendra la table résultat de la jointure interne.
La fonction doit créer ce troisième fichier contenant la table demandée avec les attributs :
  • ville_centre
  • population
  • population_aire_urbaine
  • nombre_communes

Exemple d'appel :jointure_interne('50aires_urbaines.csv', '75villes.csv', 'resultats.csv')
Défi P_7_1 : CSS Lorem Ipsum (8 pts)
Récupérer le fichier lorem-ipsum.html (qui ne doit pas être modifié) et écrire un fichier CSS afin que cette page se présente comme le modèle modele.jpg.
Faites bien attention au moindre détail :
  • arrondie du titre,
  • soulignage des boutons de navigation,
  • position de l'image,
  • traitement différent des liens dans la barre de navigation (avec mise en forme au survol du curseur) et dans le texte, ...
Le fichier a déposé doit repecter la nomenclature defi_P_7_1.css.
Défi P_7_2 : HTML Olympiades (8 pts)
Vous devez écrire et déposer le fichier defi_P_7_2.html permettant d'obtenir le résultat suivant modele_P72.jpg.
Pour cela vous devez récupérer les fichiers suivants :
  • styleP72.css - Fichier CSS non-modifiable (à placer dans le même dossier que defi_P_7_2.html).
  • README.txt - Texte à inclure dans votre fichier ainsi que quelques explications.
  • images.zip - Dossier contenant toutes les images inclues dans la page à créer (dossier images à placer dans le même dossier que defi_P_7_2.html).
Défi P_8_1 : Site Marathon en HTML + JS (5 pts)
Créer un site internet permettant de s'inscrire au Marathon de TOULOUSE 2022 en remplissant un formulaire demandant le nom, le prénom, une adresse courrielle et un bouton d’envoi.
Les données devront être transmises par la méthode GET et l'utilisateur devra recevoir la réponse suivante en remplaçant chaque champ repéré par des crochets par leurs valeurs :
Bonjour [Prénom] [NOM],
Votre inscription au Marathon de Toulouse 2020 a bien été reçue aujourd’hui à [..h..].
Vous recevrez toutes les informations nécessaires pour réaliser votre course dans les meilleures conditions à l’adresse : [adresse email].
Bien cordialement,
[Logo du marathon de Toulouse]

Pour réaliser ce défi, vous devez écrire deux fichiers : formulaire.html qui contiendra le formulaire et reponse.html pour la réponse.
Vous ne devez utiliser que du langage HTML et JAVASCRIPT.
Vos fichiers devront être regroupés dans un seul fichier compréssé au format .zip et respectant la nomenclature habituelle des défis.
Défi P_8_2 : Site Marathon en HTML + PHP (10 pts)
Réaliser le défi P_8_1 en un seul fichier .php. Vous ne devez utiliser que du langage HTML et PHP.
Le fichier a déposé doit repecter la nomenclature habituelle avec l'extension .php.
Défi P_8_3 : Site Marathon en HTML + PHP avec validation des données (8 pts)
Réaliser le défi P_8_1 en un seul fichier .php en y ajoutant du code javascript permettant de valider et mettre en forme les données que l'utilisateur a entré dans le formulaire avant leur envoi et qui donne le cas échéant les indications nécessaire à l'utilisateur pour remplir correctement le formulaire.
  • Le nom et le prénom doivent être composé uniquement de caractères alphabétiques (pas de caractère spécial ou de chiffre).
  • Ils seront automatiquement mit totalement en majuscules pour le NOM et en majuscule seulement pour la première lettre pour le Prénom.
  • L'adresse courrielle doit être une adresse valide.
Il doit être impossible d'envoyer le formulaire si les données ne sont pas valides.
Le fichier à déposer doit repecter la nomenclature habituelle avec l'extension .php.
Défi P_8_4 : Site Marathon Complet (5 pts)
Réaliser le défi P_8_1 en trois fichiers :
  • inscription.php permettant de remplir le formulaire et d'envoyer la réponse.
  • validation.js assurant la validation des données du formulaire et leur mise en forme avant leur envoi. Il doit être impossible d'envoyer le formulaire si les données ne sont pas valides.
  • style.css assurant une belle interface graphique pour l'utilisateur.
Vos fichiers devront être regroupés dans une seule archive compréssée au format .zip et respectant la nomenclature habituelle des défis.
Défi P_10_1 : IP en binaire (2 pts)
Une adresse IP est une suite de quatre nombres décimaux allant de 0 à 255 séparé par un point : X.X.X.X.
Écrire en python la fonction ip_to_bin(ip) qui accepte en argument une chaîne de caractère représentant l’adresse IP (exemple : "192.168.0.1") à convertir et qui renvoie sa conversion en binaire sous la forme d'une chaîne de caractères.
Exemple : L'appel ip_to_bin("255.255.0.0") renvoie la valeur "11111111111111110000000000000000".
Défi P_10_2 : IP du sous-réseau (4 pts)
Une adresse IP contient l’identifiant réseau et l’identifiant machine. Toute machine connaît son IP (ex : 192.168.1.1) et son masque de sous réseau (ex : 255.255.255.0). Pour déterminer l’identifiant réseau, il faut réaliser un ET logique entre l’IP de la machine (en binaire) et le masque de sous réseau (en binaire).
Écrire en python la fonction sous_reseau(ip, masque) qui accepte en argument l’IP de la machine (chaîne de caractère) et le masque de sous-réseau (chaîne de caractère) et renvoie l’identifiant réseau (chaîne de caractère).
Exemple : sous_reseau("192.168.1.1", "255.255.255.0") doit retourner "192.168.1.0".
Défi P_12_1 : Conversion python vers javascript (10 pts)
Pour convertir un programme simple écrit en python vers le javascript, on peut suivre les étapes suivantes :
  • remplacer le mot clé def par function,
  • remplacer les deux points qui indiquent le début d'un bloc par une accolade ouvrante,
  • ajouter une accolade fermante à la fin d'un bloc,
  • encadrer les conditions des instructions if et while par des parenthèses,
  • ajouter des points-virgules à la fin de chaque insruction,
  • remplacer le mot-clé not par !,
  • remplacer le mot-clé and par &&,
  • remplacer le mot-clé or par ||,
  • remplacer le mot-clé True par true,
  • remplacer le mot-clé False par false,
  • remplacer le mot-clé elif par else if,
  • remplacer le symbole de commantaire # par //,
  • remplacer les triples guillements """...""" par /* ... */,

Créer une fonction py2js(texte) en python qui prend une chaîne de caractère correspondant à du code python et qui retourne une chaîne de caractère correspondant à sa conversion en langage javascript.

Remarques : Le caractère saut de ligne est "\n" et les indentations sont faites de quatre espaces.

Défi P_14_1 : Combien de bougies ? (2 pts)
Combien de bougies a soufflé une personne ayant 36 ans au cours de tous ses anniversaires ?
Écrire en python la fonction bougies(n) qui retourne un entier correspondant au nombre de bougies soufflées par une personne ayant n ans. L'algorithme utilisé doit avoir une complexité en `O(1)`.
Défi T_1_0 : Tours de Hanoï - Nombre de coups (4 pts)
Se renseigner sur le jeu des «Tours de Hanoï». Vous trouverez un simulateur de ce jeu sur : championmath.free.fr.
Créer la fonction hanoi_minimum(n) en python qui donne le nombre minimum de déplacements nécessaires pour déplacer la tour quelque soit le nombre n de disque à déplacer.
Défi T_1_1 : Tours de Hanoï - Résolution (8 pts)
Se renseigner sur le jeu des «Tours de Hanoï». Vous trouverez un simulateur de ce jeu sur : championmath.free.fr.
Créer la fonction resoudre_hanoi(n) en python qui donne la suite des étapes à effectuer pour résoudre ce problème quelque soit le nombre n de disque à déplacer.
Exemples des instructions que la fonction doit afficher pour l'utilisateur :
  • Déplacer un disque de la tour n°1 à la tour n°3.
  • Déplacer un disque de la tour n°1 à la tour n°2.
  • etc ...
Défi T_1_2 : Jeu de la bataille (6 pts)
Implémenter en python le jeu de la bataille d'après les règles détaillées sur Wikipédia.
Votre jeu devra :
  • définir une classe Carte ayant les attributs hauteur et couleur,
  • ranger ces cartes dans une liste jeu,
  • mélanger le jeu avec les fonction du module random,
  • les distribuer aux deux joueurs (listes joueur1 et joueur2),
  • et surtout programmer le déroulement du jeu pour l'afficher à l'écran.
Défi T_2_1 : Vérifier un ABR (4 pts)
Rechercher puis implémenter en python une méthode test(self) qui vérifie que l'arbre est bien un ABR. Vous devrez partir de la classe Arbre() construite au cours du chapitre.
Voir le cours associé
Défi T_2_2 : Supprimer une feuille d'un ABR (8 pts)
Implémenter en python la méthode supprimer(self, x) permettant de supprimer la feuille de valeur x si elle existe, dans un arbre binaire de recherche. Si la feuille n'existe pas, la méthode ne doit rien faire (pas d'erreur). Vous devrez partir de la classe Arbre() construite au cours du chapitre.
Voir le cours associé
Défi T_2_3 : Équilibrer un ABR (6 pts)
Rechercher puis implémenter en python la méthode equilibrer(self) permettant d'équilibrer un arbre binaire de recherche. Vous devrez partir de la classe Arbre() construite au cours du chapitre.
Voir le cours associé
Défi T_5_1 : Génération de requêtes SQL (8 pts)
D'après l'exercice 4 du chapitre 5 sur le langage SQL.
Écrire un programme en python qui génére les requêtes SQL permettant de remplir les trois tables à partir des fichiers CSV fournis.

Données : EMPLOYES.csv SUCCURSALES.csv FOURNISSEURS.csv

Défi T_6_1 : Algorithme du tourniquet (2 pts)
Implémenter en python l'algorithme du tourniquet en créant la fonction ord_tourniquet(liste) qui prend en paramètre une liste de processus telle que celle ci-dessous et qui renvoie la liste ordonnancée des instructions selon l'algorithme du tourniquet.

liste_processus = [
    ["P1_1", "P1_2", "P1_3", "P1_4", "P1_5"], # Instructions du processus 1
    ["P2_1", "P2_2"], # Instructions du processus 2
    ["P3_1", "P3_2", "P3_3", "P3_4"] ] # Instructions du processus 3
Défi T_6_2 : Algorithme SJB (2 pts)
Implémenter en python l'algorithme SJB en créant la fonction ord_SJB(liste) qui prend en paramètre une liste de processus telle que celle ci-dessous et qui renvoie la liste ordonnancée des instructions selon l'algorithme SJB.

liste_processus = [
["P1_1", "P1_2", "P1_3", "P1_4", "P1_5"], # Instructions du processus 1
["P2_1", "P2_2"], # Instructions du processus 2
["P3_1", "P3_2", "P3_3", "P3_4"] ] # Instructions du processus 3
Défi T_9_1 : Machine de Turing (10 pts)
Implémenter en python une classe Turing modélisant une machine de Turing pouvant fonctionner.

Conseils :
  • Le ruban peut être modélisé par une liste infinie dans les 2 sens, c'est-à-dire pouvant être étendue au fur et à mesure des déplacements de la tête de lecture.
  • On peut s'inspirer de la classe Graphe pour la partie automate.