Newsgroup: it.comp.ia
Titolo: Formica di Langton

Ciao a tutti,
vi ricordate di me? ;)
Sono l'autore di PCBrain... volevo chiedervi un paio di informazioni.
Da poco mi è capitato di scrivere un piccolo programma per implementare la
famosa "formica di langton", e di li a creare un piccolo mondo virtuale, con
un piccolo interprete di piccoli script per formiche il passo è stato breve.
Sta di fatto che ora ho scritto questo semplice programmino che contiene
appunto un interprete per "formiche".
I comandi sono quelli fondamentali:
<cut>
IF_WHITE // Se la cella è bianca, esegue l'istruzione successiva
IF_BLACK // Se la cella è nera, esegue l'istruzione successiva
MAKE_WHITE // Colora la cella di bianco
MAKE_BLACK // Colora la cella di nero
GO_FORWARD // Muove in avanti la formica
GO_BACK  // Muove indietro la formica
DIR_UP  // Imposta la direzione della formica in alto
DIR_DOWN // Imposta la direzione della formica in basso
DIR_LEFT // Imposta la direzione della formica a sinistra
DIR_RIGHT // Imposta la direzione della formica a destra
IF_DIR_UP // Se la direzione della formica è SU, esegue l'istruzione
successiva
IF_DIR_DOWN // Se la direzione della formica è GIU, esegue l'istruzione
successiva
IF_DIR_LEFT // Se la direzione della formica è SINISTRA, esegue l'istruzione
successiva
IF_DIR_RIGHT // Se la direzione della formica è DESTRA, esegue l'istruzione
successiva
ROT_LEFT90 // Rotea la formica di 90 gradi a sinistra
ROT_RIGHT90 // Rotea la formica di 90 gradi a destra
BEGIN_BLOCK // Inizia un blocco di codice
END_BLOCK // Termina un blocco di codice
ELSE  // Esegue l'istruzione successiva. Si usa in coppia con un IF...
Quando la condizione dell'IF
  // non è testata viene eseguita l'istruzione che segue l'ELSE.
  // Es:
  // IF WHITE  ' Se la cella è bianca
  //  GO_FORWARD ' Vai avanti
  // ELSE   ' Altrimenti
  //  GO_BACK  ' Vai indietro
</cut>
E così lo script della formica di Langton diventa:
// Script per la formica di Langton
IF_BLACK   ' Se la cella è nera
BEGIN_BLOCK
 ROT_LEFT90  ' Rotea la formica di 90 gradi a sx
 MAKE_WHITE  ' Colora la cella di bianco
 GO_FORWARD  ' Vai avanti
END_BLOCK
ELSE    ' Altrimenti
BEGIN_BLOCK
 ROT_RIGHT90  ' Rotea la formica di 90 gradi a dx
 MAKE_BLACK  ' Colora la cella di nero
 GO_FORWARD  ' Vai avanti
END_BLOCK
Quindi ognuno si può creare le proprie formichine :)
Ora, il punto volevo sapere se un programma simile potrebbe interessare
qualcuno, se lo il linguaggio è sprovvisto di alcune parole, se è il caso di
implementare (nello stesso linguaggio) altre keyword che permettano ad
esempio di contare le celle bianche/nere adiacenti alla formica, in modo da
poter creare anche il famoso "gioco della vita"... che mi dite?
Il programma funziona così: c'è una interfaccia in cui posso decidere la
dimensione della griglia (il mondo virtuale), il tipo di griglia (bianca,
nera, random, a scacchiera) e il posizionamento delle formiche alla partenza
(unite, random).
E' possibile inoltre caricare fino a 6 diversi tipi (script) di formiche e
impostare il loro numero.
Il mondo è finito, per i limiti tecnici del computer, e quindi se una
formica esce a sx, compare a dx, e così via.
Fatemi sapere cosa ne pensate,
Dome

che roba è una formica di Langton?

http://www.geocities.com/infunti/formiche/

 I comandi
[cut]
Ma č fantastico!!!!!!
Non č che mi invieresti una copia del programma. non mi importa se č trial,
demo e se non mi mandi i sorgenti.
Ma avevo cominciato a sviluppare una cosa del genere e poi ero stato
costretto a lasciar perdere. E' un sogno che si avvera!
Forse ho esagerato unpo, cmq se puoi mandarmi una copia del prog ti
ringrazio.
Ciao,
        Marcello

 Non è che mi invieresti una copia del programma. non mi importa se è


Mandato!
Dome

Vabbo... si può vedere qualcosa??
Senda senda che sono curioso!
Dome
PS: Anche se non mi mandi i sorgenti va bene lo stesso, basta che vedo come
funziona! Su che il mio programma te l'ho mandato :))

 ha scritto nel messaggio
news:8dhp9.13381$RO.2...@twister1.libero.it...


Uff! Tanto poi ti dimentichi!! :P
Scherzi a parte, vedi di mandarmelo davvero quando è pronto, che poi mi
dimentico anche io.
Dome