Experimentalia

Appunti raminghi

Golf Programming Live!

leave a comment »

Quanta vita riuscite ad infondere in un singolo carattere del vostro programma?

Penso che conosciate tutti il gioco Life e quindi non lo descriverò se non per ricordarne le regole. Chi non lo conoscesse ancora potrà rivolgersi all’apposita pagina di wikipedia per approfondirne le potenzialità e la storia.

In pratica il gioco si svolge su una griglia su cui vengono disposte a caso alcune cellule che possono nascere, vivere o morire a seconda
del numero di altre cellule con cui sono in contatto.

Le regole che permettono di evolvere uno stato nel successivo sono semplicissime:

  • Una cella spenta (morta) si accende (vive) se ha esattamente tre celle vicine vive.
  • Una cella viva (accesa) sopravvive (resta accesa) se ha due o tre celle vicine accese.
  • In tutti gli altri casi le cella resta spenta o si spegne.

Le Regole

Si tratta delle solite regole, in ossequio al contesto le ho riportare con il copia e incolla🙂 :

  1. Scrivere un programma, il più breve possibile, che risolva il problema enunciato prima e riportato meglio qui sotto;
  2. per ogni linguaggio utilizzato è considerato vincitore il programma scritto usando meno caratteri;
  3. l’efficienza dell’algoritmo non è un fattore fondamentale ma il programma deve terminare senza errori;
  4. si può optare, se più concisa, per una funzione, piuttosto che un programma intero;
  5. ovviamente non di vince niente se non la soddisfazione di aver accettato una sfida ed averla vinta.

L’algoritmo

Il nostro gioco si svolgerà su scacchiera quadrata di almeno cinque celle di lato che verrà popolata casualmente e che è limitata ai bordi, la cella alto a sinistra, posizione (0,0), confinerà solamente con (0,1), (1,1) ed (1,0) mentre non confina, ad esempio, con (0,n), (n,0).

Il gioco procede per stati. La condizione di una cella e delle sue vicine stabilisce quale sarà la carattestica (accesa o spenta) della cella nel successivo stato. Per celle vicine si intendono tutte quelle, fino ad 8, che sono a diretto contatto con quella corrente. Le regole per stabilire se una cella deve passare allo stato successivo come accesa o spenta sono quelle anticipate prima. Le riporto per dare una certa completezza alla sezione:

  • Una cella spenta (morta) si accende (vive) se ha esattamente tre celle vicine vive.
  • Una cella viva (accesa) sopravvive (resta accesa) se ha due o tre celle vicine accese.
  • In tutti gli altri casi le cella resta spenta o si spegne.

L’input

Al programma/funzione da scrivere viene passato

  • un numero, maggiore di 5, che rappresenta la dimensione, in celle, della griglia su cui si svolge il gioco
  • il numero massimo di passi da compiere prima di interrompere l’elaborazione dei diversi stati, utile in caso di configurazione ciclica
  • un array monodimensionale contenente la configurazione attuale, ogni cella accesa varrà 1, ogni cella spenta varrà 0.

L’output

Il programma dovrà stampare, come su un nastro, le griglie rappresentanti i diversi stati del gioco. Lascio a voi la decisione L’output dovrà essere un nastro della vita, una sequenza ininterrotta, verticale o orizzontale con le successive posizioni del gioco. L’output deve interrompersi quando sono state stampate il numero massimo di posizioni o se la griglia diventa completamente vuota.

Ogni cella vuota deve essere rappresentata con un punto (.) mentre la cella piena è rappresentata con il cancelletto (#).

Buon Divertimento

Written by Eineki

gennaio 30, 2011 a 4:05 am

Pubblicato su golf

Tagged with , , , ,

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: