🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_217cvmn_217.py
Version 1.0.0
Date de création 26/02/2026
Auteur / Demandeur IA Généré (Gemini)
Objectif principal Simuler et animer le Jeu de la Vie de Conway sur une grille 2D toroïdale.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Ce script implémente un automate cellulaire classique (Le Jeu de la Vie). Il génère une grille de cellules (vivantes ou mortes), applique les règles de survie et de naissance de Conway à chaque génération, et affiche le résultat sous forme d’une animation fluide en noir et blanc.
📌 Problème résolu
Il permet de visualiser des systèmes complexes émergents à partir de règles simples. L’utilisation de la convolution vectorisée permet de simuler de grandes grilles sans perte de performance significative par rapport à une approche par boucles imbriquées.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.8+ (pour le support de NumPy/SciPy récent)
OS cible Windows / Linux / MacOS
Mode d’exécution GUI (Animation Matplotlib)
📦 Dépendances / Librairies
Librairies externes (pip install)
numpy : Gestion des matrices et calculs numériques.
matplotlib : Moteur de visualisation et d’animation.
scipy : Utilisation de convolve2d pour le calcul des voisins.
📥 ENTRÉES (INPUTS)
📂 Paramètres de configuration (dans le code)
# Nom Type Obligatoire Description Exemple
1 size int ✅ Oui Dimension de la grille (N x N) 100
2 initial_density float ✅ Oui Ratio de cellules vivantes au départ 0.15
3 generations int ✅ Oui Nombre de cycles de simulation 200
📤 SORTIES (OUTPUTS)
📂 Fichiers / Données en sortie
Type Chemin / Format Description
Fenêtre Graphique Matplotlib Plot Animation interactive en temps réel.
Console Text Logs de démarrage et de fin de simulation.
🧱 STRUCTURE DU SCRIPT
script_217cvmn_217.py
│
├── 📌 IMPORTS (numpy, matplotlib, scipy)
├── 📌 CLASSE GameOfLife
│ ├── __init__ → Initialise la grille et ajoute un « Glider ».
│ └── update_rules() → Calcule la génération suivante via convolution.
├── 📌 FONCTION run_simulation()
│ └── animate() → Met à jour l’image pour chaque frame.
└── 📌 MAIN (Point d’entrée principal)
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
update_rules() Aucun np.ndarray Applique les 4 règles de Conway via masques booléens.
run_simulation(gol, gen) Objet GoL, int None Configure FuncAnimation et affiche la fenêtre.
animate(i) int (frame) list Fonction interne mettant à jour les données de l’image.
🔄 LOGIQUE / ALGORITHME
Initialisation : Création d’une matrice binaire aléatoire. Insertion manuelle d’un motif « Glider » (planeur).
Calcul du voisinage : Utilisation d’un noyau (kernel) 3×3 pour sommer les 8 voisins de chaque cellule.
Note : Le paramètre boundary=’wrap’ transforme la grille en tore (les bords communiquent).
Application des règles :
Si cellule vivante : survit si elle a 2 ou 3 voisins.
Si cellule morte : devient vivante si elle a exactement 3 voisins.
Mise à jour : Remplacement de l’ancienne grille par la nouvelle et rendu graphique.
🚨 GESTION DES ERREURS
Volumétrie : Si size est trop petit (<10), l’insertion du Glider pourrait lever une erreur d’index (géré par un if size >= 10).
Performance : Si la taille dépasse 500×500, l’animation peut saccader selon la puissance CPU/GPU.
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 : La grille est cyclique (tore) ; un objet sortant par la droite réapparaît à gauche.
Règle 2 : Les mises à jour sont synchrones (toutes les cellules changent d’état en même temps).
📝 EXEMPLE D’UTILISATION
▶️ Lancement en ligne de commande
Bash
python script_217cvmn_217.py
📋 Sortie attendue (Console)
Plaintext
Lancement de la simulation du Jeu de la Vie (Taille: 100×100, Générations: 200)
Simulation terminée.
📊 PERFORMANCES ATTENDUES
Temps d’exécution : ~50ms par génération pour une grille 100×100.
Consommation mémoire : Très faible (< 100 Mo).




Avis
Il n’y a pas encore d’avis.