script_288cvmn_288.py

49,00 

Simuler et animer visuellement le « Jeu de la Vie » de Conway en utilisant la vectorisation NumPy pour optimiser les performances.

UGS : script_288cvmn_288.py Catégorie : Étiquette :

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script script_288cvmn_288.py

Version 1.0.0

Date de création 07/03/2026

Auteur / Demandeur IA Générée (Gemini)

Objectif principal Simuler et animer visuellement le « Jeu de la Vie » de Conway en utilisant la vectorisation NumPy pour optimiser les performances.

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script génère un automate cellulaire bidimensionnel où des cellules naissent, survivent ou meurent selon le nombre de voisins adjacents. Il utilise une approche mathématique matricielle pour calculer instantanément l’état suivant de milliers de cellules et affiche le résultat sous forme d’une animation fluide et colorée.

📌 Problème résolu

Il permet de modéliser des systèmes complexes et des comportements émergents avec une grande efficacité computationnelle (évitant les boucles for lentes grâce à numpy.roll).

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.8+

OS cible Tous (Windows / Linux / MacOS)

Mode d’exécution Interface Graphique (Matplotlib)

📦 Dépendances / Librairies

# Librairies externes (pip install)

numpy (Calcul matriciel)

matplotlib (Visualisation et animation)

📥 ENTRÉES (INPUTS)

# Nom Type Obligatoire Description Exemple

1 size int ✅ Oui Taille de la grille (N x N) 100

2 density float ✅ Oui Probabilité initiale qu’une cellule soit vivante 0.15

📂 Fichiers / Sources de données en entrée

Génération interne : Le script utilise np.random.choice pour créer son propre état initial.

📤 SORTIES (OUTPUTS)

# Nom Type Description Exemple

1 grid ndarray Matrice binaire représentant l’état des cellules [[0, 1, …]]

2 ani Animation Flux visuel mis à jour en temps réel Fenêtre interactive

🧱 STRUCTURE DU SCRIPT

script_288cvmn_288.py

├── 📌 IMPORTS (numpy, matplotlib)

├── 📌 CLASSE GameOfLife

│ ├── __init__() → Initialisation de la grille aléatoire

│ └── update() → Calcul de la génération N+1 (Vectorisé)

├── 📌 PARAMÉTRAGE & INITIALISATION (Instanciation de la simulation)

├── 📌 FONCTION animate() → Mise à jour de l’image pour Matplotlib

└── 📌 MAIN / SHOW (Lancement de la boucle d’animation)

🔧 Détail des fonctions principales

Fonction Paramètres Retour Rôle

update() Aucun numpy.ndarray Calcule les voisins et applique les règles de Conway sur toute la matrice.

animate(frame) frame: int list Interface entre la logique de simulation et le moteur de rendu Matplotlib.

🔄 LOGIQUE / ALGORITHME

ÉTAPE 1 → Initialisation d’une matrice 2D avec des 0 (mort) et 1 (vie).

ÉTAPE 2 → Calcul des voisins : Utilisation de np.roll pour décaler la matrice dans les 8 directions (gestion des bords toriques/périodiques).

ÉTAPE 3 → Application des règles :

Survie : Une cellule vivante avec 2 ou 3 voisins reste vivante.

Mort : Moins de 2 ou plus de 3 voisins entraînent la mort.

Naissance : Une cellule morte avec exactement 3 voisins devient vivante.

ÉTAPE 4 → Mise à jour de l’affichage graphique via imshow.

🚨 GESTION DES ERREURS

Cas d’erreur Type d’exception Comportement attendu

Dépendance manquante ModuleNotFoundError Le script s’arrête en demandant l’installation de numpy ou matplotlib.

Mémoire insuffisante MemoryError Si size est trop élevé (ex: 50 000), le script peut crash au rendu.

✅ CONTRAINTES & RÈGLES MÉTIER

Règle 1 : La grille est périodique (un objet sortant par la droite rentre par la gauche).

Règle 2 : L’affichage utilise la colormap ‘magma’.

🧪 TESTS ATTENDUS

# Cas de test Entrée Résultat attendu Statut

1 Cas nominal size=100 Animation fluide lancée ⬜ À tester

2 Densité nulle density=0 Grille reste noire (statique) ⬜ À tester

3 Densité max density=1 Surpopulation immédiate (instabilité) ⬜ À tester

📊 PERFORMANCES ATTENDUES

Temps d’exécution max : Calcul de frame < 10ms pour une grille 100x100. Volumétrie : Supporte facilement jusqu'à 500x500 sur une machine standard. 📝 EXEMPLE D'UTILISATION ▶️ Lancement en ligne de commande Bash python script_288cvmn_288.py

Avis

Il n’y a pas encore d’avis.

Soyez le premier à laisser votre avis sur “script_288cvmn_288.py”

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *