Compare dois números N 1 = a b c , N 2 = d e f construindo uma função f (a, b, c, d, e, f) que:
- retorna 1 se N 1 > N 2
- retorna -1 se N 1 <N 2
Nota: Você não é obrigado a retornar nenhum valor para qualquer outra relação entre N 1 e N 2 . por exemplo, quando são iguais ou quando sua relação é indefinida (números complexos).
outras restrições:
- todos os números são inteiros
- a, b, c, d, e, f podem ser positivos ou negativos, mas não zero.
- | a |, | d | <1000
- | b |, | c |, | e |, | f | <10 10
- tempo de execução menos de alguns segundos
Exemplos:
f(100,100,100,50,100,100) = 1
f(-100,100,100,50,100,100) = 1
f(-100,99,100,50,100,100) = -1
f(100,-100,-100, -1, 3, 100) = 1
f(535, 10^9, 10^8, 443, 10^9, 10^9) = -1
Isso é código de golfe. O menor código vence.
Respostas:
Mathematica, 110 caracteres
fonte
3,-3,3,-4,1,1
, se não me engano completamente (não tenha o Mathematica aqui, mas o Wolfram Alpha parece concordar ).z[a_,b_,c_,d_,e_,f_]:=Sign[Log[Abs[a]]b^c-Log[Abs[d]]e^f]
que é consideravelmente mais longo do que o que você tem por lá. Provavelmente estou perdendo alguma coisa aqui.z[535, 10^9, 10^8, 443, 10^9, 10^9]
?Ruby 1.9,
280 227 189171 caracteresEu sei que isso é um pouco mais do que as outras soluções, mas pelo menos essa abordagem deve funcionar sem calcular a b c , d e f , b c ou e f .
Editar:
a**b**c < 0
ed = 1
.log(log(a)/log(d))
vez delog(log(a))-log(log(d))
.Casos de teste:
fonte
ShortScript , 89 bytes
A implementação não é exatamente a descrita, mas funciona.
Esta resposta não é concorrente, pois o ShortScript foi publicado após esse desafio.
fonte
Python 2.6 (isso realmente não funciona)
hoje eu aprendi python tem uma função de log complexa. portanto, faça um registro cego dos dois lados e observe o componente real. funciona para 4 dos 5 testes. não sei o que está acontecendo com o quarto.fonte
Python (99)
fonte
Haskell, 44 caracteres
É executado em menos de um segundo para todos os exemplos de teste na minha máquina.
fonte
b
paran
) o tipo de função f foi dada porf :: (Ord a, Num a, Integral b2, Integral (Bool -> t), Integral b, Integral b1) => a -> (Bool -> t) -> b -> a -> b1 -> b2 -> t
Coisas bem estranhas, hein?