Porównaj dwie liczby N 1 = a b c , N 2 = d e f , konstruując funkcję f (a, b, c, d, e, f), która:
- zwraca 1, jeśli N 1 > N 2
- zwraca -1, jeśli N 1 <N 2
Uwaga: Nie musisz zwracać żadnej wartości dla jakiejkolwiek innej relacji między N 1 i N 2 . np. gdy są równe lub gdy ich relacja jest niezdefiniowana (liczby zespolone).
inne ograniczenia:
- wszystkie liczby są liczbami całkowitymi
- a, b, c, d, e, f mogą być dodatnie lub ujemne, ale nie zero.
- | a |, | d | <1000
- | b |, | c |, | e |, | f | <10 10
- czas trwania mniej niż kilka sekund
Przykłady:
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
To jest kod golfowy. Najkrótszy kod wygrywa.
Odpowiedzi:
Mathematica, 110 znaków
źródło
3,-3,3,-4,1,1
, jeśli się nie mylę (nie mam tutaj Mathematiki, ale Wolfram Alpha wydaje się zgadzać ).z[a_,b_,c_,d_,e_,f_]:=Sign[Log[Abs[a]]b^c-Log[Abs[d]]e^f]
co jest znacznie dłuższe niż to, co masz. Prawdopodobnie coś tu brakuje.z[535, 10^9, 10^8, 443, 10^9, 10^9]
?Ruby 1.9,
280 227 189171 znakówWiem, że jest to nieco dłużej niż inne rozwiązania, ale przynajmniej to podejście powinno działać bez obliczania a b c , d e f , b c lub e f .
Edytować:
a**b**c < 0
id = 1
.log(log(a)/log(d))
zamiastlog(log(a))-log(log(d))
.Przypadki testowe:
źródło
ShortScript , 89 bajtów
Implementacja nie jest dokładnie opisana, ale działa.
Ta odpowiedź nie jest konkurencyjna, ponieważ po tym wyzwaniu opublikowano ShortScript.
źródło
Python 2.6 (to nie działa)
dzisiaj dowiedziałem się, że python ma złożoną funkcję dziennika. więc ślepo podwójnie zaloguj obie strony i spójrz na prawdziwy komponent. działa na 4 z 5 testów. nie jestem pewien, co się dzieje z czwartym.źródło
Python (99)
źródło
Haskell, 44 znaki
Działa poniżej sekundy dla wszystkich przykładów testowych na moim komputerze.
źródło
b
nan
) typ funkcji f został nadany przezf :: (Ord a, Num a, Integral b2, Integral (Bool -> t), Integral b, Integral b1) => a -> (Bool -> t) -> b -> a -> b1 -> b2 -> t
dość dziwne rzeczy, co?