Математичні характеристики:
Кожен фрагмент коду Mathemania починається з числа 2
. З цього 2
пункту Ви можете виконати наступні операції:
e
: Експоненція. За замовчуванням для цієї команди відбувається порівняння числа.f
: Факторський. За замовчуванням для цієї команди використовується єдиний фактор на число (using f on 2 = 2! = 2
).r
: Корінь. За замовчуванням цієї команди - це квадратне коріння числа.c
: Стельова функція.l
: Функція підлоги.
Щоб створити число в Mathemania, ви повинні з'єднати ці команди, які виконуються зліва направо на число 2
.
Приклади:
ef = (2^2)! = 4! = 24
rl = floor(sqrt(2)) = floor(1.4...) = 1
er = sqrt(2^2) = sqrt(4) = 2
efrrc = ceil(sqrt(sqrt((2^2)!)))
= ceil(sqrt(sqrt(24)))
= ceil(sqrt(4.89...))
= ceil(2.21...)
= 3
В e
, f
і r
команди можуть бути змінені з допомогою додаткових команд Mathemania (які також починають з в 2
якості «базового» номера) для створення різного зведення в ступені, факториалов і коренів, поміщаючи дужки після зміненої функції і розміщення команд Mathemania всередині нього.
Наприклад, для куба числа замість того, щоб складати його, ви можете поставити команду для 3
після e
подібного:
e(efrrc) -> cube a number, "efrrc" = 3
ПРИМІТКА. Для нашої мети командна команда ( f
) починається з 2
одного фактора. Отже, якщо ви це зробите f(efrrc)
, це буде оцінено подвійним факторіальним, а не потрійним факторіальним.
Для n
-факторіалів (наприклад, подвійних факторіалів = 2-факторіал, потрійний факторіал = 3-факторіал тощо) базове число помножується на число, n
менше за нього, і n
менше, ніж таке, і так далі, поки остаточне число не може бути віднімається, n
не стаючи 0
чи від’ємником.
Наприклад:
7!! = 7 * 5 * 3 * 1 = 105 (repeatedly subtract 2, 1 is the last term as
1 - 2 = -1, which is negative)
9!!! = 9 * 6 * 3 = 162 (repeatedly subtract 3, 3 is the last term as
3 - 3 = 0, which is 0)
Більше інформації дивіться тут .
Ви можете вставити його куди завгодно, і Mathemania вважатиме це єдиною функцією:
e(efrrc)rc = ceil(sqrt(2^3))
= ceil(2.82...)
= 3
Вам також дозволено вкладати їх всередину:
e(e(e)) = e(4th power)
= (2^4)th power
= 16th power
Для перекладача коду Mathemania натисніть тут (ура, @ BradGilbertb2gills!)
Завдання:
Ваше завдання - створити програму, яка при n
введенні додатного цілого числа як вхідного сигналу генерує програму Mathemania, яка при виконанні повертається n
.
Тим НЕ менше, програма Mathemania що ви породжує повинна бути як малі (golfed) , наскільки це можливо, і ваш підсумковий результат визначається сумою числа байт в згенерованих програмах Mathemania зразка, які є цілими числами 10,000
в 10,100
. Виграє найнижчий бал.
Правила та характеристики:
- Ваша програма повинна вивести дійсну програму Mathemania для будь-якого додатного цілого числа, але тільки числа між
10,000
і10,100
буде перевірена. - Вам заборонено виводити програми Mathemania, які не призводять до цілого числа. Якщо ви це зробите, вашу програму дискваліфікують.
- Для команд
e
,f
іr
, код Mathemania всередині цих функцій (наприкладe(efrrc)
, колиefrrc
це код всередині функції) повинен оцінювати з позитивним цілим числом вище2
. Якщо ваша програма не дотримується цього правила, вона також буде дискваліфікована. - Ваша програма повинна повернути програму Mathemania для будь-якого з 101 тестових чисел не пізніше 30 хвилин на сучасному ноутбуці.
- Програма повинна повертати те саме рішення для будь-якого цілого числа кожного разу, коли воно запускається. Наприклад, коли програмі дається вхід
5
і вона виводитьefrc
, вона повинна виводити щоразу, коли вводиться вхід5
. - Ви не можете жорстко кодувати будь-які рішення для будь-якого додатного цілого числа.
- Для того, щоб максимально використати потенціал для гольфу у ваших результатах, ваша програма повинна мати можливість обробляти довільно великі цілі числа. Це не є вимогою, хоча удачі, якщо ваша мова цього не підтримує.
Це метагольф , тому найнижчий бал виграє!
ef
наприклад, чи дозволено код "пропустити" та просто вивести результат перед ef
операцією?