вход
Целые числа a1, a2, a3, b1, b2, b3, каждое в диапазоне от 1 до 20.
Выход
True if a1^(a2^a3) > b1^(b2^b3) and False otherwise.
^ это возведение в степень в этом вопросе.
правила
Это код-гольф. Ваш код должен завершаться правильно в течение 10 секунд для любого допустимого ввода на стандартном настольном ПК.
Вы можете вывести что-нибудь Truthy для True и что-нибудь Falsey для False.
Вы можете принять любой порядок ввода, который вам нравится, если он указан в ответе и всегда одинаков.
Для этого вопроса ваш код всегда должен быть правильным. То есть он не должен выходить из строя из-за неточностей с плавающей запятой. Из-за ограниченного диапазона входных данных это не должно быть слишком трудным для достижения.
Контрольные примеры
3^(4^5) > 5^(4^3)
1^(2^3) < 3^(2^1)
3^(6^5) < 5^(20^3)
20^(20^20) > 20^(20^19)
20^(20^20) == 20^(20^20)
2^2^20 > 2^20^2
2^3^12 == 8^3^11
1^20^20 == 1^1^1
1^1^1 == 1^20^20
Ответы:
Perl 6 ,
3129 байт-2 байта благодаря Грими
Попробуйте онлайн!
Верьте или нет, это не esolang, даже если он состоит в основном из звездочек. При этом используется формула Арно , с log10 вместо ln.
источник
2^3^12 == 8^3^11
.R , 39 байт
Попробуйте онлайн!
Возвращает FALSE когда
a > b
и TRUE еслиb < a
источник
f(2,2,20,2,20,2)
2^3^12 == 8^3^11
.1^20^20 == 1^1^1
и1^1^1 == 1^20^20
.05AB1E ,
119117 байтПорт @Arnauld 's JavaScript и @digEmAll 's R подходов (я видел их примерно в одно и то же время)
-2 байта благодаря @Emigna
+2 байта как исправлению ошибки после того, как ответы @Arnauld и @digEmAll содержали ошибка
-4 байта теперь, когда после комментариев @LuisMendo разрешен другой порядок ввода
Входные данные, как
[a1,b1]
,[a3,b3]
, в[a2,b2]
виде трех разделенных входов.Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
ć
, но совершенно забыл об использованииš
(не уверен, почему теперь, когда я вижу это, ха-ха). Благодарность!Java (JDK) , 56 байт
Попробуйте онлайн!
кредиты
источник
2^3^12 == 8^3^11
.Wolfram Language (Mathematica) , 23 байта
Попробуйте онлайн!
источник
##>0&@@(##^1&@@@#)&
всего 19 байтов и еще более ошеломляюще не Mathematica-подобный, чем код выше. (формат infput{{a,b,c},{d,e,f}}
)J ,
119 байтПопробуйте онлайн!
Аргументы приведены в виде списков.
>
левый больше?&(...)
но сначала преобразуйте каждый аргумент следующим образом:^.@^/
уменьшите это справа налево с показателем. Но поскольку обычное возведение в степень ограничит ошибку даже для расширенных чисел, мы берем журналы обеих сторонисточник
Чисто , 44 байта
Попробуйте онлайн!
Использует адаптацию формулы Арно.
источник
2^3^12 == 8^3^11
.Python 3 , 68 байт
Попробуйте онлайн!
Порт @Arnualds отвечаю, но база для логов изменилась.
источник
^
называется**
в Python. И после этого вы не сможете запускать все тестовые сценарии OP.2^3^12 == 8^3^11
.05AB1E , 13 байтов
Использует метод из ответа Арнаулда JS
Попробуйте онлайн!
источник
b1=b2=b3=20
, да, это не заканчивается.Excel, 28 байт
В Excel реализация той же формулы уже используется.
источник
JavaScript, 51 байт
Удивительно, но тестовые примеры не показывают ошибок с плавающей точкой. Я не знаю, будет ли это когда-либо в таком размере.Это просто сравнивает логарифм чисел.
Равенство терпимости равно
1e-8
.источник
2^3^12 == 8^3^11
тестом На самом деле ваш ответ очень похож на первоначальный ответ Арно (к сожалению, он был удален, а не исправлен), который вдохновил большинство тех, кто его провалил.l(h)
вправо, а может, сейчас работает? Изменить: Подождите, это не так.0.01
.(5.820766091346741e-11,(8.0,3.0,11,2.0,3.0,12))
(мой тестовый пример), а минимальное -(9.486076692724055e-4,(17.0,19.0,1,3.0,7.0,2))
(3^7^2 > 17^19^1
.), Поэтому что-то вроде1e-8
должно быть безопасно в середине и иметь одинаковую длину байта.bc -l, 47 байт
с входным чтением
STDIN
, по одному целому числу на строку.bc
довольно быстро; он обрабатывает a = b = c = d = e = f = 1 000 000 за чуть более секунды на моем ноутбуке.источник
C ++ (gcc) , 86 байт
Спасибо @ ØrjanJohansen за указание на недостаток в этом и @Ourous за исправление.
Попробуйте онлайн!
источник
log
дважды должна бытьi[2]*log(i[1])+log(log(*i))
. Например, текущий не удастся2^2^20 > 4^2^18
.pow
метод тогда.2^3^12 == 8^3^11
проблема, которую я указал для других.2^3^20 == 8^3^19
. Фактически, в среднем, силовой метод терпит неудачу меньше, вероятно, потому что он имеет тенденцию умножаться точно на степени двух. Другим удалось заставить его работать, просто слегка его подправив.Желе , 8 байт
Попробуйте онлайн!
Основано на ответе Арно . Ожидается как вход
[a1, b1]
как левый аргумент и[[a2, b2], [a3, b3]]
как правый аргумент.Теперь изменилось, чтобы использовать log для базы 10, которая насколько правильно обрабатывает все возможные входы в указанном диапазоне. Спасибо Орджану Йохансену за то, что он нашел оригинальную проблему!
источник
2^3^12 == 8^3^11
.8*
вместо8**
. @ ØrjanJohansen действительно правильно, что2**(3**12) > 8**(3**11)
это ложь, так как они равны.TI-BASIC,
2731 байтAns
Примеры:
Объяснение:
Примечание: TI-BASIC - это токенизированный язык. Количество символов не равно количеству байтов.
источник
log(x) × y × z
не такlog(x) × y ^ z
. Это не обязательно приведет к тому же порядку, что и исходное неравенство.APL (NARS), символы 36, байты 72
Здесь ниже функция z в (abc) z (xyt) вернет 1, если a ^ (b ^ c)> x ^ (y ^ t), в противном случае вернет 0; тест
{(abc) ← ⍵⋄a = 1: ¯1⋄ (⍟⍟a) + c × ⍟b} - функция p (a, b, c) = log (log (a)) + c * log (b) ) = log (log (a ^ b ^ c)) и, если aa = a ^ (b ^ c) с a, b, c> 0 и a> 1 bb = x ^ (y ^ t) с x, y, t> 0 и x> 1, чем
Существует проблема с функцией p: когда a равно 1, log log 1 не существует, поэтому я решил представить это числом -1; когда a = 2, так что log log a - отрицательное число, но> -1.
PS. Видела функцию в ее большем наборе, в котором определяется
диапазон появления для a, b, c в 1..20 слишком мал ... Если посмотреть, когда он переполняется с помощью базы 10 журналов, диапазон для a, b, c может быть 1..10000000 или больше для 64-битного Тип поплавка.
источник