Memasukkan
Integer a1, a2, a3, b1, b2, b3 masing-masing dalam kisaran 1 hingga 20.
Keluaran
True if a1^(a2^a3) > b1^(b2^b3) 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 PC desktop standar.
Anda dapat menampilkan apa pun yang Sejati untuk Benar dan apa pun yang Falsey untuk False.
Anda dapat mengasumsikan setiap input yang Anda suka asalkan ditentukan dalam jawaban dan selalu sama.
Untuk pertanyaan ini, kode Anda harus selalu benar. Itu seharusnya tidak gagal karena ketidakakuratan floating point. Karena jangkauan input yang terbatas ini seharusnya tidak terlalu sulit untuk dicapai.
Uji kasus
3^(4^5) > 5^(4^3)
1^(2^3) < 3^(2^1)
3^(6^5) < 5^(20^3)
20^(20^20) > 20^(20^19)
20^(20^20) == 20^(20^20)
2^2^20 > 2^20^2
2^3^12 == 8^3^11
1^20^20 == 1^1^1
1^1^1 == 1^20^20
Jawaban:
Perl 6 ,
3129 byte-2 byte terima kasih kepada Grimy
Cobalah online!
Percaya atau tidak, ini bukan esolang, bahkan jika itu sebagian besar terdiri dari tanda bintang. Ini menggunakan rumus Arnauld , dengan log10 bukan ln.
sumber
2^3^12 == 8^3^11
.R , 39 byte
Cobalah online!
Mengembalikan FALSE kapan
a > b
dan BENAR jikab < a
sumber
f(2,2,20,2,20,2)
2^3^12 == 8^3^11
.1^20^20 == 1^1^1
dan1^1^1 == 1^20^20
.05AB1E ,
119117 bytePelabuhan @Arnauld 's JavaScript dan @digEmAll ' s R pendekatan (aku melihat mereka mengirim sekitar waktu yang sama)
-2 byte berkat @Emigna
2 byte sebagai bug-fix setelah @Arnauld 's dan @digEmAll jawaban' s terkandung kesalahan
-4 byte sekarang karena urutan input yang berbeda diizinkan setelah komentar @LuisMendo
Input
[a1,b1]
,[a3,b3]
,[a2,b2]
tiga dipisahkan input.Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
ć
, tetapi benar-benar lupa menggunakanš
(tidak yakin mengapa sekarang saya melihatnya, haha). Terima kasih!Java (JDK) , 56 byte
Cobalah online!
Kredit
sumber
2^3^12 == 8^3^11
.Bahasa Wolfram (Mathematica) , 23 byte
Cobalah online!
sumber
##>0&@@(##^1&@@@#)&
tidak hanya 19 byte dan bahkan lebih membingungkan dari pada seperti kode di atas. (format infput{{a,b,c},{d,e,f}}
)J ,
119 byteCobalah online!
Argumen diberikan sebagai daftar.
>
apakah yang kiri lebih besar?&(...)
tetapi pertama-tama, ubah setiap argumen dengan demikian:^.@^/
kurangi dari kanan ke kiri dengan eksponensial. Tetapi karena eksponensial biasa akan membatasi kesalahan bahkan untuk nomor yang diperluas, kami mengambil log dari kedua sisisumber
Clean, 44 bytes
Try it online!
Uses an adaptation of Arnauld's formula.
sumber
2^3^12 == 8^3^11
.Python 3, 68 bytes
Try it online!
Port of @Arnualds answer, but with the base for log changed.
sumber
^
is called**
in Python. And with that changed, you won't be able to run all the OP's test cases.2^3^12 == 8^3^11
.05AB1E, 13 bytes
Uses the method from Arnauld's JS answer
Try it online!
sumber
b1=b2=b3=20
,yeah that doesn't terminate.Excel, 28 bytes
Excel implementation of the same formula already used.
sumber
JavaScript, 51 bytes
Surprisingly, the test cases doesn't show any floating-point error. I don't know if it ever does at this size.This just compares the logarithm of the numbers.
Equality tolerance is equal to
1e-8
.sumber
2^3^12 == 8^3^11
test case. In fact your answer is very similar to the original answer by Arnauld (sadly deleted rather than fixed) that inspired most of those which failed it.l(h)
to the right, and maybe it works now? Edit: Wait, it doesn't.0.01
.(5.820766091346741e-11,(8.0,3.0,11,2.0,3.0,12))
(my test case), and the lowest you need to include is(9.486076692724055e-4,(17.0,19.0,1,3.0,7.0,2))
(3^7^2 > 17^19^1
.) So something like1e-8
should be safely in the middle and the same byte length.bc -l, 47 bytes
with the input read from
STDIN
, one integer per line.bc
is pretty fast; it handles a=b=c=d=e=f=1,000,000 in a little over a second on my laptop.sumber
C++ (gcc), 86 bytes
Thanks to @ØrjanJohansen for pointing out a flaw in this and @Ourous for giving a fix.
Try it online!
Takes input as a 6-integer array. Returns 1 ifabc>def , 0 otherwise.
sumber
log
twice should bei[2]*log(i[1])+log(log(*i))
. E.g. the current one will fail for2^2^20 > 4^2^18
.pow
method then.2^3^12 == 8^3^11
problem I've pointed out for others.2^3^20 == 8^3^19
. In fact on average the power method fails for fewer, probably because it tends to multiply by powers of two exactly. Others have managed to make it work by just tweaking it slightly.Jelly, 8 bytes
Try it online!
Based on Arnauld’s JS answer. Expects as input
[a1, b1]
as left argument and[[a2, b2], [a3, b3]]
as right argument.Now changed to use log to the base 10 which as far as correctly handles all the possible inputs in the range specified. Thanks to Ørjan Johansen for finding the original problem!
sumber
2^3^12 == 8^3^11
.8*
instead of8**
. @ØrjanJohansen is indeed correct that2**(3**12) > 8**(3**11)
is falsey, since they are equal.TI-BASIC,
2731 bytesInput is a list of length6 in
Ans
.Outputs true if the first big number is greater than the second big number. Outputs false otherwise.
Examples:
Explanation:
Note: TI-BASIC is a tokenized language. Character count does not equal byte count.
sumber
log(x) × y × z
rather thanlog(x) × y ^ z
. This won’t necessarily lead to the same ordering as the original inequality.APL(NARS), chars 36, bytes 72
Here below the function z in (a b c )z(x y t) would return 1 if a^(b^c)>x^(y^t) else would return 0; test
{(a b c)←⍵⋄a=1:¯1⋄(⍟⍟a)+c×⍟b} is the function p(a,b,c)=log(log(a))+c*log(b)=log(log(a^b^c)) and if aa=a^(b^c) with a,b,c >0 and a>1 bb=x^(y^t) with x,y,t >0 and x>1 than
There is a problem with the function p: When a is 1, log log 1 not exist so I choose to represent that with the number -1; when a=2 so log log a is a negative number but > -1 .
PS. Seen the function in its bigger set in which is defined
appear range for a,b,c in 1..20 is too few... If one see when it overflow with log base 10, the range for a,b,c could be 1..10000000 or bigger for a 64 bit float type.
sumber