Разве не было бы замечательно, если бы функции программирования можно было инвертировать, точно так же, как математические функции, которые они реализуют?
Напишите функцию (или программу), которая принимает один вход x
в любой форме, который выводит ln(x)
.
Когда байты программы переупорядочены / перевернуты так, что первый байт теперь является последним байтом, он должен принимать один вход x
в любой форме и выводить e^x
вместо него.
- Ваш ответ должен содержать не менее 3 правильных значащих цифр.
- Аппроксимации хороши, если они имеют как минимум 3 правильные значащие цифры.
- Ваш код должен быть на одном языке программирования как вперед, так и назад.
Допустим, эта программа реализует ln(x)
:
abc你好
Тогда эта программа должна реализовать e^x
:
\xBD\xA5\xE5\xA0\xBD\xE4cba
Золотая звезда, если вы используете язык без поддержки плавания.
Это странная форма игры в гольф, поэтому выигрывает самая короткая программа.
code-golf
arithmetic
source-layout
Филип Хаглунд
источник
источник
?
, в которой используется секущий метод.Ответы:
Haskell, 11 байт
и в обратном порядке:
Это работает без уловки "комментария". Вместо этого каждая версия определяет дополнительную, но неиспользуемую функцию (
pxe
/gol
).источник
gol=f
.APL, 3 байта
Это функциональный поезд. Монадические
*
возвратыe^x
, монадические⍟
возвратыln(x)
.⊣
является диадической функцией, которая возвращает свой левый аргумент. Таким образом,*⊣⍟
эквивалентно справедливому*
, а обратное⍟⊣*
эквивалентно справедливому⍟
.источник
Желе,
54 байтаYay, мой первый ответ Jelly. :) Ввод осуществляется через аргумент командной строки.
У желе есть своя собственная кодовая страница, поэтому каждый символ составляет один байт.
Попробуйте онлайн!
Перевернутый:
Попробуйте онлайн!
объяснение
Сам
Æ
по себе это нераспознанный токен, поэтому он действует так же, как перевод строки. Это означает, что в любом случае основная ссылка является единственнойÆl
илиÆe
которая является 2-символьной встроенной дляexp()
илиln()
и по умолчанию выполняется для первого аргумента командной строки.источник
Javascript, 18 байт
источник
Math.ln||pxe.htaM
вероятно, тоже будет работать.Серьезно, 5 байт
Input, ln, output, затем exp в пустом стеке (ничего не делает) и input (ничего не делает, так как ввод исчерпан). Попробуйте онлайн!
Перевернутый:
Попробуйте онлайн!
источник
Юлия, 7 байт
Это анонимная функция. Назначьте это переменной, чтобы вызвать это. Оценивает встроенные
log
илиexp
плюс комментарий.источник
Mathematica, 19 байт
Перевернутый:
Это было интересно для гольфа! Mathematica не имеет комментариев к строке / неявных окончаний строки, поэтому я не мог выбрать простой маршрут. Вместо этого я использовал тот факт , что
0 + x == x
,0 x == 0
и что1 x == x
, независимо от того , чтоx
есть! Тестирование:источник
Python2, 73 байта
io: стандартный ввод / вывод
обратное:
источник
__import__("math").
вместоCJam, 11 байт
Проверьте это здесь.
Перевернутый:
Проверьте это здесь.
В основном тот же трюк с комментариями, что и в ответе Python от OP.
e#
начинает комментарийrd
читает входные данные и /ml
илиme
вычисляет логарифм или экспоненту.источник
Брахилог , 3 байта
Попробуйте онлайн!
Первоначально я надеялся использовать
~*
, но, хотя*~
вычисляетe^x
и успешно игнорирует завершающую тильду, происходит~*
сбой для всех целочисленных входных данных и попадает в переполнение с плавающей запятой на большинстве нецелых входных данных.Вперед:
Backwards:
При этом используется предикат идентификации, поскольку, хотя конечные тильды допускаются, ведущие подписчики - нет. (Если бы они были, ответ Brachylog был бы
*₁
один, который является просто нормальным встроенным для естественного журнала.)источник
Витси, 5 байтов
Это программа, которая завершается с ошибкой.
Эта программа завершается с ошибкой с ln (вход) в стеке.
Попробуйте онлайн! (обратите внимание, что я поставил,
N
чтобы иметь видимый вывод)Тогда все наоборот:
Эта программа завершается с ошибкой с e ^ (input) в стеке.
Попробуйте онлайн!
источник
Нечеткое окто гуакамоле, 7 байтов
неконкурентный, FOG новее, чем вызов
Это эквивалент функции в FOG. Предполагается, что вход находится в стеке. Это может быть назначено функции с помощью кода
"EZO@pZE""f"o
, гдеf
любое имя с одним символом вы хотите назначить. Затем используйте его как любую другую команду. Пример:"EZO@pZE"'f'o^f
.Объяснение:
Перевернутый:
источник
Matl, 5 байт
Yl
: logZe
: exp%
: комментарийисточник
Pyth, 12 байт
Находки
ln(input())
Находки
e^input()
Пробелы останавливают неявную печать строк, каждая версия вычисляет ее, а затем создает строку с оставшимися символами.
ln(x)
режим здесьe^x
режим здесьисточник
𝔼𝕊𝕄𝕚𝕟, 8 символов / 10 байтов
Try it here (Firefox only).Try reverse here (Firefox only).
Всего 2 встроенных, разделенных комментарием.
источник
Джольф, 9 байт
Программа 1:
exp
вводаПрограмма 2:
ln
вводаБонусные баллы за то, что не учитывает регистр палиндром? Попробуй это здесь!
источник
J, 8 байт
Натуральный логарифм имеет
^.
экспоненциальный характер^
. Проблема в том, что.
можно изменить только действительный глагол, иначе произойдет орфографическая ошибка. Таким образом, мы не можем использовать левый трюк аргумента в ответе APL, потому^.[^
что при обратном вызове возникнет ошибка, так как^[.^
создаст недопустимый глагол. Итак, мы должны использовать комментарии; ноNB.
так долго :( К счастью, они оба заканчиваются.
, так что & ldots; есть это.Логарифм:
Экспоненциальная:
Вы можете ввести их для себя онлайн !
источник
Java 8,
19818230 байтПопробуйте онлайн.
и наоборот:
Попробуйте онлайн.
Использует трюк комментария (
//
) со встроенными модулями дляMath.log
иMath.exp
.источник
Рунические чары , 9 байт
Попробуйте онлайн!
Безбожная неинтересная программа.
@
обеспечивает завершение подразумеваемой точки входа слева, все после не выполняется. Я очень старался повторно использовать инструкции'
илиA
, но безрезультатно, даже при больших размерах программ. Требуемая явная точка входа для многострочных программ по существу исключает это.источник