Twoim zadaniem jest zbudowanie symulacji Game of Life przedstawiającej zegar cyfrowy, który spełnia następujące właściwości:
Zegar wyświetla godziny i minuty po przecinku (na przykład
12:00
,3:59
,7:24
) o innym stanie na każdym z 1440 minut dzień - albo godziny będzie od 0 do 23 lub od 1 do 12 ze wskaźnikiem PM.Wzorzec jest okresowy, a stan zapętla się bez interakcji zewnętrznych.
Aktualizacja minut w regularnych odstępach czasu - od jednej zmiany minuty do następnej trwa tyle samo pokoleń.
Anonimowy obserwator może na pierwszy rzut oka stwierdzić, że wyświetlacz ma być zegarem cyfrowym. W szczególności pociąga to za sobą:
Cyfry są widoczne i wyraźnie widoczne. Musisz być w stanie z całą pewnością powiedzieć, która godzina jest wyświetlana.
Cyfry aktualizują się. Każdy nowy numer pojawia się w tym samym miejscu, co poprzedni numer, i nie ma prawie żadnego ruchu obwiedni cyfr. (W szczególności cyfra nie zawiera 10 różnych cyfr w różnych miejscach, które są odkrywane przy każdej zmianie cyfr).
Cyfry pojawiają się obok siebie, bez nadmiernej przestrzeni między nimi.
Twój program będzie oceniany według następujących rzeczy, w kolejności (z niższymi kryteriami działającymi jako rozstrzygające dla wyższych kryteriów):
Rozmiar ramki granicznej - wygrywa prostokątne pudełko o najmniejszym obszarze, które całkowicie zawiera dane rozwiązanie.
Najszybsza realizacja - najmniej pokoleń, które awansują o minutę, wygrywa.
Początkowa liczba żywych komórek - mniejsza liczba wygrywa.
Pierwszy post - wcześniejszy post wygrywa.
źródło
Odpowiedzi:
11.520 pokoleń na liczbę zegarów / 10.016 x 6.796 kartonów / 244.596 liczników pop
Proszę bardzo ... Było fajnie.
Cóż, projekt z pewnością nie jest optymalny. Ani z punktu widzenia obwiedni (te 7-segmentowe cyfry są ogromne ), ani z początkowej liczby populacji (są pewne bezużyteczne rzeczy i pewne rzeczy, które z pewnością można uprościć), a szybkość wykonania - cóż ... I nie jestem pewien.
Ale hej, to jest piękne. Popatrz:
Uruchom!
Pobierz projekt z tej istoty . Skopiuj cały tekst pliku do schowka.
Nowość : oto wersja ze wskaźnikami AM i PM dla wymagających.
Przejdź do internetowego symulatora życia JavaScript Conway . Kliknij przycisk importuj , wklej tekst projektu. Powinieneś zobaczyć projekt. Następnie przejdź do ustawień i ustaw krok generowania na 512, lub coś wokół tych linii, albo będziesz musiał czekać wiecznie, aby zobaczyć aktualizację zegara.
Kliknij uruchom , poczekaj chwilę i zaskocz się!
Bezpośredni link do wersji w przeglądarce.
Zauważ, że jedynym algorytmem, który sprawia, że ten ogromny projekt jest użyteczny, jest hashlife. Ale dzięki temu możesz osiągnąć cały czas zawijania w kilka sekund. W przypadku innych algorytmów niepraktyczna jest nawet zmiana godziny.
Jak to działa
Wykorzystuje technologię p30. Tylko podstawowe rzeczy, szybowce i lekkie statki kosmiczne. Zasadniczo projekt idzie w górę:
W każdym razie w tym projekcie nie ma nic nadzwyczajnego. W tym procesie nie wykryto żadnych niesamowitych reakcji ani naprawdę sprytnych kombinacji, o których nikt wcześniej nie pomyślał. Tylko fragmenty zabrane tu i tam i złożone (i nawet nie jestem pewien, czy zrobiłem to „we właściwy sposób” - właściwie byłem zupełnie nowy). Wymagało to jednak dużo cierpliwości. Sprawienie, by wszystkie te szybowce zbliżały się we właściwym czasie we właściwej pozycji, było porywające.
Możliwe optymalizacje:
źródło