Ihre Aufgabe ist es, eine Game of Life-Simulation zu erstellen, die eine Digitaluhr darstellt und die folgenden Eigenschaften erfüllt:
Die Uhr zeigt die Stunden und Minuten im Dezimalsystem (zB
12:00
,3:59
,7:24
) mit einem anderen Zustand für jeden der 1440 Minuten des Tages - entweder die Stunden 0-23 oder von 1 bis 12 mit einer PM - Anzeige gehen.Das Muster ist periodisch und der Zustand dreht sich ohne äußere Interaktion.
Die Aktualisierung der Minuten in regelmäßigen Abständen - von einem Minutenwechsel zum nächsten - benötigt die gleiche Anzahl von Generationen.
Ein anonymer Zuschauer kann auf einen Blick erkennen, dass das Display eine Digitaluhr sein soll. Dies beinhaltet insbesondere:
Die Ziffern sind sichtbar und klar unterscheidbar. Sie müssen mit Sicherheit auf einen Blick erkennen können, welche Uhrzeit angezeigt wird.
Die Ziffern werden aktualisiert. Jede neue Nummer wird an derselben Stelle wie die vorherige Nummer angezeigt, und die Begrenzungsrahmen der Ziffern bewegen sich kaum bis gar nicht. (Insbesondere enthält eine Ziffer nicht 10 verschiedene Ziffern an verschiedenen Stellen, die jedes Mal aufgedeckt werden, wenn sich die Ziffern ändern.)
Die Ziffern werden nebeneinander ohne übermäßigen Abstand angezeigt.
Ihr Programm wird nach folgenden Kriterien bewertet (wobei niedrigere Kriterien als Tiebreaker für höhere Kriterien fungieren):
Größe des Begrenzungsrahmens - der rechteckige Rahmen mit dem kleinsten Bereich, der die angegebene Lösung vollständig enthält, gewinnt.
Schnellste Ausführung - die wenigsten Generationen, die eine Minute vorrücken, gewinnen.
Anfängliche Anzahl lebender Zellen - kleinere Anzahl gewinnt.
Erster Beitrag - früherer Beitrag gewinnt.
quelle
Antworten:
Anzahl von 11.520 Generationen pro Takt / 10.016 x 6.796 Box / Anzahl von 244.596 Pops
Es hat Spaß gemacht.
Nun, das Design ist sicherlich nicht optimal. Weder vom Standpunkt der Bounding Box (diese 7-Segment-Ziffern sind riesig ) noch von der anfänglichen Bevölkerungszahl (es gibt einige nutzlose Dinge und einige Dinge, die sicherlich einfacher gemacht werden könnten) und der Ausführungsgeschwindigkeit - na ja ... ich 'ich bin mir nicht sicher.
Aber hey, es ist wunderschön. Aussehen:
Starte es!
Holen Sie sich das Design aus diesem Kern . Kopieren Sie den gesamten Dateitext in die Zwischenablage.
Neu : Hier ist eine Version mit AM- und PM-Indikatoren für anspruchsvolle Kunden.
Zum Online-Lebenssimulator von JavaScript Conway . Klicken Sie auf Importieren , fügen Sie den Designtext ein. Sie sollten das Design sehen. Gehen Sie dann zu den Einstellungen und stellen Sie den Generierungsschritt auf 512 oder etwas in der Nähe dieser Zeilen ein, oder Sie müssen ewig warten, bis die Uhrzeitanzeige aktualisiert wird.
Klicken Sie auf Ausführen , warten Sie ein bisschen und staunen Sie!
Direkter Link zur In-Browser-Version.
Beachten Sie, dass der einzige Algorithmus, der dieses riesige Design nutzbar macht, hashlife ist. Damit können Sie den gesamten Zeitumlauf in Sekunden erreichen. Bei anderen Algorithmen ist es unpraktisch zu sehen, wie sich die Stunde ändert.
Wie es funktioniert
Es nutzt die p30-Technologie. Nur grundlegende Dinge, Segelflugzeuge und leichte Raumschiffe. Grundsätzlich geht das Design von oben nach unten:
In diesem Design steckt eigentlich nichts Außergewöhnliches. Es gibt keine erstaunlichen Reaktionen, die in diesem Prozess entdeckt wurden, und keine wirklich klugen Kombinationen, an die noch niemand gedacht hat. Nur ein bisschen hier und da genommen und zusammengefügt (und ich bin mir nicht mal sicher, ob ich es "richtig" gemacht habe - ich war tatsächlich völlig neu darin). Es erforderte jedoch viel Geduld. Alle diese Segelflugzeuge zur richtigen Zeit in die richtige Position zu bringen, war ein Kopfkratzer.
Mögliche Optimierungen:
quelle