Текст аромату
Стек на основі esolang Underload має деякі цікаві зв'язки з функціональним програмуванням. Один з них - це обробка числового типу даних - подібно до обчислення лямбда, ви представляєте натуральне число N функцією, яка виконує дію N разів.
Щоб зробити це просто, ми розглянемо лише наступний підмножина команд Underload:
:- Ця команда дублює верхній елемент у стеку.*- Ця команда об'єднує два найпопулярніші елементи стека в один елемент.
Ми визначаємо цифру Underload N як рядок :і, *що при виконанні, споживає верхній елемент у стеку, і створюємо N примірників цього елемента, з'єднаних разом. Деякі приклади:
- Немає цифр Underload 0, -1, 1/2, π.
- Порожній рядок
є цифрою Underload 1, тому що він залишає стек недоторканим. :*є цифрою Underload 2, оскільки вона дублює верхній елемент, а потім об'єднує ці дві копії разом в один елемент:(A):*=(A)(A)*=(AA).::**- цифра нижнього завантаження 3:(A)::**=(A)(A):**=(A)(AA)*=(AAA).:::***- цифра 4.:*:*також є цифрою Underload 4:(A):*:*=(AA):*=(AA)(AA)*=(AAAA).
Загалом, ви побачите, що якщо Mі Nє цифри Underload M і N, то :N*це число N + 1, і MNце число M × N.
Змагання
Ваше завдання полягає в тому, щоб написати найкоротшу програму (прийняття вводу на STDIN) або функцію (прийняття вводу через аргумент), яка створює найкоротше представлення цифри Underload для її введення у вигляді рядка. Тобто, якщо вхідне значення є натуральним натуральним числом N> 1, ви повинні створити число N нижнього завантаження N, довжина якого у символах менша або дорівнює довжині будь-якого іншого числа Underload.
Зразки входів і виходів: ("Введення - OUTPUT.")
- 1 -
. - 2 -
:*. - 5 -
::*:**(2 × 2 + 1). - 7 -
::*::***(2 × 3 + 1) або:::**:**(3 × 2 + 1). - 33 -
::*:*:*:*:**(2 × 2 × 2 × 2 × 2 + 1). - 49 -
::*:*:*:*::***(16 × 3 + 1, довжина 14), але не::*::***::*::***(7 × 7, довжина 16).
Якщо вхід не є натуральним натуральним числом, ви можете повернути помилку, викликати невизначене поведінку або навіть не вдатися до припинення. Оцінено пояснення методу Вашого подання для пошуку відповіді.
Застосовуються стандартні обмеження лазівки: жоден додатковий ввід, ніякі веб-запити, значення виводу / повернення не повинні бути точно відповіддю, а не нескінченним випадковим потоком :і *т.д.
xполягає в тому, 2*A117498(x)де A117498 дає оптимальне поєднання бінарних та коефіцієнтних методів для пошуку ланцюга додавання.