Conways Hallo Welt


24

Es wird oft gesagt, dass alle Programmierer der Lage sein sollte , eine „Hallo Welt“ Programm in einer beliebigen Programmiersprache nach ein paar Blicke auf diese Sprache (Und schreiben quicksort nach ein paar mehr Blicke).

Da das Conway-Spiel des Lebens vollständig ist (es ist also eine universelle Programmiersprache) , ist das Problem selbsterklärend:

Erstelle eine "Hallo Welt!" Anwendung nur mit Conway's Game of Life! Der einzige gültige Eintrag ist ein Anfangszustand für das Conway-Spiel des Lebens, das:

  • enthält keine erkennbare Form, die dem Text "Hello World!"
  • wird eine erkennbare Form enthalten , die dem Text "Hello World!" innerhalb einer angemessenen Anzahl von Zyklen (es sollte auf einem guten PC nicht länger als ein paar Minuten laufen - dies ermöglicht Milliarden von Zyklen und sollte ausreichen)
  • der Bereich, in dem die "Hallo Welt!" Text erscheint sollte im Ausgangszustand leer sein ! (Andernfalls wäre das Problem viel zu einfach.) Wenn es niemand schafft, können wir diese Anforderung auf "meistens leer" reduzieren.

Wertung:

Der Gewinner basiert auf der Anzahl der Upvotes in ungefähr einer Woche nach der ersten gültigen Einreichung.

Richtlinien für die Abstimmung:

  • Eine aufwändigere und schönere Ausgabe sollte mehr wert sein
  • über viele zyklen stabile ausgabe sollte mehr wert sein als eine, die im nächsten zyklus nicht mehr erkennbar ist.
  • Eine Lösung, die in einem ewigen Kreislauf verankert ist oder von einem interessanten Muster ausgeht, ist am wertvollsten, da sie eine intelligente Gestaltung des Zustands beweist und nicht nur zufällige Versuche und Irrtümer mit einer umgekehrten Simulation.

Der Eintrag sollte in einem Format vorliegen, das von mindestens einem der namhaften Simulatoren oder einem Onlinesimulator gelesen werden kann, auf den der Antwortende verweist. Verknüpfungen (zu einer Animation oder einem Simulator, der in den Ausgangszustand versetzt wurde) werden ebenfalls akzeptiert, sogar empfohlen. Wenn die Ausgabe innerhalb weniger Zyklen nicht sichtbar ist, sollte der Eintrag angeben, nach welchem ​​Zyklus das Ergebnis sichtbar sein soll.


Bearbeiten:

Die zu erzeugende Phrase kann eine gewisse Toleranz aufweisen. Es kann " Hello, World!", " hello, world" " HELLO WORLD!" usw. sein.


Sollte dieser Satz nicht irgendwo ein Komma enthalten?
Ardnew

@ardnew: Welcher Satz?
vsz

die zu erzeugende Phrase:Hello, world!
ardnew

@ardnew: danke, ich habe einen nachtrag bearbeitet. Ich habe absichtlich eine leichte Unbestimmtheit gelassen, weil letztendlich die Wähler entscheiden . Wenn Sie der Meinung sind, dass Sie nicht direkt gegen eine der Hauptregeln verstoßen haben und die Wähler Ihre Interpretation der kleinen Details mögen, können Sie dies auf jede von Ihnen gewünschte Weise tun!
vsz

1
Sie können meinen Simulator verwenden (importiert RLE und Plaintext). Es ist nicht gut für die Entwicklung, aber es führt zumindest beliebige große Muster mit angemessener Geschwindigkeit aus. Ich kann auch Muster hochladen und auf Anfrage verlinken
kopiere den

Antworten:


50

Mein erster Versuch dazu ist eine relativ einfache Lösung. Es feuert ein paar Segelflugzeugfässer ab. Jedes Segelflugzeugpaar wird zu einem Block, der dann den Text bildet. Dieser Vorgang dauert ca. 16000 Generationen (Sie können einen Frame-Skip festlegen oder die Superstep-Schaltfläche in meinem Simulator verwenden).

Direkter Link . Bewegen Sie sich mit der rechten Maustaste und zoomen Sie mit dem Mausrad.

Link zur .rle-Datei (funktioniert auch mit Golly)

Bild des Musters 32: 1:

Bild des Musters 32: 1


4
Wenn Sie einen Browser haben, der die Zeichenfläche unterstützt, und das Startmuster nicht sehen, zoomen Sie mit dem Scrollrad heraus. Ich habe eine Weile gebraucht, um das herauszufinden.
Peter Taylor

Ausgezeichnet! Ich habe erwartet, dass Sie eine Lösung für diese Herausforderung veröffentlichen, nachdem ich codegolf.stackexchange.com/a/5946/3527 und Ihre Website gesehen habe.
Cristian Lupascu

1
@ w0lf Das Erstellen eines Musters ist eine ganz andere Herausforderung als die Simulation. Aber ja, ich habe Spaß damit
kopiere den

2
Herzliche Glückwünsche! Seltsam, dass niemand den Mut hatte, eine andere Lösung vorzulegen. Wenn es keine Lösung gegeben hätte, hätte ich tatsächlich etwas sehr Ähnliches getan (Segelflugzeuge, die zu Blöcken zusammenlaufen), obwohl viel kleiner und weniger detailliert. Darf ich fragen, wie du es getan hast? Mit einem Programm generiert oder die Positionen manuell berechnet?
vsz

1
@vsz Das Muster wird aus einem kleinen Python-Skript generiert. Ich glaube, eine Woche war für einige Leute eine kurze Frist (deshalb hat es auch niemand anders versucht)
kopieren Sie den
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.