Функция TREE (k) дает длину самой длинной последовательности деревьев T 1 , T 2 , ... где каждая вершина помечена одним из k цветов, дерево T i имеет не более i вершин, и ни одно дерево не является несовершеннолетний любого дерева, следующего за ним в последовательности.
TREE (1) = 1, например, T 1 = (1)
.
TREE (2) = 3: например, T 1 = (1)
; Т 2 = (2)--(2)
; Т 3 = (2)
.
ДЕРЕВО (3) - это большое большое число. Даже больше, чем число Грэма. Ваша задача - вывести число, даже большее, чем оно!
Это код-гольф, поэтому цель состоит в том, чтобы написать самую короткую программу на любом языке, которая детерминистически выводит число, большее или равное TREE (3) (в стандартный вывод).
- Вы не можете принимать участие.
- Ваша программа должна в конечном итоге завершиться, но вы можете предположить, что машина имеет бесконечную память.
- Вы можете предположить, что числовой тип вашего языка может содержать любое конечное значение, но вам нужно объяснить, как это точно работает в вашем языке (например: имеет ли плавание бесконечную точность?)
- Бесконечности не допускаются как выходные данные.
- Недостаток числового типа вызывает исключение. Это не обернуть вокруг.
- Поскольку TREE (3) является таким комплексным числом, вы можете использовать приближение быстро растущей иерархии f ϑ (Ω ω ω) +1 (3) в качестве числа, которое нужно разбить.
- Вам необходимо предоставить объяснение, почему ваш номер такой большой, и версию вашего кода, не содержащую заглавных букв, чтобы проверить, является ли ваше решение действительным (поскольку нет компьютера с достаточным объемом памяти для хранения TREE (3) )
Примечание: Ни один из ответов в настоящее время не найдено здесь работа.
источник
TREE(3)+1
там я выигрываюОтветы:
Новый Рубин, 135 байт, >> H ψ (φ 3 (Ω + 1)) (9)
где H - иерархия Харди, ψ - расширенная версия OCF Мадора (поясню ниже), а φ - функция Веблена.
Попробуйте онлайн!
Ungolfed: (используя функции, а не лямбды)
Расширенный OCF Мадора:
И (грубо) фи функции Веблена:
Объяснение без ординалов:
Моя программа начинается
k = 9, h = [[],9,9]
. Затем применяетсяk = k*k
иh = f(h,k)
доh == 0
и выходыk
.Пояснение с порядковыми номерами:
('(ω ∙ α) ≈ ψ (α), ординальная коллапсирующая функция, описанная на рисунке выше.
Моя программа более или менее запускается,
k = 9
аh = Ω(↑9)9
затем применяетсяk ← k²
иh ← h[k,h]
доh = 1
и возвращаетсяk
.И поэтому, если я сделал это правильно,
[[],9,9]
он намного больше ординала Бахмана-Говарда ψ (Ω Ω Ω ... ), который намного больше, чем ϑ (Ω ω ω) +1.ψ (Ω (↓ 9) 9)> ψ (Ω (↓ 4) 3)> ψ (Ω Ω Ω ) +1> ψ (Ω Ω ω ω ) +1> ϑ (Ω ω ω) +1
И если мой анализ верен, то мы должны иметь ψ ′ (Ω Ω ∙ x) ~ = ψ * (Ω Ω ∙ x), где ψ * - это нормальная функция Мадси Пси. Если это верно, то мой порядковый номер приблизительно равен ψ * (φ 3 (Ω + ω)).
Старый Рубин, 309 байт, H ψ ' 0 (Ω 9 ) (9) (см. Историю изменений , кроме того, новый лучше)
источник
a.class!=Array
, самая идиоматическая,!a.is_a? Array
но самая короткая, о которой я могу думатьa!=[*a]
. И методы могут быть преобразованы в лямбды:f=->a,n=0,b=a{...}...f[x,y]
чтобы сохранить некоторые символы и, возможно, открыть возможности рефакторинга, используя их как первоклассные объекты.Haskell, 252 байта, TREE (3) +1
Спасибо за помощь от H.PWiz, Лайкони и Орьяна Йохансена за помощь в игре в гольф!
Как предполагает HyperNeutrino , моя программа выдает TREE (3) +1, точно (как оказалось, TREE вычислима).
T n c
это дерево с меткойc
и узламиn
.c
должно быть1
,2
или3
.l t
это количество узлов в деревеt
.t1 # t2
Истинно, еслиt1
гомеоморфно встраиваетсяt2
(в соответствии с определением 4.4 здесь ), и ложно в противном случае.a n
выводит большой список деревьев. Точный список не важен. Важным свойством является то , чтоa n
содержит каждое дерево доn
узлов, с узлами, меченным1
,2
, или3
, и , возможно , еще несколько деревьев , а также (но эти другие деревья также будут помечены1
,2
или3
). Также гарантированно выводится конечный список.s n
перечисляет все последовательности последовательностейn
деревьев, так что обратное (поскольку мы строим его в обратном порядке) этой последовательности является действительным. Последовательность действительна, если n-й элемент (где мы начинаем считать с 1) имеет не более n узлов, и ни одно дерево не гомеоморфно встраивается в более поздний.main
выводит наименьшееn
, так что нет допустимых последовательностей длиныn
.Так
TREE(3)
как определяется как длина самой длинной действительной последовательности, онаTREE(3)+1
является наименьшейn
, так что нет допустимых последовательностей длиныn
, которые выводит моя программа.источник
Python 2, 194 байта, ~ H ψ (Ω Ω Ω ) (9)
где H - иерархия Харди, а ψ - ординальная коллапсирующая функция ниже ординала Бахмана-Говарда, определенного Полерсом.
Спасибо Джонатану Фреху за -3 байта.
Попробуйте онлайн!
Лучше разнесенная версия:
Объяснение:
Эта программа реализует вариант гидры Бухгольца , используя только метки 0 и 1. По сути, на каждом шаге мы смотрим на первый листовой узел дерева и видим, помечен ли он 0 или 1.
-Если конечный узел помечен 0, то мы удаляем конечный узел, а затем копируем дерево, начиная с c родительского узла конечного узла, все копии, связанные с прародителем конечного узла.
-Если конечный узел помечен 1, то мы ищем обратно к корню, пока не достигнем узла предка, помеченного 0. Пусть S будет деревом, начинающимся с этого узла предка. Пусть S 'будет S с листовым узлом, перемаркированным с 0. Замените листовой узел на S'.
Затем мы повторяем процесс, пока у нас не останется ничего, кроме корневого узла.
Эта программа отличается от обычной процедуры гидра Бухгольца в двух отношениях: во-первых, после того, как мы выполним описанную выше процедуру, мы вернемся обратно в дерево и выполним процедуру копирования метки 0, описанную выше, для каждого узла-предка исходного листового узла. Это увеличивает размер дерева, поэтому наша процедура займет больше времени, чем обычная гидра Бухгольца, и, следовательно, приведет к большему числу в конце; тем не менее, он все равно завершится, потому что порядковый номер, связанный с новым деревом, будет все же меньше старого дерева. Другое отличие состоит в том, что вместо того, чтобы начинать с c = 1 и увеличивать 1 каждый раз, мы начинаем с c = 9 и возводим его в квадрат каждый раз, потому что почему бы и нет.
Дерево [[[1,1], 1], 0] соответствует порядковому ф (Ом Ом Ом ), что значительно больше , чем порядкового Q (Ом ш ш), и таким образом , наши в результате чего окончательное число около H ф (Ω Ω Ω ) (9) определенно превысит TREE (3).
источник
Ruby, 140 байт, ~ H ψ (Ω Ω Ω ) (81)
где H - иерархия Харди , а ψ - стандартная порядковая коллапсирующая функция ниже ординала Бахмана-Говарда, как здесь определено .
Попробуйте онлайн!
Безголовая версия:
Эта программа реализует гидру Бухгольца с узлами, помеченными [] и 1, как описано в моей записи Python 2.
Дерево [[], [1, [1,1]]] соответствует ординалу ψ (Ω Ω Ω ), который значительно больше ординала inal (Ω ω ω) = ψ (Ω Ω ω ω ), и Таким образом, полученное нами окончательное число около H ψ (Ω Ω Ω ) (81) превысит TREE (3).
источник
u==0?v:u==[]?v
вы могли бы написатьu==0?||u[0]?v
, что экономит два байта.Юлия, 569 байт, номер загрузчика
Чтобы сэкономить немного усилий, я решил портировать Loader.c на Julia почти один к одному и сжать его в блок кода выше. Для тех, кто хочет делать сравнения самостоятельно (либо для проверки моего выигрыша, либо для того, чтобы помочь мне найти ошибки или улучшить мой код), ниже приведена версия без заглядывания:
Никаких предыдущих подсчетов, потому что в агрессивном гольфе я сделал слишком много ошибок в байтах.
источник
JavaScript, 190B, H ψ (ε Ω + 1 ) (9) Основано на этом анализе
Эта программа является модифицированной версией перевода 225B с парным порядковым номером на JavaScript . Порядковый номер пары и их оригинальный код см. Здесь .
Сделанные изменения:
источник