Entrada
Inteiros a1, a2, a3, b1, b2, b3, cada um no intervalo de 1 a 20.
Saída
True if a1^(a2^a3) > b1^(b2^b3) and False otherwise.
^ é exponenciação nesta questão.
Regras
Isso é código-golfe. Seu código deve terminar corretamente em 10 segundos para qualquer entrada válida em um PC de mesa padrão.
Você pode produzir qualquer coisa Truthy for True e qualquer coisa Falsey for False.
Você pode assumir qualquer ordem de entrada que desejar, desde que especificada na resposta e sempre a mesma.
Para esta pergunta, seu código deve estar sempre correto. Ou seja, não deve falhar devido a imprecisões de ponto flutuante. Devido ao alcance limitado da entrada, isso não deve ser muito difícil de alcançar.
Casos de teste
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
Respostas:
Perl 6 ,
3129 bytes-2 bytes graças ao Grimy
Experimente online!
Acredite ou não, isso é não um esolang, mesmo que seja composto principalmente de asteriscos. Isso usa a fórmula de Arnauld , com log10 em vez de ln.
fonte
2^3^12 == 8^3^11
.R , 39 bytes
Experimente online!
Retorna FALSE quando
a > b
e VERDADEIRO seb < a
fonte
f(2,2,20,2,20,2)
2^3^12 == 8^3^11
.1^20^20 == 1^1^1
e1^1^1 == 1^20^20
.05AB1E ,
119117 bytesPorto de @Arnauld 's JavaScript e @Arnauld R do @digEmAll (eu os vi postando na mesma época)
-2 bytes graças a @Emigna
+2 bytes como correção de bugs após as respostas de @Arnauld e @digEmAll contidas um erro
-4 bytes agora que uma ordem de entrada diferente é permitida apósos comentários de @LuisMendo
De entrada como
[a1,b1]
,[a3,b3]
,[a2,b2]
como três entradas separadas.Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
ć
, mas esqueci completamente de usarš
(não sei por que agora que eu vejo isso, haha). Obrigado!Java (JDK) , 56 bytes
Experimente online!
Créditos
fonte
2^3^12 == 8^3^11
.Wolfram Language (Mathematica) , 23 bytes
Experimente online!
fonte
##>0&@@(##^1&@@@#)&
são apenas 19 bytes e ainda mais incompreensivelmente semelhantes ao Mathematica do que o código acima. (formato de entrada{{a,b,c},{d,e,f}}
)J ,
119 bytesExperimente online!
Argumentos dados como listas.
>
a esquerda é maior?&(...)
mas primeiro, transforme cada argumento assim:^.@^/
reduza-o da direita para a esquerda com exponência. Mas como a exponenciação comum limitará o erro, mesmo para números estendidos, pegamos os logs de ambos os ladosfonte
Limpo , 44 bytes
Experimente online!
Usa uma adaptação da fórmula de Arnauld.
fonte
2^3^12 == 8^3^11
.Python 3 , 68 bytes
Experimente online!
Resposta da porta do @Arnualds, mas com a base do log alterada.
fonte
^
é chamado**
em Python. E com isso alterado, você não poderá executar todos os casos de teste do OP.2^3^12 == 8^3^11
.05AB1E , 13 bytes
Usa o método da resposta JS de Arnauld
Experimente online!
fonte
b1=b2=b3=20
, sim, isso não termina.Excel, 28 bytes
Implementação em Excel da mesma fórmula já usada.
fonte
JavaScript, 51 bytes
Surpreendentemente, os casos de teste não mostram nenhum erro de ponto flutuante. Não sei se é desse tamanho.Isso apenas compara o logaritmo dos números.
A tolerância à igualdade é igual a
1e-8
.fonte
2^3^12 == 8^3^11
test case. In fact your answer is very similar to the original answer by Arnauld (sadly deleted rather than fixed) that inspired most of those which failed it.l(h)
to the right, and maybe it works now? Edit: Wait, it doesn't.0.01
.(5.820766091346741e-11,(8.0,3.0,11,2.0,3.0,12))
(meu caso de teste) e o mais baixo que você precisa incluir é(9.486076692724055e-4,(17.0,19.0,1,3.0,7.0,2))
(3^7^2 > 17^19^1
.) Portanto, algo como1e-8
deve estar em segurança no meio e com o mesmo comprimento de bytes.bc -l, 47 bytes
com a entrada lida
STDIN
, um número inteiro por linha.bc
é bem rápido; ele lida com a = b = c = d = e = f = 1.000.000 em pouco mais de um segundo no meu laptop.fonte
C++ (gcc), 86 bytes
Thanks to @ØrjanJohansen for pointing out a flaw in this and @Ourous for giving a fix.
Try it online!
Takes input as a 6-integer array. Returns 1 ifabc>def , 0 otherwise.
fonte
log
twice should bei[2]*log(i[1])+log(log(*i))
. E.g. the current one will fail for2^2^20 > 4^2^18
.pow
method then.2^3^12 == 8^3^11
problem I've pointed out for others.2^3^20 == 8^3^19
. In fact on average the power method fails for fewer, probably because it tends to multiply by powers of two exactly. Others have managed to make it work by just tweaking it slightly.Jelly, 8 bytes
Try it online!
Based on Arnauld’s JS answer. Expects as input
[a1, b1]
as left argument and[[a2, b2], [a3, b3]]
as right argument.Now changed to use log to the base 10 which as far as correctly handles all the possible inputs in the range specified. Thanks to Ørjan Johansen for finding the original problem!
fonte
2^3^12 == 8^3^11
.8*
, em vez de8**
. @ ØrjanJohansen é realmente correto que2**(3**12) > 8**(3**11)
é falsey, uma vez que são iguais.TI-BASIC,
2731 bytesEntrada é uma lista de comprimento6 no
Ans
.Saída true se o primeiro número grande for maior que o segundo número grande. Caso contrário, gera false.
Exemplos:
Explicação:
Nota: TI-BASIC é um idioma tokenizado. Contagem de caracteres não é igual à contagem de bytes.
fonte
log(x) × y × z
simlog(x) × y ^ z
. Isso não leva necessariamente à mesma ordem que a desigualdade original.APL (NARS), caracteres 36, bytes 72
Aqui abaixo da função z em (abc) z (xyt) retornaria 1 se a ^ (b ^ c)> x ^ (y ^ t) retornasse 0; teste
{(abc) ← =a = 1: ¯1⋄ ()a) + c × ⍟b} é a função p (a, b, c) = log (log (a)) + c * log (b ) = log (log (a ^ b ^ c)) e se aa = a ^ (b ^ c) com a, b, c> 0 e a> 1 bb = x ^ (y ^ t) com x, y, t> 0 ex> 1 que
Há um problema com a função p: Quando a é 1, o log de log 1 não existe, então eu escolhi representá-lo com o número -1; quando a = 2, então log log a é um número negativo, mas> -1.
PS. Visto a função em seu conjunto maior, no qual é definido
o intervalo de exibição para a, b, c em 1..20 é muito pequeno ... Se alguém observar quando ele ultrapassa a base de log 10, o intervalo para a, b, c pode ser de 1..10000000 ou maior para 64 bits tipo de flutuador.
fonte