Hello World di Conway


24

Si dice spesso che tutti i programmatori dovrebbero essere in grado di scrivere un programma "ciao mondo" in qualsiasi linguaggio di programmazione dopo qualche occhiata su quel linguaggio (e quicksort dopo qualche altro sguardo).

Poiché il gioco della vita di Conway è Turing completo (quindi si qualifica come un linguaggio di programmazione generico) , il problema è autoesplicativo:

Crea un "Hello World!" applicazione che utilizza solo Conway's Game of Life! L'unica voce valida è uno stato iniziale per Conway's Game of Life, che:

  • non contiene forme riconoscibili simili al testo "Hello World!"
  • conterrà una forma riconoscibile simile al testo "Hello World!" entro un numero ragionevole di cicli (non dovrebbe funzionare per più di un paio di minuti su un buon PC - questo consente miliardi di cicli e dovrebbe essere sufficiente)
  • l'area in cui il "Hello World!" il testo apparirà vuoto nello stato iniziale! (Altrimenti il ​​problema sarebbe troppo semplice) Se nessuno riuscisse a farlo, potremmo ridurre questo requisito a "svuotare principalmente"

punteggio:

Il vincitore si baserà sul numero di voti in circa una settimana dopo la prima presentazione valida.

Linee guida per il voto:

  • output più elaborati e belli dovrebbero valere di più
  • l'output che è stabile su molti cicli dovrebbe valere più di uno che svanisce per essere irriconoscibile nel ciclo successivo.
  • una soluzione bloccata in un ciclo perpetuo o che parte da un modello interessante vale la pena di più, perché dimostra una progettazione intelligente dello stato e non solo prove ed errori casuali con una simulazione inversa.

La voce deve essere in un formato leggibile da almeno uno dei più importanti simulatori o un simulatore online a cui il risponditore si collega. Anche i collegamenti (a un'animazione o un simulatore impostati sullo stato iniziale) sono accettati, anche incoraggiati. Se l'output non è visibile in pochi cicli, la voce deve specificare dopo quale ciclo sarà visibile il risultato.


Modificare:

Ci può essere una leggera tolleranza nella frase da generare. Può essere " Hello, World!", " hello, world" " HELLO WORLD!" ecc.


non dovrebbe esserci una virgola da qualche parte in quella frase?
Ardnew,

@ardnew: quale frase?
vsz

la frase da generare:Hello, world!
ardnew,

@ardnew: grazie, ho modificato un addendum. Ho deliberatamente lasciato un po 'di vaghezza, perché alla fine decidono gli elettori . Se ritieni di non aver violato direttamente una delle regole principali e che agli elettori piacerà la tua interpretazione dei dettagli minori, sentiti libero di farlo nel modo che desideri!
vsz

1
Puoi usare il mio simulatore (importa RLE e Plaintext). Non è buono per lo sviluppo, ma almeno esegue grandi schemi arbitrari a velocità decente. Posso anche caricare schemi e renderli collegabili se richiesto
copia il

Risposte:


50

Il mio primo tentativo a questo, una soluzione relativamente semplice. Spara un paio di canne da aliante. Ogni coppia di alianti si trasforma in un blocco, che quindi forma il testo. Questo processo dura circa 16000 generazioni (è possibile impostare un salto di frame o utilizzare il pulsante Superstep nel mio simulatore).

Direct Link . Muoviti con il mouse destro, ingrandisci con la rotellina del mouse.

Link al file .rle (funziona anche con Golly)

Immagine del modello 32: 1:

Immagine del modello 32: 1


4
Se disponi di un browser che supporta la tela e non vedi il motivo iniziale, rimpicciolisci con la rotella di scorrimento. Mi ci è voluto un po 'per risolverlo.
Peter Taylor,

Eccellente! Mi aspettavo che pubblicassi una soluzione a questa sfida dopo aver visto codegolf.stackexchange.com/a/5946/3527 e il tuo sito web.
Cristian Lupascu,

1
@ w0lf la creazione di un modello è un tipo di sfida molto diverso rispetto alla simulazione. Ma sì, mi sto divertendo con questo
copia il

2
Congratulazioni! Strano che nessuno abbia preso il coraggio di presentare un'altra soluzione. In realtà, se non fosse stata pubblicata una soluzione, avrei fatto qualcosa di molto simile (alianti che convergono in blocchi di moduli), anche se molto più piccolo e meno dettagliato. Posso chiederti come hai fatto? Generato con un programma o calcolato manualmente le posizioni?
vsz

1
@vsz Il pattern è generato da un piccolo script Python. Penso che una settimana potrebbe essere stata una breve scadenza per alcune persone (ecco perché nessun altro ci ha provato)
copia l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.