Tugas - Judul ini merangkum cukup banyak: naikkan integer x ke power x , di mana 0<x
.
Pembatasan:
- Gunakan exponentiation,
exp()
,ln()
, dan setiap kekuatan-lain yang terkait bahasa built-in, sepertipow()
,x^x
,x**x
dilarang. - Anda dapat mengasumsikan bahwa bilangan bulat yang diberikan sesuai dengan batas bahasa pemrograman pilihan Anda.
Kasus uji:
Input | Output
---------------
2 | 4
3 | 27
5 | 3125
6 | 46656
10 | 10000000000
Ini adalah kode-golf , jadi program terpendek dalam byte menang.
code-golf
math
arithmetic
Shaggy
sumber
sumber
0
dan bahwa output yang diharapkan ditentukan (0
atau1
atau salah satu). Akhirnya, harus menangani bilangan bulat negatif akan menjadi tambahan yang bagus untuk tantangan.1
untuk0^0
. Namun,Foundation
+ Swift mengembalikan 00
dan sebaliknya menetapkannya0<x
di awal. Saya juga menghapus batasan bahwa kode tidak boleh melempar kesalahan; itu harus pergi tanpa berkata. Silakan kembali jika perlu.Jawaban:
APL (Dyalog) , 4 byte
Untuk x x , ambil x sebagai argumen kiri dan x sebagai argumen kanan.
Coba semua kasing online!
×/
produk dari⍴⍨
salinan salinan argDan di sini di sini ada yang menangani bilangan bulat negatif juga:
Coba semua kasing!
×/
produk dari|
nilai mutlak⍴
r epetisi dari|
nilai absolut*
untuk kekuatan×
signumPrimitif Daya bawaan adalah:
sumber
Python , 25 byte
Cobalah online!
sumber
Mathematica, 16 byte
Saya punya dua solusi pada hitungan byte ini:
Di sini,
#~Table~#
buat daftarn
salinann
. KemudianList
kepala diganti dengan1##&
yang mengalikan semua argumennya.Ini hanya menyimpan input
n
dan kemudian dikalikan1
dengann
,n
kali.sumber
#~Product~{#}&
JavaScript (ES6),
33282524 byteCobalah
Sejarah
25 byte
28 byte
33 byte
sumber
Bash murni, 43
Cobalah online .
Tidak yakin apakah ini terlalu banyak membengkokkan aturan - saya tidak menggunakan salah satu builtin terlarang yang terdaftar, tapi saya menggunakan konversi basis.
printf 1%0$1d
output a1
diikuti oleh n0
s$[b#a]
adalah ekspansi aritmatika untuk diperlakukana
sebagai angka dasarb
, yang memberikan hasil yang diperlukan. Sayangnya basis <2 tidak berfungsi, sehingga?:
bit ekstra menangani input n = 1.Input maksimum adalah 15, karena bash menggunakan integer 64-bit yang telah ditandatangani (hingga 2 31 -1).
sumber
Alice , 13 byte
Cobalah online!
Penjelasan
Ini adalah kerangka kerja untuk program yang membaca dan menulis bilangan bulat desimal dan beroperasi sepenuhnya dalam mode Kardinal (jadi program untuk sebagian besar masalah aritmatika).
sumber
ML standar , 42 byte
Cobalah online!
Penjelasan:
sumber
Jelly , 3 byte
Cobalah online!
Bagaimana?
sumber
F7 88 50
berfungsi sebagaimana dimaksud.Cubix , 19 byte
Cobalah online!
Selangkah demi selangkah
Mengembang ke kubus dengan panjang sisi 2
I:1
Mengambil input, menduplikat dan mendorong 1. Ini mengatur tumpukan dengan penghitung, pengganda, dan hasil.*s;
Lipat gandakan TOS, tukar hasil dengan sebelumnya dan hapus sebelumnya.pu
Bawa item counter ke TOS. Putar balik. Ini digunakan untuk menjadi perubahan jalur, tetapi harus mencukur byte.|($
Ini dilakukan untuk menghemat satu byte. Saat dipukul, lompatan decrement. mencerminkan, mengurangi konter dan melompati no op yang membungkus kubus.!vqW
Uji penghitungnya. Jika benar-benar melewati pengalihan, letakkan penghitung di BOS, ubah jalur kembali ke pengganda. Kalau tidak redirect.|sO@
ini adalah urutan akhir yang diarahkan ke dari uji tandingan. Melewati pantulan horizontal, menukar TOS yang membawa hasil ke TOS, ouput dan berhenti.sumber
R, 22 byte
dibaca
x
dari stdin.menghasilkan daftar
x
salinanx
, kemudian menghitung produk dari elemen daftar itu. Kapanx=0
,rep
pengembaliannumeric(0)
, yang merupakan vektor numerik panjang0
, tetapiprod
yang adalah 1, jadi0^0=1
dengan metode ini, yang konsisten dengan eksponensial builtin R, jadi itu cukup rapi.Cobalah online!
sumber
bahasa mesin x86_64 untuk Linux,
14 1110 byteUntuk Mencoba secara online! , kompilasi dan jalankan program C berikut.
sumber
Ruby,
2018 byte-2 byte karena spek berubah dan saya tidak lagi membutuhkan argumen eksponen.
Cobalah online!
sumber
Ditumpuk , 10 byte
Cobalah online!
Eksponen dua argumen untuk ukuran yang sama:
Keduanya adalah fungsi. Mengulangi fungsi yang dikalikan
1
dengann
n
waktu.sumber
Scala ,
3226 byteCobalah online! (Menambahkan konversi menjadi panjang di TIO sehingga tidak akan meluap pada n = 10.)
sumber
05AB1E , 3 byte
Cobalah online! atau Coba semua contoh
sumber
.D
. Pertama kali saya melihatnya digunakan.Haskell ,
242321 byteCobalah online!
sumber
f y=foldr1(*)$y<$[1..y]
byte lebih pendek.product$y<$[1..y]
Japt , 4 byte
Cobalah online!
Penjelasan
sumber
kode mesin x86 (Linux), 18 byte
Diharapkan deklarasi C sebagai berikut
extern int XpowX(int)
.Dibongkar
sumber
Brachylog , 6 byte
Cobalah online!
Penjelasan
sumber
CJam , 7 byte
Cobalah online!
Penjelasan
sumber
Perl 6 , 13 byte
$_ xx $_
mengevaluasi ke daftar$_
salinan$_
($_
menjadi argumen untuk fungsi anonim), dan kemudian[*]
mengurangi daftar itu dengan multiplikasi.sumber
CJam , 6 byte
Cobalah online!
sumber
Clojure, 22
:)
sumber
Röda , 17 byte
Cobalah online!
Ini adalah fungsi anonim yang mengambil input dari aliran.
Penjelasan:
sumber
dc ,
24232622 byteIni adalah upaya pertama saya menulis makro rekursif di dc. Saya yakin itu adalah solusi sub-optimal yang dapat ditingkatkan banyak.
Cobalah online!
Sunting: Terima kasih eush77 ! -4 byte.
sumber
x=1
.lr
urutan di akhir dengan duad
s di awal.x
salinanx
di stack (dan1
tentu saja), danx
multiplikasi sesudahnya. Jadi endingnya bisa jelasdsFxp
.lr
tidak akan berhasil di sini. Ini pertama kalinya saya bermain golf dalam bahasa berbasis stack, jadi rasanya sangat tidak biasa. Terima kasih atas bantuan Anda!Batch, 58 byte
Hanya berfungsi untuk input satu digit karena aritmatika 32-bit.
sumber
brainf * ck , 148 byte
Cobalah online!
Tidak ada bawaan;)
Bagaimana itu bekerja
Singkatnya, ini bekerja dengan mengalikan
x
(input) dengan sendirinyax
kali. (alias tambahan iterasi berulang). Hasil akhirnya adalah x ^ x.I / O
Program ini mengambil input ASCII tunggal, dan memprosesnya dengan indeks ASCII minus 48 . Yang minus 48 adalah untuk menormalkan input dari angka aktual (
4
menjadi52
->52-48
->4
). Untuk memasukkan angka yang lebih tinggi dari 9, gunakan karakter ASCII yang berkaitan dengan waktu yang tepat (:
->58-48
->10
). Program ini berjalan dengan cara yang sama.Tes I / O
Karena tidak ada karakter ASCII yang dapat dicetak setelah input 3, maka hanya dapat mencetak angka secara teori . Padahal, Anda dapat memeriksa semua input yang benar-benar berfungsi pada visualisator seperti ini .
sumber
MATLAB / Oktaf, 23 byte
sumber
Python, 32 byte
Cobalah online!
sumber
f=
bagian, sehingga Anda dapat mempersingkat pengiriman hingga 30 byte .f=
ini perlu dihitung, karena ini bersifat rekursif, jadi itu bergantung pada fungsi yang disebutkanf
untuk bekerja dengan baikCommon Lisp ,
59 4240 byteCobalah online!
sumber