Matrice et recursion
Fermé
adamsjilal
Messages postés
46
Date d'inscription
lundi 14 mars 2016
Statut
Membre
Dernière intervention
29 avril 2018
-
16 avril 2018 à 01:21
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 16 avril 2018 à 16:15
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 16 avril 2018 à 16:15
A voir également:
- Matrice et recursion
- Vous ne pouvez pas modifier une partie de matrice - Forum Excel
- La tentative de récursion de substitution d'image - Forum Logiciels
- Tri d'une matrice algorithme - Forum C
- Exemple matrice de flux firewall excel - Forum Réseau
- Modifier un cellule avec formule matricielle ✓ - Forum Excel
1 réponse
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
16 avril 2018 à 10:36
16 avril 2018 à 10:36
Bonjour,
Pour commencer, quelques remarques d'ordre plus général :
- je ne vois aucune récurrence dans ton code, uniquement de l'itératif (ce n'est pas un mal !)
- quel rafraîchissement visuel de ta grille tu souhaites avoir ? Tu veux visualiser les « explosions » se propager, de gauche à droite puis de bas en haut ? Ou avoir uniquement le résultat final ?
- si tu veux voir les explosions se propager, souhaites-tu qu'elles soient résolues de façon itérative (on parcourt tout le tableau plusieurs fois jusqu'à ce que plus rien ne change) ou récursive (parcours du tableau en arbre, à chaque fois qu'on fait +1 sur une case on vérifie son état et on le résout avant de passer à la suite)
À première vue je dirais que le résultat final sera le même quel que soit l'ordre de résolution.
Par contre le code pour le générer va bien changer.
- attention, pour une matrice suffisamment « chaude » initialement et grande (avec plus de cases centrales que de coins), tes règles amènent vers un réchauffement infini, donc tu n'auras pas d'état final. En effet, les coins refroidissent l'ensemble (une explosion se solde par une température finale de -3 +1 +1 = -1), les bords sont neutres, et les cases centrales font +1. Ta matrice va donc se refroidir par les coins et s'auto-entretenir voire s'emballer par le centre.
Maintenant, les problèmes que je vois dans ton code :
- telle que construite, ta matrice va contenir la même valeur partout. Du coup si Alea vaut 1, rien ne se passe nulle part...
- ta fonction qui fait les +1 / -3 ne parcours qu'une seule fois tout le tableau, il restera donc des cases >3 à la fin
- l'updateGrid peut être optimisé parce que toute la grille est reparcourue à chaque fois. Tu dois pouvoir lui donner des paramètres pour ne mettre à jour que la case que tu sais avoir changé.
Xavier
Pour commencer, quelques remarques d'ordre plus général :
- je ne vois aucune récurrence dans ton code, uniquement de l'itératif (ce n'est pas un mal !)
- quel rafraîchissement visuel de ta grille tu souhaites avoir ? Tu veux visualiser les « explosions » se propager, de gauche à droite puis de bas en haut ? Ou avoir uniquement le résultat final ?
- si tu veux voir les explosions se propager, souhaites-tu qu'elles soient résolues de façon itérative (on parcourt tout le tableau plusieurs fois jusqu'à ce que plus rien ne change) ou récursive (parcours du tableau en arbre, à chaque fois qu'on fait +1 sur une case on vérifie son état et on le résout avant de passer à la suite)
À première vue je dirais que le résultat final sera le même quel que soit l'ordre de résolution.
Par contre le code pour le générer va bien changer.
- attention, pour une matrice suffisamment « chaude » initialement et grande (avec plus de cases centrales que de coins), tes règles amènent vers un réchauffement infini, donc tu n'auras pas d'état final. En effet, les coins refroidissent l'ensemble (une explosion se solde par une température finale de -3 +1 +1 = -1), les bords sont neutres, et les cases centrales font +1. Ta matrice va donc se refroidir par les coins et s'auto-entretenir voire s'emballer par le centre.
Maintenant, les problèmes que je vois dans ton code :
- telle que construite, ta matrice va contenir la même valeur partout. Du coup si Alea vaut 1, rien ne se passe nulle part...
- ta fonction qui fait les +1 / -3 ne parcours qu'une seule fois tout le tableau, il restera donc des cases >3 à la fin
- l'updateGrid peut être optimisé parce que toute la grille est reparcourue à chaque fois. Tu dois pouvoir lui donner des paramètres pour ne mettre à jour que la case que tu sais avoir changé.
Xavier
16 avril 2018 à 11:17
16 avril 2018 à 11:39
16 avril 2018 à 11:45
16 avril 2018 à 12:45
16 avril 2018 à 12:46