Pertanyaan ini rumit (dan khususnya lebih sulit daripada Jumlah besar mana yang lebih besar? ), Bagi mereka yang suka teka-teki yang lebih menantang.
Memasukkan
Integer a1, a2, a3, a4, a5, b1, b2, b3, b4, b5 masing-masing dalam kisaran 1 hingga 10.
Keluaran
True if a1^(a2^(a3^(a4^a5))) > b1^(b2^(b3^(b4^b5))) and False otherwise.
^ adalah eksponensial dalam pertanyaan ini.
Aturan
Ini adalah kode-golf. Kode Anda harus berakhir dengan benar dalam waktu 10 detik untuk setiap input yang valid pada TIO . Jika bahasa Anda tidak pada TIO, kode harus selesai di bawah 10 detik pada mesin Anda.
Anda dapat menampilkan apa pun yang Sejati untuk Benar dan apa pun yang Falsey untuk Salah.
Uji kasus
Ingatlah bahwa dengan aturan eksponensial, a1 ^ (a2 ^ (a3 ^ (a4 ^ a5)))) == a1 ^ a2 ^ a3 ^ a4 ^ a5 ^ a5.
10^10^10^10^10 > 10^10^10^10^9
1^2^3^4^5 < 5^4^3^2^1
2^2^2^2^3 > 10^4^3^2^2
6^7^8^9^10 is not bigger than 6^7^8^9^10
10^6^4^2^2 < 10^6^2^4^2
2^2^2^2^10 > 2^2^2^10^2
10^9^8^7^6 < 6^7^8^9^10
3^1^10^10^10 > 2^1^10^10^10
9^10^10^10^10 < 10^9^10^10^10
Kasus uji baru dari Kevin Cruijssen
[10,10,10,10,10, 10,10,10,10,9] #true
[2,2,2,2,3, 10,4,3,2,2] #true
[2,2,2,2,10, 2,2,2,10,2] #true
[10,10,10,10,10, 9,10,10,10,10] #true
[3,2,2,1,1, 2,5,1,1,1] #true
[2,2,3,10,1, 2,7,3,9,1] #true
[7,9,10,10,10, 6,9,10,10,10] #true
[3,2,2,2,2, 2,2,2,2,2] #true
[8,3,1,2,1, 2,2,3,1,1] #true
[2,4,2,1,1, 3,3,2,1,1] #true
[5,4,3,2,1, 1,2,3,4,5] #true
[1,2,3,4,5, 5,4,3,2,1] #false
[6,7,8,9,10, 6,7,8,9,10] #false
[10,6,4,2,2, 10,6,2,4,2] #false
[10,9,8,7,6, 6,7,8,9,10] #false
[1,10,10,10,10, 1,10,10,10,9] #false
[2,4,1,1,1, 2,2,2,1,1] #false
[2,2,2,1,1, 2,4,1,1,1] #false
[2,5,1,1,1, 3,2,2,1,1] #false
[4,2,1,1,1, 2,4,1,1,1] #false
[2,4,1,1,1, 4,2,1,1,1] #false
[2,3,10,1,1, 8,3,9,1,1] #false
[8,3,9,1,1, 2,3,10,1,1] #false
[2,4,1,1,1, 3,3,1,1,1] #false
[2,2,1,9,9, 2,2,1,10,10] #false
[2,2,1,10,10, 2,2,1,9,9] #false
[1,1,1,1,1, 1,2,1,1,1] #false
sumber
Jawaban:
Ruby, 150 byte
Lihat revisi untuk jumlah byte sebelumnya.
-10 byte terima kasih kepada @ValueInk
+16 byte berkat @RosLuP untuk bug.
Cobalah online .
Bandingkan menara kekuatan pangkalan yang berbeda (dengan 'tinggi' lima)?
Kode tidak dikunci:
Rincian kode:
Ini adalah basis
t
logaritma, yang akan digunakan untuk mengurangi ukuran angka yang kita bandingkan. Ini default ke basisc
ketika hanya satu argumen yang diberikan.Pembaruan ini
i = i ** j
karenai
tidak pernah digunakan sendiri, dany
merupakan hasil dari pencatatanb^c^d^e == g^h^i(^j)
dua kali dan memindahkan semuanya ke satu sisi. Kami kemudian membiarkannyaz = l[a, f] * b ** c
sebagai basisg
logf
dari basis loga ** b ** c
.1^b^c^d^e = 1
tidak pernah lebih besar darif^g^h^i^j
, dan juga,a^b^c^d^e
selalu lebih besar dari1^g^h^i^j = 1
jikaa != 1
. Perhatikan bahwareturn p
pengembaliannil
, yang palsu, danreturn 1
kembali1
, yang benar.Jika
b == 1
ataug == 1
, maka ini untuk mengurangi membandingkana ** b ** c
untukf ** g ** h
, yang dilakukan dengan dua log untuk kedua belah pihak.Ini membandingkan
a ** b ** c
denganf ** g ** h ** i
menata ulang itulog[log[b ** c * log[a, f], g], h]
dibandingkan dengani
. (Ingat itui **= j
di awal danz = log[b ** c * log[a, f], g]
.)Ini membandingkan 4 kekuatan tertinggi setelah masuk kedua sisi dua kali. Jika mereka sama, itu membandingkan basis.
sumber
Python 2,
671612495490611597 byte-59 byte berkat @EmbodimentOfIgnorance
-117 byte berkat @ Neil
121 byte selama sekitar lima bug-perbaikan, semua ditemukan oleh @ngn
Mengambil input sebagai dua daftar.
CATATAN: Juga berfungsi dengan daftar yang lebih besar atau panjang yang tidak sama.EDIT: Tidak lagi benar; masih berfungsi jikaP(a)
danP(b)
menghasilkan tupel yang berbeda, tetapi jika sama, kode yang diperbarui ini di atas hanya berfungsi dengan daftar dengan ukuran tetap 5 sekarang.Cobalah online.
Penjelasan:
Versi Golf jawaban ini di math.stackexchange.com , jadi semua kredit diberikan ke @ThomasAhle .
Mengutip jawabannya:
Mengenai contoh-contoh balasan, ia menyebutkan yang berikut di bagian komentar:
Karena rencana A dan B tidak relevan dalam tantangan ini, karena tingginya 5 untuk kedua menara listrik yang kami input, maka rencana C adalah. Jadi saya sudah berubah
P(a)>P(b)
untukP(S(a,b))>P(S(b,a))if P(a)==P(b)else P(a)>P(b)
dengan fungsi rekursifS(a,b)
. JikaP(a)
danP(b)
menghasilkan tuple yang sama, yangP(S(a,b))>P(S(b,a))
pertama akan menghapus nilai trailing yang sama pada indeks yang sama, sebelum melakukanP(A)>P(B)
pengecekan yang sama pada daftar yang sekarang lebih pendek ini.sumber
[10,10,10,10,10]>[9,10,10,10,10]
R
sekali saja, jadi mungkin Anda bisa membuatnya sebaris saja?R
saluran 5 ...05AB1E ,
96104 bytePort of @SimplyBeautifulArt 's Ruby menjawab , jadi pastikan untuk membatalkannya!
POSITIVE_INFINITY
NEGATIVE_INFINITY
0.0
untuk kedua kasus, bukan di 05AB1E (yaitu kasus uji[3,2,2,1,1,2,5,1,1,1]
(POSITIVE_INFINITE
kasus) dan[2,4,1,1,1,3,3,1,1,1]
(NEGATIVE_INFINITY
kasus).Masukan sebagai daftar bilangan bulat sepuluh:
[a,b,c,d,e,f,g,h,i,j]
.Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Jika ada yang ingin mencoba dan golf lebih jauh, ini adalah program pembantu yang saya gunakan untuk mendapatkan variabel yang benar dari daftar input.
sumber
C,
168180 bytePort C dari jawaban Kevin Cruijssen.
Cobalah online
sumber
3,1,10,10,10,2,1,10,10,10
seperti jawaban Java saya dulu juga. Dan itu sebenarnya adalah port dari jawaban Ruby SimplyBeautifulArt, karena dialah yang datang dengan segala sesuatu dan memperbaiki bug ..APL (NARS), karakter 118, byte 236
Fungsi panggilan di atas z, dalam "az w" akan mengembalikan 1 jika nomor dalam a lebih besar dari angka di w, jika tidak maka akan mengembalikan 0.
Jika saya punya
Ini akan menjadi f (aa)> f (bb) dengan array aa dan bb dari 5 angka positif jika dan hanya jika (jika a> 1 dari aa dan bb) log (log (f (aa)))> log ( log (f (bb))) kita harus menggunakan hukum log ():
untuk build v (aa) = log (log (aa)) = v (a, b, c, d, e) = log (log (a)) + log (b) (c ^ (d ^ e)) = {p (3 ↑ ⍵), / 3 ↓ ⍵} berfungsi dan latihannya ditemukan ketika v (aa)> v (bb).
Tetapi ada kasus di mana v (aa) dan v (bb) keduanya tak terbatas (APL telah mengakhiri ruang apung) dalam hal itu saya akan menggunakan fungsi tidak aman
bahwa saya tidak sepenuhnya mengerti apakah itu baik-baik saja dan tidak menghitung parameter juga ... tes:
sumber
log(log())
, tetapi untuk kasus uji itu, perbedaan antaralog(log(10^10^10^10^10))
danlog(log(9^10^10^10^10))
akan membutuhkan jumlah akurasi yang absurd untuk diambil. Anda harus memiliki floating point dengan2e10
akurasi sekitar 10 basis angka. Dan ini mengabaikan fakta bahwa kedua belah pihak kira-kira sebesar10^10^10
, yang saya rasa sulit untuk percaya bahwa Anda dapat menghitung.9, 10, 10, 10, 10, 10, 9, 10, 10, 10
, yang seharusnya kembali1
, tetapis(9,10,10,10,10) < s(10,9,10,10,10)
.Java 8,
299288286252210208224 bytePort of @SimplyBeautifulArt 's Ruby menjawab , jadi pastikan untuk membatalkannya!
-14 byte berkat @SimplyBeautifulArt .
+17 byte untuk perbaikan bug yang sama dengan jawaban Ruby.
Cobalah online.
Penjelasan:
sumber
x==y
bukanM.abs(x-y)<1e-9
.t
adalah dapat dihapus untuk menyimpan satu byte dengan memasukkannya ke dalamy
seperti yang saya lakukan. TIO