🚶 Parcours⚓︎
On propose ici différents parcours permettant d'explorer un algorithme, une méthode ou une structure de données...
Structures conditionnelles
Si c'est vrai il faut faire ceci, sinon cela...
- Autour des booléens : écrire des tests tels que « \(15\) est-il dans la table de \(3\) et de \(5\) ? »
- Années bissextiles : déterminer si une année est bissextile ou non
- Opérateurs booléens : écrire les opérateurs booléens sans utiliser les opérateurs booléens !
- Multiplier sans * : multiplier deux entiers relatifs sans utiliser le symbole
*
- Suite de Syracuse : la fameuse suite \(3n+1\)
- Tous différents : les éléments d'un tableau sont-ils tous distincts (solution en temps quadratique)
- Noircir un texte et Caviarder un texte : effacer les caractères alphabétiques dans un texte
Recherche dans un tableau
On recherche ici les extrema dans un tableau (minimum ou maximum), une valeur ou un indice particulier.
- Maximum : déterminer le maximum dans un tableau
- Indice du minimum : déterminer l'indice du minimum dans un tableau
- Premier minimum local : déterminer l'indice du premier minimum dans un tableau
- Occurrences du minimum : déterminer la valeur et les indices du minimum
- Valeur et indices du max : déterminer la valeur et les indices du maximum
Calcul de moyennes
On calcule ici les moyennes dans un tableau, ou dans des structures plus complexes.
- Moyenne simple : calculer une moyenne
- Moyenne olmpique : calculer une moyenne en excluant la valeur maximale et la valeur minimale
- Moyenne pondérée : calculer une moyenne pondérée
Parcours de tableaux
Ici l'on filtre des tableaux, on vérifie qu'un tableau est trié.
- Écrêtage : remplacer les valeurs extrêmes d'un tableau
- Soleil couchant : déterminer tous les maxima relatifs d'un tableau
- Nombres puis double : rechercher des couples de valeurs consécutives particulières dans un tableau
- Est trié ? : le tableau est-il trié ?
- Liste des différences : comparer deux tableaux
- Gelées : longueur d'un sous-tableau particulier
- Tous différents : les éléments d'un tableau sont-ils tous différents ?
Manipulation de chaines de caractères
- Dentiste : supprimer les voyelles d'une chaine de caractères
- Mots qui se correspondent : comparer deux chaines de caractères
- Renverser une chaine : comme son nom l'indique !
- Collage : former une chaine à partir des éléments d'une liste... réécrire
" ".join(mots)
! - Découpe : découper une chaine à chaque espace... réécrire
chaine.split(' ')
! - Code de César : chiffrer une chaine de caractère à l'aide du code de César
- Texte inclus : recherche d'un motif dans une chaine de caractères
- Texte brut : extraire le contenu textuel d'une source
HTML
Utilisation de dictionnaires
On y parcourt des tables de hachage.
- Anniversaires : déterminer les clés dont les valeurs associées vérifient une certaine condition
- Couleurs : convertir la représentation d'une couleur en hexadécimal à du RGB
- L-système : « calculer » une nouvelle chaine de caractères en respectant les règles contenues dans un dictionnaire
- Top-like : déterminer la clé de valeur maximale
Construction de dictionnaires
- Valeurs extrêmes : extraire le dictionnaire
{"mini": m, "maxi": M}
d'un tableau - Dictionnaire d'occurrences : compter les occurrences des caractères dans une chaine
- Dictionnaire des antécédents : déterminer le dictionnaire « réciproque » d'un dictionnaire :
{valeur: [clés associées]}
Tris
Les classiques !
- Tri par sélection
- Tri à bulles
- Insertion dans une liste triée
- Fusion de listes triées
- Tas min : vérifier qu'un tableau représente un tas minimal
Algorithmes gloutons
- Premier minimum local : déterminer l'indice du premier minimum dans un tableau
Structures de données
On y utilise ou met en œuvre des listes chainées, piles, files, arbres...
- Train en POO : une liste chainée en réalité
- Bien parenthésée 2 : une expression est-elle bien parenthésée ?
- Hauteur et taille d'un arbre : on y représente les arbres sous forme de liste de listes Python
- Hauteur et taille d'un arbre binaire : on y représente les arbres à l'aide de la programmation orientée objet
Récursivité
Peu de mathématiques⚓︎
- Suite de Fibonacci (1) : une fonction très élémentaire, pour des indices inférieurs à 25
- Anagrammes : deux chaines sont-elles des anagrammes ?
- Percolation : écoulement d'eau dans un sol, ou plutôt parcours en profondeur dans une grille
- Pavage possible avec triominos (2) : Construire un pavage, si possible, d'un carré troué avec des triominos
Exercices guidés, plus de mathématiques⚓︎
- Énumération des permutations : les nombres factoriels
- Énumération des chemins à Manhattan : relier deux points en ne se déplaçant que vers la droite ou vers le haut
- Énumération des chemins de Schröder : mouvements ↗ , →→, ou ↘
- Énumération des chemins de Delannoy : mouvements ↗, →, ou ↘
- Énumération des arbres binaires de taille n : les nombres de Catalan
- Énumération des arbres unaires-binaires à n+1 nœuds : les nombres de Motzkin
- Énumération des subdivisions de polygone : Les nombres d'Hipparque
- Suite de Fibonacci (2) : Calcul possible du millionième terme
Exercices non guidés, mais avec indices⚓︎
Programmation orientée objet
Il s'agit ici d'utiliser des classes proposées ou de les écrire.
- Chien en POO : compléter une classe représentant un chien
- Train en POO : compléter une classe représentant un train
- Hauteur et taille d'un arbre binaire : compléter les méthodes
hauteur
ettaille
- Arbre binaire de recherche : compléter les méthodes
insere
,est_present
,affichage_infixe
Graphe
A compléter...
Programmation dynamique
- Communication des acacias : somme maximale dans un tableau sous contrainte
- Plus longues sous-chaines : plus longues sous-chaines communes à deux chaines