Compare dos números N 1 = a b c , N 2 = d e f construyendo una función f (a, b, c, d, e, f) que:
- devuelve 1 si N 1 > N 2
- devuelve -1 si N 1 <N 2
Nota: No es necesario que devuelva ningún valor para ninguna otra relación entre N 1 y N 2 . por ejemplo, cuando son iguales o cuando su relación es indefinida (números complejos).
otras restricciones:
- todos los números son enteros
- a, b, c, d, e, f pueden ser positivos o negativos pero no cero.
- | a |, | d | <1000
- | b |, | c |, | e |, | f | <10 10
- tiempo de ejecución de menos de unos segundos
Ejemplos:
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
Este es el código de golf. El código más corto gana.
Respuestas:
Mathematica, 110 caracteres
fuente
3,-3,3,-4,1,1
, si no estoy completamente equivocado (no tengo Mathematica aquí, pero Wolfram Alpha parece estar de acuerdo ).z[a_,b_,c_,d_,e_,f_]:=Sign[Log[Abs[a]]b^c-Log[Abs[d]]e^f]
que es considerablemente más largo que el que tienes allí. Probablemente me estoy perdiendo algo aquí.z[535, 10^9, 10^8, 443, 10^9, 10^9]
?Ruby 1.9,
280 227 189171 caracteresSé que esto es un poco más largo que las otras soluciones, pero al menos este enfoque debería funcionar sin calcular a b c , d e f , b c o e f .
Editar:
a**b**c < 0
yd = 1
.log(log(a)/log(d))
lugar delog(log(a))-log(log(d))
.Casos de prueba:
fuente
ShortScript , 89 bytes
La implementación no es exactamente la descrita, pero funciona.
Esta respuesta no es competitiva, ya que ShortScript se ha publicado después de este desafío.
fuente
Python 2.6 (esto en realidad no funciona)
Hoy aprendí que Python tiene una función de registro compleja. entonces, doble ciegamente log ambos lados y mire el componente real. funciona para 4 de las 5 pruebas. No estoy seguro de lo que está pasando con el cuarto.fuente
Pitón (99)
fuente
Haskell, 44 personajes
Se ejecuta en menos de un segundo para todos los ejemplos de prueba en mi máquina.
fuente
b
an
) el tipo de función f fue dada porf :: (Ord a, Num a, Integral b2, Integral (Bool -> t), Integral b, Integral b1) => a -> (Bool -> t) -> b -> a -> b1 -> b2 -> t
cosas bastante extrañas, ¿eh?