Par Madsen Servius
Un projet qui donne vie à la chimie avec du code et des algorithmes !
Imaginez un monde où équilibrer des équations chimiques complexes devient simple.
🔥 Défis relevés : Analyse lexicale, parsing AST, gestion des groupes polyatomiques, et équilibrage stoechiométrique.
🚀 Pour les chimistes, les étudiants et les curieux
- ✅ Équilibrage automatique d'équations simples à complexes.
- 🎯 Gestion des groupes polyatomiques :
(SO4)
,(NO3)
,(PO4)
, etc. - 🧮 Calculs précis avec
numpy
pour des coefficients entiers. - 🚨 Validation robuste : Détecte les entrées invalides.
- 🎨 Sortie claire : Affiche les équations équilibrées en beauté.
- 🐍 Python 3 : Le cœur du projet.
- 📦 NumPy : Pour résoudre les systèmes d'équations linéaires.
- 🧩 Design Patterns : Composite, Factory, Interpreter.
- 🧪 Simulation Chimique : Algorithmes de comptage d'atomes.
Clonez le dépôt :
git clone https://github.com/votre-username/balanceur-chimie.git
cd balanceur-chimie
Entrée :
>>> Entrez une équation : H2 + O2 -> H2O
⚡ Équation équilibrée : 2H2 + O2 → 2H2O
Entrée :
>>> Entrez une équation : C3H8 + O2 -> CO2 + H2O
🔥 Équation équilibrée : C3H8 + 5O2 → 3CO2 + 4H2O
Entrée
>>> Entrez une équation : Al2(SO4)3 + Ca(OH)2 -> Al(OH)3 + CaSO4
🌈 Équation équilibrée : Al2(SO4)3 + 3Ca(OH)2 → 2Al(OH)3 + 3CaSO4
- Lexer : Découpe l'équation en tokens (
H2
,+
,O2
,->
, etc.). - Parser : Construit un AST (Arbre Syntaxique Abstrait) pour représenter la réaction.
- Comptage d'Atomes : Utilise le pattern Composite pour calculer les atomes dans chaque composé.
- Équilibrage : Résout un système linéaire avec
numpy
pour trouver les coefficients.
- Parsing des Formules Complexes :
Fe3(PO4)2
,(NH4)2SO4
, etc. - Gestion des Coefficients Négatifs : Normalisation pour éviter les
-1H2
. - Validation des Charges : En cours pour les ions !
- 🧪 Gestion des Ions :
Fe^3+
,SO4^2-
. - 📊 Interface Graphique : Avec
tkinter
oustreamlit
. - 🌐 API Web : Pour une utilisation en ligne.
Les contributions sont les bienvenues !
- Forkez le projet.
- Créez une branche :
git checkout -b feature/nouvelle-fonctionnalite
. - Commitez :
git commit -m "Ajout d'une fonctionnalité géniale"
. - Pushez :
git push origin feature/nouvelle-fonctionnalite
. - Ouvrez une Pull Request !
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
- À Mendeleïev pour le tableau périodique.
- À la communauté Python pour des outils incroyables.
- À Vous pour avoir lu ce README ! 😊
Prêt à explorer la chimie comme jamais auparavant ? 🚀
👉 Clonez, testez, contribuez ! 👈