Funkcja DRZEWO (k) podaje długość najdłuższej sekwencji drzew T 1 , T 2 , ... gdzie każdy wierzchołek jest oznaczony jednym z k kolorów, drzewo T i ma co najwyżej i wierzchołki, a żadne drzewo nie jest drobne z dowolnego drzewa następującego po nim w sekwencji.
DRZEWO (1) = 1, np. T 1 = (1)
.
DRZEWO (2) = 3: np. T 1 = (1)
; T 2 = (2)--(2)
; T 3 = (2)
.
DRZEWO (3) to duża, duża liczba. Nawet większa niż liczba Grahama. Twoim zadaniem jest wyprowadzenie jeszcze większej liczby !
Jest to golf kodowy, więc celem jest napisanie najkrótszego programu w dowolnym języku, który deterministycznie wyprowadza liczbę większą lub równą TREE (3) (na standardowe wyjście).
- Nie możesz przyjmować danych wejściowych.
- Twój program musi ostatecznie zakończyć się, ale możesz założyć, że maszyna ma nieskończoną pamięć.
- Możesz założyć, że typ liczbowy Twojego języka może zawierać dowolną skończoną wartość, ale musisz wyjaśnić, jak to dokładnie działa w twoim języku (np. Czy liczba zmiennoprzecinkowa ma nieskończoną precyzję?)
- Nieskończoności nie są dozwolone jako wynik.
- Niedomiar typu liczbowego powoduje wyjątek. Nie zawija się.
- Ponieważ DRZEWO (3) jest tak złożoną liczbą, możesz użyć szybko rosnącej aproksymacji hierarchii f ϑ (Ω ω ω) +1 (3) jako liczby do pokonania.
- Musisz podać wyjaśnienie, dlaczego Twój numer jest tak duży, oraz nieokreśloną wersję kodu, aby sprawdzić, czy Twoje rozwiązanie jest prawidłowe (ponieważ nie ma komputera z wystarczającą ilością pamięci, aby przechowywać TREE (3) )
Uwaga: Żaden z odpowiedziami obecnie znaleźć tu pracę.
code-golf
math
number
busy-beaver
PyRulez
źródło
źródło
TREE(3)+1
tam wygrywamOdpowiedzi:
Nowy Rubin, 135 bajtów, >> H ψ (φ 3 (Ω + 1)) (9)
gdzie H jest hierarchią Hardy'ego, ψ jest rozszerzoną wersją OCF Madore (wyjaśni poniżej), a φ jest funkcją Veblena.
Wypróbuj online!
Ungolfed: (używanie funkcji, nie lambdów)
Rozszerzony OCF Madore:
I (nieuprzejmie) funkcja ph Veblena:
Objaśnienie bez porządków:
Mój program się inicjuje
k = 9, h = [[],9,9]
. Następnie ma zastosowaniek = k*k
ih = f(h,k)
doh == 0
i wyjściak
.Objaśnienie z rzędnymi:
ψ '(ω ∙ α) ≈ ψ (α), funkcja zwijania porządkowego opisana na powyższym obrazku.
Mój program mniej lub bardziej wtajemniczeni
k = 9
ih = Ω(↑9)9
, a następnie stosuje sięk ← k²
ih ← h[k,h]
do czasuh = 1
i wracak
.I jeśli to zrobiłem dobrze,
[[],9,9]
jest znacznie większy niż porządek Bachmanna-Howarda ψ (Ω Ω Ω ... ), który jest znacznie większy niż ϑ (Ω ω ω) +1.ψ (Ω (↓ 9) 9)> ψ (Ω (↓ 4) 3)> ψ (Ω Ω Ω ) +1> ψ (Ω Ω ω ω ) +1> ϑ (Ω ω ω) +1
A jeśli moja analiza jest poprawna, powinniśmy mieć ψ '(Ω Ω ∙ x) ~ = ψ * (Ω Ω ∙ x), gdzie ψ * jest normalną funkcją psi Madore. Jeśli tak się dzieje, mój porządek wynosi w przybliżeniu ψ * (φ 3 (Ω + ω)).
Old Ruby, 309 bajtów, H ψ ' 0 (Ω 9 ) (9) (zobacz historię zmian , poza tym nowy jest o wiele lepszy)
źródło
a.class!=Array
, najbardziej idiomatyczne jest,!a.is_a? Array
ale najkrótsze, o czym myślęa!=[*a]
. I metody można przekształcić w lambdas:f=->a,n=0,b=a{...}...f[x,y]
aby uratować niektóre postacie i być może otworzyć możliwości refaktoryzacji, używając ich jako obiektów pierwszej klasy.Haskell, 252 bajtów, DRZEWO (3) +1
Dziękujemy za pomoc H.PWiz, Laikoni i Ørjan Johansen za pomoc w grze w kod!
Jak sugeruje HyperNeutrino , mój program wypisuje TREE (3) +1 dokładnie (TREE jest obliczalny, jak się okazuje).
T n c
to drzewo z etykietąc
i węzłamin
.c
powinny być1
,2
albo3
.l t
to liczba węzłów w drzewiet
.t1 # t2
jest prawdą, jeślit1
homeomorficznie osadza sięt2
(w oparciu o definicję 4.4 tutaj ), a fałsz w przeciwnym razie.a n
wyświetla dużą listę drzew. Dokładna lista nie jest ważna. Ważne jest to, że właściwośća n
zawiera każde drzewo don
węzłów, przy czym węzły oznakowane1
,2
lub3
, a może kilka drzew, jak również (ale te inne drzewa zostaną również oznakowane1
,2
lub3
). Gwarantowane jest również wygenerowanie skończonej listy.s n
wypisuje wszystkie sekwencje długościn
drzew, tak aby odwrotność (ponieważ budujemy ją wstecz) tej sekwencji była poprawna. Sekwencja jest poprawna, jeśli n-ty element (od którego zaczynamy liczenie od 1) ma co najwyżej n węzłów, a żadne drzewo homeomorficznie nie osadzi się w późniejszym.main
drukuje najmniejsze,n
tak że nie ma prawidłowych sekwencji długościn
.Ponieważ
TREE(3)
jest zdefiniowany jako długość najdłuższej prawidłowej sekwencji,TREE(3)+1
jest najmniejszy,n
tak że nie ma prawidłowych sekwencji długościn
, co wyprowadza mój program.źródło
Python 2, 194 bajtów, ~ H ψ (Ω Ω Ω ) (9)
gdzie H jest hierarchią Hardy'ego, a ψ jest porządkową funkcją zwijania pod porządkiem Bachmanna-Howarda zdefiniowanym przez Pohlersa.
Podziękowania dla Jonathana Frecha za -3 bajty.
Wypróbuj online!
Wersja z lepszymi odstępami:
Wyjaśnienie:
Ten program implementuje wariant hydry Buchholza , używając tylko etykiet 0 i 1. Zasadniczo, na każdym kroku, patrzymy na pierwszy węzeł liścia drzewa i sprawdzamy, czy jest on oznaczony 0 lub 1.
-Jeśli węzeł liścia jest oznaczony cyfrą 0, usuwamy węzeł liścia, a następnie kopiujemy drzewo zaczynając od elementu nadrzędnego węzła liścia c razy, wszystkie kopie połączone z dziadkiem węzła liścia.
-Jeśli węzeł liścia jest oznaczony cyfrą 1, wówczas szukamy wstecz w kierunku korzenia, aż dojdziemy do węzła przodka oznaczonego 0. Niech S będzie drzewem zaczynającym się od tego węzła przodka. Niech S 'będzie S z węzłem liścia oznaczonym etykietą 0. Zastąp węzeł liścia literą S'.
Następnie powtarzamy ten proces, dopóki nie zostanie nam nic oprócz węzła głównego.
Ten program różni się od zwykłej procedury hydry Buchholza na dwa sposoby: Po pierwsze, po wykonaniu powyższej procedury, ponownie wykonujemy kopię zapasową drzewa i wykonujemy procedurę kopiowania etykiety 0 opisaną powyżej dla każdego węzła przodka oryginalnego węzła liścia. Zwiększa to rozmiar drzewa, więc nasza procedura potrwa dłużej niż zwykła hydra Buchholza, a zatem doprowadzi do większej liczby; jednak nadal będzie wygasać, ponieważ porządek związany z nowym drzewem nadal będzie mniej starym drzewem. Inna różnica polega na tym, że zamiast zaczynać od c = 1 i zwiększać 1 za każdym razem, zaczynamy od c = 9 i za każdym razem zwiększamy kwadrat, ponieważ dlaczego nie.
Drzewo [[[1,1], 1], 0] odpowiada porządkowej ψ (Ω Ω Ω ), która jest znacznie większa niż porządkowa ϑ (Ω ω ω), a więc nasza wynikowa liczba około H ψ (Ω Ω Ω ) (9) zdecydowanie przekroczy DRZEWO (3).
źródło
Rubinowy, 140 bajtów, ~ H ψ (Ω Ω Ω ) (81)
gdzie H jest hierarchią Hardy'ego , a ψ jest standardową funkcją zwijania porządkowego pod porządkiem Bachmanna-Howarda, jak zdefiniowano tutaj .
Wypróbuj online!
Wersja bez golfa:
Ten program implementuje hydrę Buchholza z węzłami oznaczonymi [] i 1, jak opisano w moim wpisie w Pythonie 2.
Drzewo [[], [1, [1,1]]] odpowiada porządkowej ψ (Ω Ω Ω ), która jest znacznie większa niż porządkowa ϑ (Ω ω ω) = ψ (Ω Ω ω ω ), i więc nasza końcowa liczba około H ψ (Ω Ω Ω ) (81) przekroczy DRZEWO (3).
źródło
u==0?v:u==[]?v
można pisaću==0?||u[0]?v
, co oszczędza dwa bajty.Julia, 569 bajtów, numer modułu ładującego
Aby zaoszczędzić trochę miejsca na pracy, postanowiłem przenieść Loader.c do Julii prawie jeden na jednego i umieścić go w powyższym bloku kodu. Dla tych, którzy chcą dokonać porównań (aby zweryfikować moją punktację lub pomóc mi znaleźć błędy lub poprawić kod), poniżej znajduje się wersja bez golfa:
Nie liczyło się to wcześniej, ponieważ zrobiłem zbyt wiele błędnych rachunków w agresywnym golfie.
źródło
JavaScript, 190B, H ψ (ε Ω + 1 ) (9) Na podstawie tej analizy
Ten program jest zmodyfikowaną wersją tego tłumaczenia numeru par 225B w JavaScript . Aby zobaczyć numer sekwencji i ich oryginalny kod, patrz tutaj .
Dokonane modyfikacje:
źródło