Tantangan
Cukup sederhana, diberi input x
, hitung menara kekuatannya tak terbatas!
x^x^x^x^x^x...
Bagi Anda pecinta matematika di luar sana, ini adalah tetrasix
tak terbatas .
Ingatlah hal-hal berikut:
x^x^x^x^x^x... = x^(x^(x^(x^(x...)))) != (((((x)^x)^x)^x)^x...)
Terkejut kami belum memiliki tantangan matematika "sederhana" yang melibatkan ini! *
Asumsi
x
akan selalu bertemu.- Angka negatif dan kompleks harus dapat ditangani
- Ini adalah kode-golf , sehingga byte terendah menang!
- Jawaban Anda harus benar untuk setidaknya 5 tempat desimal
Contohnya
Input >> Output
1.4 >> 1.8866633062463325
1.414 >> 1.9980364085457847
[Square root of 2] >> 2
-1 >> -1
i >> 0.4382829367270323 + 0.3605924718713857i
1 >> 1
0.5 >> 0.641185744504986
0.333... >> 0.5478086216540975
1 + i >> 0.6410264788204891 + 0.5236284612571633i
-i >> 0.4382829367270323 -0.3605924718713857i
[4th root of 2] >> 1.239627729522762
* (Selain tantangan yang lebih rumit di sini )
Jawaban:
APL (Dyalog) , 4 byte
Cobalah online!
*
kekuasaan⍣
sampai≡
stabil⍨
selfiesumber
Pyth,
43 bytedicoret 4 masih teratur 4; (
Cobalah online
Bagaimana itu bekerja
sumber
G
, itu akan otomatis terisi.Haskell ,
10063 byteUntuk input yang tidak konvergen (mis.
-2
) Ini tidak akan berakhir:Terima kasih banyak @ ØrjanJohansen karena mengajari saya tentang
until
dan menyelamatkan saya37
byte!Cobalah online!
sumber
until
fungsinya. Cobalah online!until
, terima kasih banyak.Python 3 ,
40 3935 byted>99
alih-alihd==99
: 1 lebih banyak iterasi untuk byte-count yang lebih rendahx**True
mengevaluasi ke x inx**(d>99or g(x,d+1))
. Ekspresi dalam istilah mengevaluasi ke True untuk kedalaman lebih besar dari 99 dan dengan demikian mengembalikan nilai yang diteruskan.Lambda rekursif dengan kedalaman maksimum 100 yaitu untuk kedalaman 100 mengembalikan nilai yang sama. Sebenarnya konvergensi-agnostik, jadi perkirakan angka-angka yang tidak terduga dengan nilai-nilai yang tidak konvergen untuk fungsi tersebut.
Cobalah online!
sumber
complex('j')
dengan1j
d>99
melakukan satu iterasi lagi dan lebih pendek.g=lambda x,d=0:x**(d>99or g(x,d+1))
,x**True
dievaluasi menjadix
Python 3,
373027 byte-7 byte dari @FelipeNardiBatista.
-3 byte dari dari @xnor
Saya tidak ingat banyak tentang Python lagi, tapi saya berhasil mem-porting jawaban Ruby saya dan mengalahkan jawaban Python 3 lainnya: D
Cobalah online!
sumber
x
,eval('x**'*99+'1')
karyaMathematica, 12 byte
Mengambil nomor floating-point sebagai input.
sumber
J , 5 byte
Cobalah online!
Penjelasan
Pertama, saya akan menunjukkan perintah apa yang dieksekusi setelah menguraikan
~
di akhir, dan walk-through akan menjadi kata kerja baru.sumber
(^^:_)
membuat kata kerja diad baru melalui power conj, lalu kata keterangan diri~
membuat kata kerja itu monadik, sehingga ketika diberi argumenx
itu diperluas kex (^^:_) x
. sebelah kirix
selanjutnya "menempel", memberikan((x&^)^:_) x
per catatan Anda, dan hanya argumen yang benar berubah selama iterasi?x u^:n y
argumen kiri terikat dengan angka dua untuk membentuk monad yang bersarangn
kaliy
.x u^:n y -> (x&u)^:n y -> (x&u) ... n times ... (x&u) y
C # (.NET Core) ,
7978 byteCobalah online!
Saya memilih untuk mengulangi sampai
i
= 999 karena jika saya mengulangi sampai 99 beberapa contoh tidak mencapai presisi yang diperlukan. Contoh:Seperti yang Anda lihat, setelah 99 iterasi bagian imajiner gagal di tempat desimal 5.
Dalam hal ini setelah 99 iterasi kami mendapatkan presisi yang diharapkan. Bahkan, saya bisa mengulangi sampai
i
= 1e9 dengan jumlah byte yang sama, tetapi itu akan membuat kode jauh lebih lambatsumber
Jelly , 5 byte
Cobalah online!
sumber
Ruby,
2120 bytePenafian : Tampaknya Ruby mengembalikan beberapa nilai aneh ketika menaikkan bilangan kompleks ke kekuasaan. Saya menganggap itu di luar jangkauan untuk tantangan ini untuk memperbaiki seluruh modul matematika Ruby, tetapi jika tidak, hasil dari fungsi ini harus benar.Sunting : Menerapkan perubahan terbaru dari jawaban Python 3 sayadan tiba-tiba entah bagaimana memberikan hasil yang sama diharapkan :)Cobalah online!
sumber
eval
."0+1i**0+1i**0+1i**..."
, yang diurai dengan cara yang salah karena**
memiliki prioritas lebih tinggi daripada+
.#inspect
dan#to_s
mengembalikan nilai yang berbeda. Sebelum mengirimkan jawaban awal saya melakukan beberapa pengujian di irb dan melihat bahwa misalnya memasukkanComplex(1,2)
dalam REPL akan memberi(1+2i)
, termasuk tanda kurung. Ketika meringkas nilai namun tanda kurung tidak termasuk, jadi prioritasnya, seperti yang Anda tunjukkan, mengacaukannya.eval
penggunaannya dilarang.TI-BASIC, 16 byte
Input dan output disimpan di
Ans
.sumber
R ,
3633 byte- 3 byte terima kasih kepada Jarko Dubbeldam
Baca dari stdin.
Reduce
s dari hak untuk menerapkan eksponen dalam urutan yang benar.Cobalah (fungsi)
Cobalah (stdin)
sumber
scan(,1i)
bekerja. Mirip dengan carascan(,'')
kerjanya.Javascript, 33 byte
sumber
MATL ,
2010 bytekurangi menjadi separuh berkat @LuisMendo
Cobalah online!
Ini adalah kode-golf pertama saya dan pertama kali saya menggunakan MATL jadi saya yakin itu bisa dengan mudah kalah.
sumber
XII
setara dengant
. Anda juga dapat menyingkirkanXH
danH
menggunakan papan klip otomatisM
, yaituttt^`yw^t5M-]bb-x
,. Dan pada bagian terakhir, alih-alih menghapus nilai yang tidak diinginkan yang dapat Anda gunakan&
, yang memberitahu fungsi tampilan implisit untuk hanya menampilkan bagian atas. Jadi, Anda dapat menggunakanttt^`yw^t5M-]&
dan menyimpan beberapa byte.t
tidak diperlukan, dan menggunakan yangG
laint
yang bisa Anda hindari&
dan dengan demikian]
menyiratkan:t^`Gw^t5M-
. Hei, kami telah mengurangi jumlah byte hingga setengahnya!Perl 6 , 17 byte
Cobalah online!
R**
adalah operator reverse-exponentiation;x R** y
sama dengany ** x
.[R**]
mengurangi daftar 999 salinan argumen input dengan eksponensial terbalik.sumber