Дехто з вас, можливо, знайомий з виграшем BigNum , який закінчився досить цікаво. Ціль може бути більш-менш сформульована як написання програми С, випуск якої був би найбільшим за певних обмежень і теоретичних умов, наприклад, комп’ютера, який міг би запускати програму.
У цьому ж дусі я ставлю перед собою подібний виклик, відкритий для всіх мов. Умови такі:
Максимум 512 байт .
Кінцевий результат повинен бути надрукований в STDOUT. Це ваш рахунок. Якщо буде надруковано кілька цілих чисел, вони будуть об'єднані.
Вихід повинен бути цілим числом. (Примітка. Нескінченність не є цілим числом .)
Немає вбудованих констант більше 10, але цифри / цифри є нормальними (наприклад, константа Авогадро (як вбудована константа) недійсна, але 10000 - ні.)
Програма повинна припинитись, якщо забезпечено достатню кількість ресурсів для запуску.
Друкований вихід повинен бути детермінованим, коли забезпечується достатня кількість ресурсів для запуску.
Вам передбачено достатньо великих цілих чисел або bigints для запуску вашої програми. Наприклад, якщо ваша програма вимагає застосовувати основні операції до чисел, менших від 10 000 000 , то ви можете припустити, що комп'ютер, на якому працює це, може працювати з числами щонайменше до 10 000 000 . (Примітка. Ваша програма може також запускатися на комп'ютері, який обробляє числа до 10000000 , тому просто виклик максимального цілого числа, з яким може працювати комп'ютер, не призведе до детермінованих результатів.)
Вам надається достатня обчислювальна потужність для вашої програми, щоб закінчити виконання за 5 секунд. (Тому не хвилюйтеся, якщо ваша програма працює на вашому комп’ютері протягом години і не закінчиться незабаром.)
Ніяких зовнішніх ресурсів, тому не думайте про імпорт цієї функції Ackermann, якщо вона не є вбудованою.
Усі магічні предмети тимчасово запозичуються у щедрого божества.
Надзвичайно великий з невідомою межею
- Стівен Н , Піт f 3 + B³F + ω² (256 26 )
де B³F - церковно-Клінова ординала з фундаментальною послідовністю
B³F[n] = B³F(n), the Busy Beaver BrainF*** variant
B³F[x] = x, ω ≤ x < B³F
Табло:
Просто красиве мистецтво , Ruby f ψ 0 (X (Ω M + X (Ω M + 1 Ω M + 1 ) )) + 29 (9 9 9 )
Стівен Н , Піт f ψ (Ω Ω ) + ω² + 183 (256 27! )
Leaky Nun , Python 3 f ε 0 (9 9 9 )
fejfo , Python 3 f ω ω 6 (f ω ω 5 (9e999))
Стівен Н , Пітон 3 f ω ω + ω² (9 9 9 99 )
Просто красиве мистецтво , Ruby f ω + 35 (9 9 99 )
i .. , Python 2 , f 3 (f 3 (141))
Деякі бічні примітки:
Якщо ми не можемо перевірити ваш результат, ми не можемо розмістити його в таблиці лідерів. Тож ви, можливо, захочете трохи роз’яснити свою програму.
Так само, якщо ви не розумієте, наскільки велика ваша кількість, поясніть свою програму, і ми спробуємо її розробити.
Якщо ви використовуєте тип програми навантажувача , я перенесу вас до окремої категорії під назвою "Надзвичайно велика з невідомою межею" , оскільки номер навантажувача не має нетривіальної верхньої межі з точки зору швидко зростаючої ієрархії для " стандартні 'фундаментальні послідовності.
Числа будуть класифіковані за швидко зростаючою ієрархією .
Для тих, хто хотів би навчитися використовувати швидко зростаючу ієрархію для наближення дійсно великих чисел, я розміщую сервер Discord саме для цього. Також є кімната для чатів: звичайність .
Подібні виклики:
Гольф на номер більше TREE (3)
Найкоротша програма завершення, розмір виходу якої перевищує кількість Грема
Для тих, хто хоче побачити декілька простих програм, які виводять швидко зростаючу ієрархію для малих значень, ось вони:
Ruby: швидко зростаюча ієрархія
#f_0:
f=->n{n+=1}
#f_1:
f=->n{n.times{n+=1};n}
#f_2:
f=->n{n.times{n.times{n+=1}};n}
#f_3:
f=->n{n.times{n.times{n.times{n+=1}}};n}
#f_ω:
f=->n{eval("n.times{"*n+"n+=1"+"}"*n);n}
#f_(ω+1):
f=->n{n.times{eval("n.times{"*n+"n+=1"+"}"*n)};n}
#f_(ω+2):
f=->n{n.times{n.times{eval("n.times{"*n+"n+=1"+"}"*n)}};n}
#f_(ω+3):
f=->n{n.times{n.times{n.times{eval("n.times{"*n+"n+=1"+"}"*n)}}};n}
#f_(ω∙2) = f_(ω+ω):
f=->n{eval("n.times{"*n+"eval(\"n.times{\"*n+\"n+=1\"+\"}\"*n)"+"}"*n);n}
тощо.
Щоб перейти від f_x
до f_(x+1)
, додамо одну петлю n.times{...}
.
Інакше ми діагоналізуємось проти всіх попередніх, наприклад
f_ω(1) = f_1(1)
f_ω(2) = f_2(2)
f_ω(3) = f_3(3)
f_(ω+ω)(1) = f_(ω+1)(1)
f_(ω+ω)(2) = f_(ω+2)(2)
f_(ω+ω)(3) = f_(ω+3)(3)
тощо.