Hello World Conwaya

24

Często mówi się, że wszyscy programiści powinni być w stanie napisać program „Hello World” w dowolnym języku programowania po kilku spojrzeniach na ten język (i quicksort po kilku spojrzeniach).

Ponieważ gra Conway's Life of Turing jest ukończona (więc kwalifikuje się jako język programowania ogólnego zastosowania) , problem jest oczywisty:

Utwórz „Witaj świecie!” aplikacja korzystająca wyłącznie z Gry Życia Conwaya! Jedynym ważnym wpisem jest stan początkowy gry życia Conwaya, który:

  • nie zawiera żadnego rozpoznawalnego kształtu przypominającego tekst „Hello World!”
  • będzie zawierał rozpoznawalny kształt przypominający tekst „Hello World!” w rozsądnej liczbie cykli (nie powinien działać dłużej niż kilka minut na dobrym komputerze - umożliwia to miliardy cykli i powinno wystarczyć)
  • obszar, w którym „Hello World!” tekst pojawi się w stanie początkowym powinien być pusty ! (W przeciwnym razie problem byłby zbyt łatwy) Jeśli nikomu się nie uda, możemy zmniejszyć ten wymóg do „głównie pustego”

Punktacja:

Zwycięzca zostanie wyłoniony na podstawie liczby głosów pozytywnych w ciągu około tygodnia od pierwszego ważnego zgłoszenia.

Wytyczne dotyczące głosowania:

  • bardziej wyszukane i piękne produkty powinny być warte więcej
  • moc wyjściowa, która jest stabilna przez wiele cykli, powinna być warta więcej niż jedna, która zanika, aby nie zostać rozpoznana w następnym cyklu.
  • najbardziej zamknięte jest rozwiązanie zamknięte w ciągłym cyklu lub zaczynające się od ciekawego wzorca, ponieważ dowodzi inteligentnego zaprojektowania stanu, a nie tylko przypadkowych prób i błędów z odwrotną symulacją.

Wpis powinien mieć format odczytywalny przez co najmniej jeden z godnych uwagi symulatorów lub symulator online, do którego prowadzi odsyłacz. Linki (do animacji lub symulatora ustawionego na stan początkowy) są również akceptowane, a nawet zalecane. Jeśli wynik nie jest widoczny w ciągu kilku cykli, pozycja powinna określać, po którym cyklu wynik będzie widoczny.


Edytować:

Generowana fraza może wykazywać niewielką tolerancję. Może to być „ Hello, World!”, „ hello, world” „ HELLO WORLD!” itp.

vsz
źródło
nie powinno być gdzieś w tym wyrażeniu przecinek?
nowy
@ardnew: Które zdanie?
vsz
wyrażenie być generowane:Hello, world!
ardnew
@ardnew: dzięki, zredagowałem aneks. Celowo pozostawiłem trochę niejasności, ponieważ ostatecznie głosujący decydują . Jeśli uważasz, że nie naruszyłeś bezpośrednio jednej z głównych zasad i że wyborcom spodoba się twoja interpretacja drobnych szczegółów, możesz to zrobić w dowolny sposób!
vsz
1
Możesz użyć mojego symulatora (importuje RLE i zwykły tekst). Nie jest dobry do rozwijania, ale przynajmniej uruchamia dowolne duże wzory z przyzwoitą prędkością. Mogę również przesłać wzory i ustawić je w linku na żądanie
skopiuj

Odpowiedzi:

50

Moja pierwsza próba tego, stosunkowo proste rozwiązanie. Wystrzeliwuje kilka luf szybowców. Każda para szybowców zamienia się w blok, który następnie tworzy tekst. Ten proces trwa około 16 000 pokoleń (możesz ustawić przeskakiwanie klatek lub użyć przycisku superstep w moim symulatorze).

Bezpośredni link . Poruszaj się za pomocą prawej myszy, powiększaj za pomocą kółka myszy.

Link do pliku .rle (działa również z Golly)

Obraz wzoru 32: 1:

Obraz wzoru 32: 1

Kopiuj
źródło
4
Jeśli masz przeglądarkę obsługującą obszar roboczy i nie widzisz wzoru początkowego, pomniejsz kółko przewijania. Zajęło mi to trochę czasu, żeby to wypracować.
Peter Taylor,
Doskonały! Oczekiwałem, że opublikujesz rozwiązanie tego wyzwania po tym, jak zobaczyłem codegolf.stackexchange.com/a/5946/3527 i twoją stronę internetową.
Cristian Lupascu,
1
@ w0lf tworzenie wzorca to zupełnie inne wyzwanie niż symulacja. Ale tak, dobrze się z tym bawię
skopiuj
2
Gratulacje! Dziwne, że nikt nie odważył się przedstawić innego rozwiązania. Właściwie, gdyby nie opublikowano żadnego rozwiązania, zrobiłbym coś bardzo podobnego (szybowce zbiegające się w bloki), choć znacznie mniejsze i mniej szczegółowe. Czy mogę zapytać, jak to zrobiłeś? Wygenerowano za pomocą programu lub obliczono ręcznie pozycje?
vsz
1
@vsz Wzorzec jest generowany z małego skryptu python. Myślę, że tydzień mógł być krótkim terminem dla niektórych osób (dlatego nikt inny nie próbował)
skopiuj