Skip to content

Ce projet a pour objectif de renforcer ta logique algorithmique et tes compétences en résolution de problèmes, à raison d’un algorithme par jour pendant 100 jours. 🚀

Notifications You must be signed in to change notification settings

gaye-lamine/100_day_algorithms

Repository files navigation

🚀 100 Jours d'Algorithmes en JavaScript

JavaScript Progress License

"La pratique rend parfait. La répétition crée la maîtrise." — Tony Robbins

🌟 Bienvenue dans cette aventure algorithmique!

Ce projet vous propose un défi stimulant: 100 algorithmes en 100 jours pour maîtriser JavaScript et développer vos compétences en algorithmique. Chaque jour apporte un nouveau défi, organisé par niveau de difficulté progressif.

🏆 Ce que vous allez gagner:

  • 🧠 Compréhension approfondie des structures de données
  • Compétences optimisées en résolution de problèmes
  • 📚 Maîtrise des concepts algorithmiques fondamentaux et avancés
  • 💼 Portfolio impressionnant de solutions élégantes

📅 Programme des 100 jours

🔹 Jours 1-10: Fondamentaux

Jour Algorithme Difficulté
1 🔄 Factorielle (itératif/récursif)
2 📈 Fibonacci (récursif vs dynamique)
3 🔢 Pairs/impairs & somme des chiffres
4 🔤 Palindrome (texte/nombre)
5-6 🔍 Recherche linéaire/binaire ⭐⭐
7-9 📊 Tris basiques (bulles, sélection, insertion) ⭐⭐
10 🧮 PGCD/PPCM (Euclide) ⭐⭐

🔹 Jours 11-20: Récursivité & POO

Jour Algorithme Difficulté
11 📐 Puissance récursive ⭐⭐
12 🔄 Parcours matrice 2D ⭐⭐
13 🔡 Anagrammes ⭐⭐
14 🔤 Compteur de voyelles/consonnes
15 📋 Table de multiplication formatée
16-17 📏 Classes Point/Rectangle ⭐⭐
18 🔢 Crible d'Ératosthène ⭐⭐
19 🔀 Permutations de string ⭐⭐⭐
20 🗼 Tour de Hanoï ⭐⭐⭐

🔹 Jours 21-30: Algorithmes classiques

Jour Algorithme Difficulté
21-22 📊 Tri fusion/rapide ⭐⭐⭐
23 🔍 Recherche matrice triée ⭐⭐
24 🗳️ Algo de Moore (élément majoritaire) ⭐⭐
25 ⚠️ Détection de doublons ⭐⭐
26 📈 Kadane (max subarray) ⭐⭐⭐
27 🔄 Inversion tableau/string ⭐⭐
28 ➗ Algorithme de Horner ⭐⭐
29 🎯 Two-Sum ⭐⭐
30 🧮 Produit sauf soi-même ⭐⭐⭐

🔹 Jours 31-40: Matrices avancées

Jour Algorithme Difficulté
31 🔄 Rotation 90° ⭐⭐
32 🐍 Parcours serpentin ⭐⭐
33 ✖️ Sommes diagonales ⭐⭐
34 🧩 DFS pour recherche de mot ⭐⭐⭐
35 🎲 Jeu de la vie (Conway) ⭐⭐⭐
36 📦 Run-length encoding ⭐⭐
37 ❗ Zéros en factorielle ⭐⭐
38 🌀 Spiral Matrix ⭐⭐⭐
39-40 🪞 Opérations matrices ⭐⭐⭐

🔹 Jours 41-50: Traitement de texte

Jour Algorithme Difficulté
41-42 🔎 KMP/Boyer-Moore ⭐⭐⭐
43 📝 Suffix Array ⭐⭐⭐
44 🔤 Longest Common Prefix ⭐⭐
45 ✨ Plus long palindrome ⭐⭐⭐
46-47 🧬 LCS/LRS ⭐⭐⭐
48 ✏️ Edit Distance ⭐⭐⭐
49 📦 Compression RLE ⭐⭐
50 🌳 Trie (recherche de mot) ⭐⭐⭐

🔹 Jours 51-60: Structures de données

Jour Algorithme Difficulté
51 ⬇️ Stack (pile) ⭐⭐
52 ➡️ Queue avec stacks ⭐⭐⭐
53-54 ⛓️ Listes chaînées ⭐⭐⭐
55 🔍 Détection de boucle (Floyd) ⭐⭐⭐
56 ✂️ Suppression nième nœud ⭐⭐
57 🧩 Merge de listes triées ⭐⭐
58-60 🌳 Arbres binaires (BST) ⭐⭐⭐⭐

🔹 Jours 61-70: Graphes

Jour Algorithme Difficulté
61-62 🔍 DFS/BFS graphes ⭐⭐⭐
63 🔄 Détection de cycle ⭐⭐⭐
64 📊 Tri topologique ⭐⭐⭐
65 ⚖️ Arbre équilibré ⭐⭐⭐
66 👑 Lowest Common Ancestor ⭐⭐⭐
67-70 🗺️ Dijkstra, Bellman-Ford, A* ⭐⭐⭐⭐

🔹 Jours 71-80: Programmation dynamique

Jour Algorithme Difficulté
71-72 📈 Fibonacci/Climbing Stairs ⭐⭐⭐
73-75 🎒 Knapsack/Subset Sum/Coin Change ⭐⭐⭐⭐
76 📏 LIS ⭐⭐⭐
77 ✖️ Matrix Chain Multiplication ⭐⭐⭐⭐
78-80 ⚒️ Problèmes avancés ⭐⭐⭐⭐

🔹 Jours 81-90: Backtracking

Jour Algorithme Difficulté
81 ♕ N-Queens ⭐⭐⭐⭐
82-84 🧩 Sudoku/Rat Maze/Word Search ⭐⭐⭐⭐
85-87 🧬 Subsets/Parentheses/Hamiltonian ⭐⭐⭐⭐
88-90 💰 Algorithmes gloutons ⭐⭐⭐

🔹 Jours 91-100: Défis ultimes

Jour Algorithme Difficulté
91-92 📊 Inversions/Distance stations ⭐⭐⭐⭐
93-94 ⏱️ Merge/Meeting Intervals ⭐⭐⭐
95 🪟 Sliding Window Max ⭐⭐⭐⭐
96 💧 Trapping Rain Water ⭐⭐⭐⭐
97 🏛️ Largest Rectangle ⭐⭐⭐⭐
98-99 📈 Median/K-th Largest ⭐⭐⭐⭐
100 🎯 Problème LeetCode Hard ⭐⭐⭐⭐⭐

🗂️ Architecture du projet

Chaque défi suit cette structure claire et cohérente:

/day01-factorial/
├── README.md  # Énoncé + explications théoriques
├── solution.js  # Solution JavaScript moderne
└── test.js  # Batterie de tests complets

Convention de nommage: dayXX-nom-algorithme (ex: day15-dijkstra)

✨ Règles d'or

Principe Description
🔹 Pureté Pure Fonctions sans effets secondaires
🔹 Performance Time Complexité algorithmique maîtrisée
🔹 Élégance Style Code lisible et bien structuré
🔹 Robustesse Tests Tests complets avec cas limites

🚀 Lancez-vous !

# Cloner le dépôt
git clone https://github.com/gaye-lamine/100-days-algorithms-js.git

# Naviguer dans le projet
cd 100-days-algorithms-js

# Installer les dépendances
npm install  # Pour les tests unitaires

💡 Conseils

  • Pratiquez régulièrement: Consacrez un temps défini chaque jour
  • Écrivez avant de coder: Planifiez votre approche sur papier
  • Testez minutieusement: Couvrez les cas normaux et limites
  • Analysez la complexité: Notez la performance temporelle et spatiale
  • Complétez avec LeetCode ou Codewars pour booster votre apprentissage!

📝 Progression

Suivez votre avancement en cochant les cases:

  • Jours 1-10: Fondamentaux
  • Jours 11-20: Récursivité & POO
  • Jours 21-30: Algorithmes classiques
  • Jours 31-40: Matrices avancées
  • Jours 41-50: Traitement de texte
  • Jours 51-60: Structures de données
  • Jours 61-70: Graphes
  • Jours 71-80: Programmation dynamique
  • Jours 81-90: Backtracking
  • Jours 91-100: Défis ultimes

📄 License MIT • Créé avec 💙 par Lamine Gaye

About

Ce projet a pour objectif de renforcer ta logique algorithmique et tes compétences en résolution de problèmes, à raison d’un algorithme par jour pendant 100 jours. 🚀

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published