Текст аромату
Стек на основі 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 дає оптимальне поєднання бінарних та коефіцієнтних методів для пошуку ланцюга додавання.