Bandingkan dua angka N 1 = a b c , N 2 = d e f dengan membangun fungsi f (a, b, c, d, e, f) yang:
- mengembalikan 1 jika N 1 > N 2
- mengembalikan -1 jika N 1 <N 2
Catatan: Anda tidak diharuskan mengembalikan nilai apa pun untuk hubungan apa pun lainnya antara N 1 dan N 2 . misalnya ketika mereka sama atau ketika hubungan mereka tidak ditentukan (bilangan kompleks).
kendala lain:
- semua angka adalah bilangan bulat
- a, b, c, d, e, f mungkin positif atau negatif tetapi tidak nol.
- | a |, | d | <1000
- | b |, | c |, | e |, | f | <10 10
- waktu berjalan kurang dari beberapa detik
Contoh:
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
Ini golf kode. Kode terpendek menang.
Jawaban:
Mathematica, 110 karakter
sumber
3,-3,3,-4,1,1
, jika saya tidak sepenuhnya salah (tidak punya Mathematica di sini, tetapi Wolfram Alpha tampaknya setuju ).z[a_,b_,c_,d_,e_,f_]:=Sign[Log[Abs[a]]b^c-Log[Abs[d]]e^f]
yang jauh lebih lama dari apa yang Anda miliki di sana. Saya mungkin kehilangan sesuatu di sini.z[535, 10^9, 10^8, 443, 10^9, 10^9]
?Ruby 1.9,
280 227 189171 karakterSaya tahu ini sedikit lebih lama daripada solusi lain, tetapi setidaknya pendekatan ini harus bekerja tanpa menghitung a b c , d e f , b c atau e f .
Edit:
a**b**c < 0
dand = 1
.log(log(a)/log(d))
alih-alihlog(log(a))-log(log(d))
.Testcases:
sumber
ShortScript , 89 byte
Implementasinya tidak persis seperti yang dijelaskan, tetapi berhasil.
Jawaban ini tidak bersaing, karena ShortScript telah diterbitkan setelah tantangan ini.
sumber
Python 2.6 (ini tidak benar-benar berfungsi)
hari ini saya belajar python memiliki fungsi log yang kompleks. jadi, double log secara membabi buta kedua sisi dan lihat komponen yang sebenarnya. bekerja untuk 4 dari 5 tes. tidak yakin apa yang terjadi dengan yang keempat.sumber
Python (99)
sumber
Haskell, 44 karakter
Berjalan di bawah satu detik untuk semua contoh pengujian pada mesin saya .
sumber
b
untukn
) jenis fungsi f diberikan olehf :: (Ord a, Num a, Integral b2, Integral (Bool -> t), Integral b, Integral b1) => a -> (Bool -> t) -> b -> a -> b1 -> b2 -> t
Cukup aneh hal, ya?