Tugas Anda adalah menghitung eksponensial secara perlahan, dengan langkah-langkah berikut:
Diberikan dua input (dalam contoh ini, 4 dan 8), Anda harus menghitung eksponensial dengan menghitung persamaan sedikit demi sedikit. Anda akan melakukannya 4^8
, memiliki nilai dasar yang lebih besar (4) dan eksponen yang lebih kecil (8). Anda dapat melakukan ini menggunakan lebih banyak eksponensial dan pembagian. Anda dapat membagi eksponen dengan nilai X (asalkan X adalah pembagi utama eksponen), dan jadikan nilai dasar ( B ) menjadi B^X
. Misalnya, Anda dapat melakukan:
4^8 = (4 ^ 2)^(8 / 2) = 16^4
Saya telah mengganti X dengan 2 pada persamaan sebelumnya.
Anda dapat 'menyederhanakan' 16^4
lebih lanjut, lagi dengan X = 2
:
16^4 = (16 ^ 2)^(4 / 2) = 256^2
Dan akhirnya menghitung angka (sekali lagi, X = 2
):
256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536
Karena itu,
4^8 = 16^4 = 256^2 = 65536
Ini adalah output yang harus Anda berikan. Pemisah output sedikit fleksibel, misalnya, Anda dapat memisahkan persamaan dengan baris baru atau spasi, bukan =
. Atau, Anda dapat memasukkannya ke dalam daftar (tetapi Anda tidak boleh menggunakan angka atau ^
karakter sebagai pemisah).
Seperti yang ditunjukkan Martin Ender, ^
ini juga fleksibel. Misalnya, Anda dapat menggunakan [A, B]
atau A**B
bukannya A^B
dalam output.
X mungkin hanya prima, yang berarti Anda tidak dapat menggunakan X = 8
untuk langsung ke solusi, dan nilai-nilai X hanya akan menjadi faktor prima dari input kedua (eksponen).
Contoh:
(input) -> (output)
4^8 -> 4^8=16^4=256^2=65536
5^11 -> 5^11=48828125
2^15 -> 2^15=32^3=32768 (2^15=8^5=32768 is also a valid output)
Perlu diingat bahwa format input juga fleksibel (mis. Anda dapat mengambil A \n B
atau A B
alih-alih A^B
. Jelas, ini tidak akan menjadi masalah jika Anda menulis fungsi dengan mengambil dua argumen.
Pada contoh kedua, kita langsung menuju perhitungan, karena 11
ini prima dan kita tidak bisa mengambil langkah lagi.
Anda dapat menulis program atau fungsi untuk menyelesaikannya, dan Anda dapat mencetak atau mengembalikan nilainya masing-masing.
Karena ini adalah kode-golf , kode terpendek itu menang!
32^3
dan8^15
juga tidak 512.x^1
?Jawaban:
Jelly , 16 byte
Cobalah online!
Input adalah daftar tunggal
[base, exponent]
. Nilai balik dari tautan monadik bawah adalah daftar daftar, karena program lengkap representasi dari daftar itu dicetak, misalnya2^15=8^5=32768^1
dicetak sebagai:Bagaimana?
Itu bisa diformat sebagai kisi untuk 2 byte oleh trailing
µG
, misalnya:... atau sepenuhnya diformat, termasuk memotong
^1
, untuk 9, dengan trailingj€”^j”=ṖṖ
, misalnya:sumber
JavaScript (ES7), 55 byte
Digunakan
,
di tempat=
(2^15,8^5,32768
).Uji kasus
Tampilkan cuplikan kode
Catatan: snippet use
Math.pow
bukan**
untuk kompatibilitas lintas-browser.sumber
05AB1E ,
232217 byteDisimpan 5 byte dengan memperhatikan format output yang fleksibel.
Cobalah online!
Penjelasan
Contoh untuk
2^15
sumber
C,
125123 + 4 (-lm
) =129127 byteMembawa bilangan ganda dan bilangan bulat.
Cobalah online!
sumber
Haskell, 64 byte
Contoh penggunaan:
2 # 32
->[[2,32],[4,16],[16,8],[256,4],[65536,2],[4294967296]]
. Cobalah online! .Bagaimana itu bekerja:
sumber
Utilitas Bash + GNU, 82
Script shell rekursif. Tampaknya ini tidak berfungsi di TIO, tetapi berjalan dengan baik ketika disimpan sebagai skrip dan dijalankan:
sumber