Математичні характеристики:
Кожен фрагмент коду 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операцією?