Jedną z miłych właściwości języka kompletnego Turinga jest to, że można go używać do pisania dowolnego programu, łącznie z symulacją całego Wszechświata.
Twoim zadaniem jest dokładnie to zrobić: napisać program symulujący Wszechświat .
Uwaga: chociaż nie wątpię, że będziesz w stanie wykonać to zadanie, obecnie nie mam wystarczająco dużo czasu, aby sprawdzić, czy wszystkie 10 90 cząstek w twojej symulacji robi to, co naprawdę powinno. Dlatego, aby uprościć testowanie i ocenę, wystarczy, że symulator wszechświata działa tylko z jedną cząsteczką początkową. Aby zachować ciekawość, załóżmy, że ta cząstka to niedawno odkryty bozon Higgsa.
Wszechświat zaczyna się od jednego bozonu Higgsa o mocy około 120 GeV w środku. Aby nie wydłużyć wyniku, ustawmy ten wszechświat na zaledwie 10-25 sekund zamiast jego „zwykłej częstotliwości taktowania” wynoszącej 5,4 × 10 −44 sekund.
Bozon Higgsa rozpadnie się wcześniej czy później, ponieważ jego okres półtrwania wynosi 1,6 × 10 −22 sekund, więc przy każdym takcie symulacji ma szansę na rozpad 0,0433%. Tutaj możesz sprawdzić , w co się rozpadnie . Aby mieć centralny i uproszczony wymóg, wymieniam współczynniki rozgałęzień, których powinieneś użyć:
Uruchamianie symulacji
Przy każdym tiku symulacji bozon Higgsa ma 0,0433% szansy na rozkład. Jeśli tak się stanie, rozpadnie się na następujące cząstki, z podanymi prawdopodobieństwami (powinieneś użyć tych nazw na wyjściu):
- dolny kwark + dolny antykwark (64,8%)
- Bozony 2 W (14,1%)
- 2 gluony (8,82%)
- tau lepton + lepton antitau (7,04%)
- kwark urok + antykwark urok (3,27%)
- 2 bozony Z (1,59%)
- 2 fotony (0,223%)
- 1 bozon Z + 1 foton (0,111%)
- mion + antymuon (0,0244%)
- górny kwark + górny antykwark (0,0216%)
W sumie 100%.
Niektóre z tych cząstek ulegają dalszemu rozkładowi.
Bozon W : okres półtrwania 10-25 sekund, oznacza to 50% szansy na rozpad przy każdym kleszczu na jedno z poniższych, z jednakowymi prawdopodobieństwami:
- positron + neutrino
- antimuon + neutrino
- lepit antitau + neutrino
Bozon Z : okres półtrwania 10-25 sekund, oznacza to 50% szansy na rozpad przy każdym kleszczu do jednego z poniższych:
- neutrino + antyneutrino (20,6%)
- elektron + pozyton (3,4%)
- mion + antymuon (3,4%)
- tau lepton + lepton antitau (3,4%)
- dół kwark + dół antykwark (15,2%)
- dziwny kwark + dziwny antykwark (15,2%)
- dolny kwark + dolny antykwark (15,2%)
- w górę kwark + w górę antykwark (11,8%)
- kwark urok + antykwark urok (11,8%)
górny kwark : okres półtrwania 5 × 10-25 sekund, oznacza to 12,95% szansy na rozpad przy każdym kleszczu na następujące, z jednakowymi prawdopodobieństwami:
- Bozon W + kwark dolny
- Bozon W + dziwny kwark
- Bozon W + kwark dolny
Oczywiście, bozon W wkrótce również rozpadnie się ...
Góry antykwarka zachowuje się podobnie do górnej twarogu: to rozpadowi w bozon W i AD / S / B antykwarka.
Wszystkie inne cząstki (czyli wszystkie oprócz bozonów Z i W i kwarków górnych) mają okres półtrwania dłuższy o wiele rzędów wielkości, więc aby nie zagracać mocy wyjściowej, wszystkie są uważane za stabilne w naszej symulacji .
Ponieważ wszechświat jest w dużej mierze pusty, wszystkie cząstki będą miały dla siebie wystarczająco dużo miejsca i nie będą ze sobą oddziaływać. Dlatego wszystkie pojedyncze cząstki są od siebie niezależne pod każdym względem, w tym także od prawdopodobieństwa rozszczepienia.
Wynik:
Za każdym tyknięciem symulacji musisz wydrukować zawartość symulowanego wszechświata w nowej linii. Na przykład:
The universe contains 1 Higgs boson.
The universe contains 1 Higgs boson.
The universe contains 1 Higgs boson.
The universe contains 1 Higgs boson.
The universe contains 2 W bosons.
The universe contains 2 W bosons.
The universe contains 1 W boson, 1 positron and 1 neutrino.
The universe contains 1 positron, 1 antitau lepton and 2 neutrinos.
Simulation ended after 0.8 yoctoseconds.
Kolejność cząstek w linii nie jest ważna. Formatowanie musi być jednak dokładnie takie jak w powyższym przykładzie , w tym interpunkcja i liczba mnoga. Jeśli symulujesz cały (mini-) wszechświat, powinien on ładnie wyglądać (a ja chciałem wyeliminować nadużywanie zbyt mało ścisłego wymagania wyjściowego)
Każda linia odpowiada 0,1 yoctosekundom, ale zostaniesz wybaczony, jeśli wydruk zajmie więcej czasu niż program.
Symulacja kończy się, gdy pozostają tylko „stabilne” cząstki.
Punktacja
Obowiązują standardowe zasady gry w golfa.
Generator liczb losowych może być pseudolosowy, ale musisz go zaszczepić, jeśli język domyślnie go nie zaszczepi. Rozkład prawdopodobieństwa RNG musi być jednolity.
- Otrzymasz bonus -10% do rozmiaru kodu, jeśli program pobierze liczbę całkowitą jako dane wejściowe i zacznie od tak wielu bozonów Higgsa.
Wyjątek dla entuzjastów maszyn Turinga.
Dla tych, którzy odważą się spróbować szczęścia z prawdziwą maszyną Turinga lub podobnym językiem (takim jak Brainfuck), ich zadanie jest łatwiejsze dzięki następującym zmianom zasad (dotyczy tylko, jeśli język jest pochodną Brainfuck lub w inny sposób bardzo uproszczony Turing- maszynę, niezdolną do przypisania, brak ALU, a wartości na taśmie można zwiększać i zmniejszać tylko o jeden) :
- Nazwy cząstek są uproszczone do d, s, b, t, u, c dla kwarków, v dla neutrina, T dla leptonu tau, m dla mionu, g dla gluonu, p dla fotonu, Z, W i H dla bozony, - dla elektronu i + dla pozytonu. Przy każdym tiku wprowadzane są dane o wartości 0 lub 1 ze standardowego wejścia, wskazujące, czy pierwsza niestabilna cząstka na liście zanika, czy nie.
Przykładowy wynik będzie zatem
H
H
H
H
W W
W W
W + n
+ !T n n
SimulateUniverse
wbudowaną funkcję?