Соревнование
Очень просто, учитывая вход x
, рассчитать его бесконечную башню власти!
x^x^x^x^x^x...
Для вас, любящих математику, это x
бесконечная тетрация .
Имейте в виду следующее:
x^x^x^x^x^x... = x^(x^(x^(x^(x...)))) != (((((x)^x)^x)^x)^x...)
Удивлен, у нас не было «простого» математического задания, связанного с этим! *
Предположения
x
всегда будет сходиться- Отрицательные и комплексные числа должны быть в состоянии обрабатываться
- Это код-гольф , поэтому побеждают младшие байты !
- Ваши ответы должны быть правильными, по крайней мере, до 5 десятичных знаков
Примеры
Input >> Output
1.4 >> 1.8866633062463325
1.414 >> 1.9980364085457847
[Square root of 2] >> 2
-1 >> -1
i >> 0.4382829367270323 + 0.3605924718713857i
1 >> 1
0.5 >> 0.641185744504986
0.333... >> 0.5478086216540975
1 + i >> 0.6410264788204891 + 0.5236284612571633i
-i >> 0.4382829367270323 -0.3605924718713857i
[4th root of 2] >> 1.239627729522762
* (Кроме более сложной задачи здесь )
Ответы:
APL (Дьялог) , 4 байта
Попробуйте онлайн!
*
сила⍣
до того как≡
стабильный⍨
селфиисточник
Pyth,
43 байтавычеркнуто 4 все еще регулярно 4; (
Попробуйте онлайн
Как это работает
источник
G
, оно будет заполнено автоматически.Haskell ,
10063 байтаДля входов, которые не сходятся (например,
-2
), это не прекратится:Большое спасибо @OrjanJohansen за то, что научили меня
until
и спасли мне37
байты!Попробуйте онлайн!
источник
until
функции. Попробуйте онлайн!until
, спасибо большое.Python 3 ,
40 3935 байтd>99
вместоd==99
: еще 1 итерация за меньшее количество байтx**True
оценивает x вx**(d>99or g(x,d+1))
. Выражение в терминах оценивается как True для глубины, превышающей 99, и, таким образом, возвращает переданное значение.Рекурсивная лямбда с максимальной глубиной 100, т.е. для глубины 100 возвращает одно и то же значение. На самом деле не зависит от конвергенции, поэтому ожидайте неожиданного для чисел с не сходящимися значениями для функции.
Попробуйте онлайн!
источник
complex('j')
на1j
d>99
делает еще одну итерацию и короче.g=lambda x,d=0:x**(d>99or g(x,d+1))
,x**True
оцениваетx
Python 3,
373027 байт-7 байт от @FelipeNardiBatista.
-3 байта от @xnor
Я больше не помню Python, но мне удалось перенести мой ответ Ruby и побить другой ответ Python 3: D
Попробуйте онлайн!
источник
x
,eval('x**'*99+'1')
работаетMathematica, 12 байт
Принимает число с плавающей точкой в качестве ввода.
источник
J , 5 байт
Попробуйте онлайн!
объяснение
Сначала я покажу, какая команда выполняется после синтаксического анализа
~
в конце, и пошаговое руководство будет для нового глагола.источник
(^^:_)
создает новый двоичный глагол с помощью выражения power, затем наречие self~
делает этот глагол монадическим, так что при задании аргументаx
он расширяется доx (^^:_) x
. левыйx
впоследствии «залипает», давая((x&^)^:_) x
на вашу заметку, и только правый аргумент изменяется во время итерации?x u^:n y
, левый аргумент связан с диадой с образованием монады, которая вложенныйn
раз наy
.x u^:n y -> (x&u)^:n y -> (x&u) ... n times ... (x&u) y
C # (.NET Core) ,
7978 байтПопробуйте онлайн!
Я выбрал итерацию до
i
= 999, потому что, если я повторял до 99, некоторые примеры не достигли требуемой точности. Пример:Как видите, после 99 итераций мнимая часть вышла из строя с 5-го знака после запятой.
В этом случае после 99 итераций мы получаем ожидаемую точность. На самом деле, я мог бы повторять до
i
= 1e9 с тем же количеством байтов, но это сделало бы код значительно медленнееисточник
Желе , 5 байт
Попробуйте онлайн!
источник
Рубин,
2120 байтОтказ от ответственности : кажется, что Ruby возвращает некоторые странные значения при возведении комплексного числа в степень. Я предполагаю, что для этой задачи нецелесообразно исправить весь математический модуль Руби, но в противном случае результаты этой функции должны быть правильными.редактировать : применил последние изменения из моего ответа Python 3, и вдруг он как-то дает те же, ожидаемые результаты :)Попробуйте онлайн!
источник
eval
."0+1i**0+1i**0+1i**..."
, которая неправильно обрабатывается, поскольку**
имеет более высокий приоритет, чем+
.#inspect
и#to_s
возвращают разные значения. Перед отправкой первоначального ответа я провел некоторое тестирование в irb и увидел, что, например, вводComplex(1,2)
в REPL даст(1+2i)
, включая скобки. Однако при строковом значении скобки не включаются, поэтому приоритет, как вы указали, испортил его.eval
использование было запрещено.TI-BASIC, 16 байтов
Вход и выход хранятся в
Ans
.источник
R ,
3633 байта- 3 байта благодаря Ярко Дуббелдаму
Читает со стандартного ввода.
Reduce
s справа, чтобы получить показатели в правильном порядке.Попробуй это (функция)
Попробуй это (стандартный)
источник
scan(,1i)
работает. Похоже на то, какscan(,'')
работает.Javascript, 33 байта
источник
МАТЛ ,
2010 байтсократить до половины благодаря @LuisMendo
Попробуйте онлайн!
Это мой первый код-гольф и мой первый раз, когда я использую MATL, так что я уверен, что его можно легко переиграть.
источник
XII
эквивалентноt
. Вы также можете избавитьсяXH
иH
с помощью автоматического буфера обменаM
, то естьttt^`yw^t5M-]bb-x
. И в последней части, вместо удаления ненужных значений, которые вы можете использовать&
, что говорит неявной функции отображения показывать только верхнюю часть. Таким образом, вы можете использоватьttt^`yw^t5M-]&
и сохранить несколько байтов.t
не нужен, и используяG
вместо другого ,t
вы можете избежать&
и , таким образом , оставить]
неявной:t^`Gw^t5M-
. Эй, мы сократили количество байтов вдвое!Perl 6 , 17 байт
Попробуйте онлайн!
R**
является оператором обратного возведения в степень;x R** y
равноy ** x
.[R**]
сокращает список из 999 копий входного аргумента с обратным возведением в степень.источник