Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

JNP

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re le forum ,
Moi je reste sur ma fin...
Roger, c'est bien, si le but est de montrer que du désordre jailli l'ordre, génial , mais dès que la fourmi se tappe un mur, elle repart du début , je ne pensais pas qu'un mur te faisait peur !!!
Staple, tes liens ne marchent pas sous 2007 ...
Maintenant, si l'étude devient "sociologique", j'ai envie de reprendre mon code pour introduire plusieurs fourmis et voir ce que ça devient, avec une couleur par fourmi. Qui m'aime me suive ...
A +
 

Staple1600

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re


JNP: Qu'entends-tu par tes liens ne fonctionne pas sous 2007 ?

Tu veux dire en surfant avec IE 7 ?

J'ai pu téléchargé le fichier fourmilière.xls en utilisant Firefox.


PS:
A part les fourmis, j'essaie aussi de voir ce qui se fait avec Excel au sujet des automates cellulaires.
 

ROGER2327

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re...
La règle est donnée par le lien cité en référence (#1) :
Je cite :
Les cases d'une grille peuvent être blanches ou noires. On considère arbitrairement l'une de ces cases comme étant la "fourmi". Dans l'état initial, toutes les cases sont de la même couleur.

La fourmi peut se déplacer à gauche, à droite, en haut ou en bas d'une case à chaque fois selon les règles suivantes :

* Si la fourmi est sur une case noire, elle tourne de 90° vers la droite, change la couleur de la case en blanc et avance d'une case.
* Si la fourmi est sur une case blanche, elle tourne de 90° vers la gauche, change la couleur de la case en noir et avance d'une case.

Pas vu de mur la-dedans.
Je me suis seulement efforcé de trouver un code concis répondant au problème posé, rien de plus.​
ROGER2327
#1860
 

JNP

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re ,
Roger, je parlais de l'espace de déplacement de la fourmi... Sur ton fichier, quand la fourmi atteint les limites du cadre, elle se repositionne au centre (en tout cas, c'est ce qui arrive chez moi...)
Staple, j'ai chargé le fichier Excel sur tes liens, et... rien ne se passe. Quelle est la macro à lancer pour qu'il se passe quelque chose ?
Mon fichier de départ ne fonctionne pas quand je l'ai téléchargé ... A priori, c'est dû aux différences entre les ColorIndex 2007 et compatibles...
J'ai modifier le chargement des ColorIndex et rajouté des fourmis. En principe, chaque Clic rajoute une fourmi de couleur différente. merci de me dire si mon nouveau fichier marche sur autre chose que 2007 .
A +
 

Pièces jointes

  • Fourmis.xls
    143 KB · Affichages: 142

Staple1600

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re


JNP: Ton nouveau fichier fait faire des choses bizarres aux fourmis (on dirait qu'elle se prennent pour le serpent dans nibbles )

Pour le fichier Fourmilière.xls , il suffit de lancer la macro : programmeprincipal
 

JNP

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re , A +
 

Staple1600

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re


Le fichier fourmilière est une variante comme je le disais précédemment
(les règles ne sont pas les mêmes, voir le lien dans mon message de 19h15)


Ton fichier fait la chose suivante: à un moment, les fourmis suivent le périmètre de la grille

(C'est ce qui me rappelle le jeu QBasic Nibbles (de Microsoft) qui était fourni avec Qbasic )
 

JNP

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re ,
Effectivement, les "murs" se traduisent par une activité un peu étrange, mais je n'ai constaté aucun blocage. A suivre...
Bonne nuit
 

ROGER2327

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re..
.
(...)
Roger, je parlais de l'espace de déplacement de la fourmi... Sur ton fichier, quand la fourmi atteint les limites du cadre, elle se repositionne au centre
(...)
Presque ! Lorsqu'une fourmi atteint le bord de la fenêtre, elle continue son chemin loin de nos regards. Elle ne connaît pas de murs. Elle courre jusqu'à la mer où elle se noie. Et c'est triste...
Mais nous, on ne pleurniche pas pour des histoires de murs, parce que nous sommes grands, et parce que les grands ne doivent pas pleurer. Mais c'est triste...
Alors, pour que nous soyons moins tristes, lorsqu'une fourmi a disparu à l'horizon, une autre fourmi sort de la fourmilière et occupe notre regard. Et nous sommes moins tristes...
Pas longtemps.
Parce que cette aimable fourmi disparaît à l'horizon pour rejoindre sa sœur sur la plage. Elle la trouve noyée dans le flot. Et elle la suit. Et elle se noie...
Et nous sommes encore plus tristes...
C'est pour nous consoler qu'une troisième fourmi sort de sa demeure. Mais son destin est de courir à la mer...
Toujours la même histoire !
J'en viens à me demander si ces bestioles ne sont pas un peu connes sur les bords. D'autant qu'une quatrième, puis un cinquième, une sixième encore s'en vont se noyer. Heureusement, la fourmilière est vide désormais.
Bon débarras, les sales bêtes !
Et pour chasser la tristesse des belles histoires de tonton Roger qui brouille le regard des grands enfants, tonton Roger (2327, ne l'oublions pas) a écrit une autre histoire, dans laquelle il n'y a qu'un cloporte (ras le bol des fourmis), mais un cloporte intelligent, lui : il ne quittera jamais notre regard.
Code:
[COLOR="DarkSlateGray"]Sub cloporte_malin()
Dim ol As Integer, oc As Integer, i As Long, k As Integer, x As Long, y As Long
Dim l As Integer, c As Integer, a As Long
[COLOR="SeaGreen"]'
'Choix des couleurs[/COLOR]
   Range(Cells(1, 1), Cells(256, 256)).Interior.Color = 26367
   y = Cells(1, 1).Interior.Color
   Range(Cells(1, 1), Cells(256, 256)).Interior.ColorIndex = 4 [COLOR="SeaGreen"]'couleur de fond[/COLOR]
   x = Cells(2, 2).Interior.Color
[COLOR="SeaGreen"]'[/COLOR]
   Cells(64, 128).Select 'localisation du départ
   ol = -1: oc = 0  'direction initiale
[COLOR="SeaGreen"]'----- Corps du programme -----[/COLOR]
   On Error GoTo dépassement
   Do
      With Selection
         k = 1 + 2 * (.Interior.Color = x)
         If ol Then oc = -k * ol: ol = 0 Else ol = k * oc: oc = 0
         .Interior.Color = (x + y + k * (x - y)) / 2
         a = a - (Cells(.Column, .Row).Offset(oc, ol).Interior.Color = x)
         .Offset(ol, oc).Select
continue:
      End With
   Loop While a < 200000
   On Error GoTo 0
Exit Sub
dépassement:
   l = 0: c = 0
   If Selection.Row = 256 Then l = -256 * Abs(ol)
   If Selection.Column = 256 Then c = -256 * Abs(oc)
   If Selection.Row = 1 Then l = 256 * Abs(ol)
   If Selection.Column = 1 Then c = 256 * Abs(oc)
   Selection.Offset(l + ol, c + oc).Select
   Resume continue
[COLOR="SeaGreen"]'----- ------------------ -----[/COLOR]
End Sub[/COLOR]
Mode d'emploi : cliquer sur "En route" et être patient...​
Bonne nuit !
ROGER2327
#1861
 

Pièces jointes

  • Un cloporte intelligent.xls
    16.5 KB · Affichages: 111

JNP

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re ,
Y manque un petit MPG3 de Caude François pour le fond sonore, et que Cloclo porte ...
Un petit stop aussi (ou DoEvents).
Mais c'est un option que je n'avais pas envisagée... Le pauvre cloporte est condamné à recommencer éternellement, cest peut-être encore plus dur que de se noyer !
Bon, j'y vais, je commence à chopper des fourmis .
Bonne journée
 
G

Guest

Guest
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Bonjour L'agraphe, JC, JNP, Roger,

Oui amusantes les 'tites fourmies. J'ai pas trop la tête à réfléchir grave en ce moment mais:

@Staple pour la question de ton post #3:

Code:
Private Declare Function GetInputState Lib "user32" () As Long
Public Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
 
Dim blnStop As Boolean
 
'touche Espace pas actionnée..'(&HD)(&H20) = 0 '(&H2E) = 0
While GetAsyncKeyState(&H20) = 0
' ne faire intervenir DoEvents que sur évènement clavier ou bouton souris(plus rapide et moins gourmand en utilisation processeur)
 If GetInputState Then DoEvents
 'Ici appel de la procédure
Wend
blnStop = true
End Sub

Et dans la Procédure,

Code:
Do While (les Conditions) [COLOR=red]and  Not blnStop[/COLOR]
End do

A+++
 

Staple1600

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Bonsoir à tous


Merci Hasco pour l'info

Je vais essayer de traduire littéralement le code Qbasic en tribute à Henri-Pierre PENEL

Roger2327: personnellement j'admire la société des fourmis (même si appliquée à l'Homme, on serait mal ... ), les cloportes , j'en connais pas )
 

Staple1600

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re

Roger2327: le cloporte a mis à mal Excel

Plantage sévère (Excel ne réponds pas)

(C'est pas grave, je n'étais pas chez moi quand c'est arrivé, et je testai ton code sur un Excel 2007)

J'essaierai de voir si cela plante aussi mon Excel 2000.
 

ROGER2327

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re...
Bonjour Staple1600
_
Pas très étonnant. C'est écrit spécifiquement pour un Excel2003 qui autorise au plus 256 colonnes. La gestion d'erreur sur laquelle je m'appuie pour traiter les bords de la représentation utilise cette particularité. J'ai sous le coude une version certainement plus compatible avec Excel2007 : je la déposerai dès que je l'aurai vérifiée. Mais elle ne sera pas testée avec Excel2007 pour la raison que je n'ai pas cette version à ma disposition.
A plus tard...​
ROGER2327
#1867
 

JNP

XLDnaute Barbatruc
Re : [VBA - Amusement] Fourmi de Langton : Quels seraient vos algorithmes ?

Re ,
C'est bizarre, je suis sur 2007 et ça fonctionnait sans plantage (sauf pour quitter bien sûr, vu qu'il n'y a pas de DoEvents pour reprendre la main)...
A suivre
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…