Vergleichen Sie zwei Zahlen N 1 = a b c , N 2 = d e f, indem Sie eine Funktion f (a, b, c, d, e, f) konstruieren, die:
- gibt 1 zurück, wenn N 1 > N 2 ist
- Gibt -1 zurück, wenn N 1 <N 2 ist
Anmerkung: Sie müssen keinen Wert für eine andere Beziehung zwischen N 1 und N 2 zurückgeben . zB wenn sie gleich sind oder wenn ihre Beziehung undefiniert ist (komplexe Zahlen).
andere Einschränkungen:
- Alle Zahlen sind ganze Zahlen
- a, b, c, d, e, f können positiv oder negativ sein, aber nicht Null.
- | a |, | d | <1000
- | b |, | c |, | e |, | f | <10 10
- Laufzeit weniger als einige Sekunden
Beispiele:
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
Das ist Code Golf. Kürzester Code gewinnt.
Antworten:
Mathematica, 110 Zeichen
quelle
3,-3,3,-4,1,1
, wenn ich mich nicht völlig irre (habe hier kein Mathematica, aber Wolfram Alpha scheint zuzustimmen ).z[a_,b_,c_,d_,e_,f_]:=Sign[Log[Abs[a]]b^c-Log[Abs[d]]e^f]
was aber erheblich länger ist als das, was du da hast. Mir fehlt hier wahrscheinlich etwas.z[535, 10^9, 10^8, 443, 10^9, 10^9]
?Ruby 1.9,
280 227 189171 ZeichenIch weiß, dass dies etwas länger ist als die anderen Lösungen, aber zumindest sollte dieser Ansatz funktionieren, ohne a b c , d e f , b c oder e f zu berechnen .
Bearbeiten:
a**b**c < 0
und wurde behobend = 1
.log(log(a)/log(d))
stattlog(log(a))-log(log(d))
.Testfälle:
quelle
ShortScript , 89 Bytes
Die Implementierung ist nicht genau die beschriebene, aber es funktioniert.
Diese Antwort ist nicht konkurrierend, da ShortScript nach dieser Herausforderung veröffentlicht wurde.
quelle
Python 2.6 (das funktioniert nicht wirklich)
Heute habe ich gelernt, dass Python eine komplexe Log-Funktion hat. also doppelt blind loggen beide seiten und schauen auf die reale komponente. funktioniert für 4 von 5 Tests. Ich bin mir nicht sicher, was mit dem vierten passiert.quelle
Python (99)
quelle
Haskell, 44 Zeichen
Läuft in weniger als einer Sekunde für alle Testbeispiele auf meinem Computer.
quelle
b
zun
) die Art der Funktion f wurde durch gegebenf :: (Ord a, Num a, Integral b2, Integral (Bool -> t), Integral b, Integral b1) => a -> (Bool -> t) -> b -> a -> b1 -> b2 -> t
ziemlich seltsam Sachen, nicht wahr?