Comparez deux nombres N 1 = a b c , N 2 = d e f en construisant une fonction f (a, b, c, d, e, f) qui:
- renvoie 1 si N 1 > N 2
- renvoie -1 si N 1 <N 2
Remarque: Vous n'êtes pas tenu de renvoyer de valeur pour toute autre relation entre N 1 et N 2 . par exemple quand ils sont égaux ou quand leur relation n'est pas définie (nombres complexes).
autres contraintes:
- tous les nombres sont des entiers
- a, b, c, d, e, f peuvent être positifs ou négatifs mais pas nuls.
- | a |, | d | <1000
- | b |, | c |, | e |, | f | <10 10
- durée de fonctionnement inférieure à quelques secondes
Exemples:
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
C'est le golf de code. Le code le plus court gagne.
Réponses:
Mathematica, 110 caractères
la source
3,-3,3,-4,1,1
, si je ne me trompe pas complètement (ne pas avoir Mathematica ici, mais Wolfram Alpha semble d'accord ).z[a_,b_,c_,d_,e_,f_]:=Sign[Log[Abs[a]]b^c-Log[Abs[d]]e^f]
ce qui est considérablement plus long que ce que vous avez là-bas, cependant. Il me manque probablement quelque chose ici.z[535, 10^9, 10^8, 443, 10^9, 10^9]
?Ruby 1.9,
280 227 189171 caractèresJe sais que c'est un peu plus long que les autres solutions, mais au moins cette approche devrait fonctionner sans calculer a b c , d e f , b c ou e f .
Éditer:
a**b**c < 0
etd = 1
.log(log(a)/log(d))
au lieu delog(log(a))-log(log(d))
.Testcases:
la source
ShortScript , 89 octets
L'implémentation n'est pas exactement celle décrite, mais elle fonctionne.
Cette réponse n'est pas concurrente, puisque ShortScript a été publié après ce défi.
la source
Python 2.6 (cela ne fonctionne pas réellement)
aujourd'hui, j'ai appris que python a une fonction de journal complexe. ainsi, doublez aveuglément les deux côtés et regardez le vrai composant. fonctionne pour 4 des 5 tests. ne sais pas ce qui se passe avec le quatrième.la source
Python (99)
la source
Haskell, 44 caractères
Fonctionne en moins d'une seconde pour tous les exemples de test sur ma machine.
la source
b
àn
) le type de fonction f a été donné par desf :: (Ord a, Num a, Integral b2, Integral (Bool -> t), Integral b, Integral b1) => a -> (Bool -> t) -> b -> a -> b1 -> b2 -> t
choses étranges assez, hein?