Voici le célèbre Game of Life.
Pour ceux dont cela ne dit rien, à part le mot "game", voici de quoi vous informer: Lien Wikipedia
La version calto rame un peu (sur Graph 35+, il me faut environ une minute par génération),
mais a le mérite d'exister.
Pour placer les points, les touches fléchées et [EXE]
Des idées d'améliorations ?
MàJ: suite à la remarque de Eiyeron, le deuxième fichier comporte la version "texte" du programme -> plus de rapidité mais moins de place.
----- Version "Texte" -----
Voici la version "texte" de mon programme.
Au programme (cest le cas de le dire ), une rapidité bien plus élevée (environ 8-10 secondes par génération), mais un plateau moins grand.
Pour poser les cellules, touches fléchées + [EXE]
Pour lancer le programme, [F1].
Attention: Les cellules dans le cadre de 1 rangée autour du plateau (2 pour le bord droit) ne se modifient pas: elles servent juste à allumer les cellules à l intérieur.
Je déterre un peu (enfin je profite du déterrage):
comment l'améliorer?
Wikipédia a écrit : En 1980, Bill Gosper a créé Hashlife, un algorithme de simulation beaucoup plus efficace, permettant de manipuler des millions de cellules sur des millions de générations en des temps très courts. Cet algorithme reposait sur une idée différente : en effet, si l’on considère une portion de l’espace du jeu relativement isolée de ses voisines, il est possible de la faire « tourner » pendant un certain nombre n de générations, puis de simplement mémoriser le résultat. Si la configuration de départ se reproduit ailleurs, on pourra alors « sauter » directement n générations pour cette partie du jeu. Ce nouvel algorithme faisait donc « tourner » différentes portions de l’espace à des vitesses différentes, et se débrouillait pour préserver la cohérence aux bordures de chaque région ainsi simulée. Il faisait appel à une table de hachage pour mémoriser et retrouver rapidement des configurations locales.
Bon en fait j'avais déjà entendu parler de ça, qu'avec des tables de hachage on pouvait gagner énormément en efficacité...
Mais ça a quand même l'air un peu chaud à implémenter! (surtout en Basic)
En fait c'est même carrément impossible!
Si je fais juste un petit automate cellulaire bidimensionnnel 5x5 à deux états (donc un jeu de la vie 5x5), il y a 2^(5^2)=33'554'432 configurations possibles!
Donc si ma table de hachage fait, mettons 20000 cases (ce qui est pas mal déjà!), il y aura en moyenne 1678 clés par case!
En les classant par ordre croissant on peut assurer un temps de recherche en O(log n), sachant que la table et la recherche de "hash" sera en O(1).
Donc éventuellement on aurait un temps de restitution d'une combinaison acceptable!
(ah oui je vous ai pas dit, je m'adresse aux initiés! 8) )
PAR CONTRE il faudrait faire manuellement les 33'554'432 combinaisons!!!!!!!
Du coup il vaudrait mieux les faire à l'ordi d'abord, puis les envoyer dans la caltos tout faits!
Alors, qu'en penses-tu?
Ah oui, tout ça c'est pour un jeu de la vie 5x5!!!
Oui mais ça c'est l'algorithme "naïf", dans l'extrait de Wikipédia que j'ai mis, la recherche a l'air beaucoup plus complexe, mais ça doit être une galère incommensurable pour trouver des motifs, et surtout pour les faire tourner sans qu'ils n’interagissent avec le reste!!!
(pour un planeur à la rigueur...)
Bah ce qu'il faudrait c'est adapter le système Hashlife, ça a l'air puissant...
Non mais on est pas obligé de prendre toutes les possibilités, puisqu'il y en a qui sont impossibles! cf les jardins d'Eden! (bon si on compte que là dessus on est mal barrés!)
Je pense quand même qu'on peut tenter un truc... (en fait faudra que JE tente un truc, j'ai trop envie d'implémenter une table de hachage d'une manière ou d'une autre! )
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd