Tugas
Diberi nomor alami sebagai input, tugas Anda adalah menampilkan nilai kebenaran atau falsey berdasarkan apakah input tersebut merupakan faktorial dari nomor alami mana pun. Anda dapat mengasumsikan bahwa nomor input akan selalu berada dalam kisaran angka yang didukung oleh bahasa Anda, tetapi Anda tidak boleh menyalahgunakan tipe nomor asli untuk meremehkan masalah .
Berlaku celah standar .
Memasukkan
Anda akan diberi nomor alami (tipe Integer
atau serupa).
Anda dapat mengambil input dengan cara apa pun yang Anda inginkan kecuali dengan asumsi itu berada dalam variabel yang telah ditentukan. Membaca dari file, konsol, kotak dialog ( prompt
), kotak input dll diperbolehkan. Input sebagai argumen fungsi juga diizinkan!
Keluaran
Program Anda harus menampilkan nilai kebenaran atau falsey berdasarkan apakah nomor input merupakan faktorial dari nomor alami.
Pastikan nilai kebenaran / falsey Anda konsisten untuk semua input, yaitu, jika Anda menggunakan pasangan 1 dan 0 untuk masing-masing menyatakan nilai kebenaran dan falsey, maka program Anda harus menampilkan 1 untuk semua input yang harus memiliki nilai kebenaran dan 0 untuk semua input yang harus memiliki nilai falsey.
Anda dapat mengambil output dengan cara apa pun yang Anda inginkan kecuali menuliskannya ke variabel. Menulis ke file, konsol, layar dll. Diperbolehkan. Fungsinya return
juga diizinkan!
Program Anda tidak boleh menghasilkan kesalahan untuk input apa pun!
Uji Kasus
Input Output
1 Truthy (0! or 1!)
2 Truthy (2!)
3 Falsey
4 Falsey
5 Falsey
6 Truthy (3!)
7 Falsey
8 Falsey
24 Truthy (4!)
120 Truthy (5!)
Kriteria Kemenangan
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
1
?Jawaban:
Brachylog , 1 byte
Cobalah online!
Penjelasan
ḟ
adalah built-in yang menyatakan hubungan berikut: outputnya adalah faktorial dari inputnya. Kami cukup memberikannya set output dan melihat apakah itu sesuai atau tidak dengan input variabel.sumber
true.
merupakan pernyataan dantrue
bukan)Jelly , 3 byte
Cobalah online!
1 untuk ya, 0 untuk tidak.
Bagaimana itu bekerja
sumber
Jelly , 4 byte
Bukan jawaban Jelly terpendek, tapi agak efisien.
Cobalah online!
Bagaimana itu bekerja
sumber
ECMAScript Regex,
733+690+158119118(117🐌)byteKetertarikan saya pada regex telah dipicu dengan semangat baru setelah lebih dari 4½ tahun tidak aktif. Karena itu, saya mencari set angka dan fungsi yang lebih alami agar sesuai dengan regeks ECMAScript unary, melanjutkan meningkatkan engine regex saya, dan mulai menyikat PCRE juga.
Saya terpesona oleh keterasingan membangun fungsi matematika di ECMAScript regex. Masalah harus didekati dari perspektif yang sama sekali berbeda, dan sampai kedatangan wawasan kunci, tidak diketahui apakah mereka dapat dipecahkan sama sekali. Ini memaksa casting jaring yang jauh lebih luas dalam menemukan properti matematika mana yang mungkin dapat digunakan untuk membuat masalah tertentu dapat dipecahkan.
Mencocokkan angka faktorial adalah masalah yang bahkan tidak saya pertimbangkan untuk ditangani pada tahun 2014 - atau jika saya melakukannya, hanya sebentar, mengabaikannya sebagai hal yang tidak mungkin terjadi. Tetapi bulan lalu, saya menyadari bahwa itu bisa dilakukan.
Seperti dengan posting regex ECMA saya yang lain, saya akan memberikan peringatan: Saya sangat merekomendasikan belajar bagaimana memecahkan masalah matematika unary di ECMAScript regex. Ini merupakan perjalanan yang menarik bagi saya, dan saya tidak ingin merusaknya bagi siapa pun yang mungkin ingin mencobanya sendiri, terutama mereka yang tertarik pada teori bilangan. Lihat posting ini sebelumnya untuk daftar masalah yang direkomendasikan untuk ditandai dengan spoiler bertanda satu per satu.
Jadi jangan membaca lebih jauh jika Anda tidak ingin beberapa sihir regex unary canggih dimanjakan untuk Anda . Jika Anda ingin mencoba mencari tahu sendiri keajaiban ini, saya sangat menyarankan memulai dengan menyelesaikan beberapa masalah dalam ECMAScript regex sebagaimana diuraikan dalam pos yang ditautkan di atas.
Ini ideku:
Setelah mengunyahnya sebentar, dan membangun beberapa regex lain sementara itu, saya mengambil tugas untuk menulis regex faktorial. Butuh beberapa jam, tetapi akhirnya bekerja dengan baik. Sebagai bonus tambahan, algoritme dapat mengembalikan faktorial terbalik sebagai pertandingan. Tidak ada yang menghindarinya, bahkan; dengan sifat bagaimana itu harus diimplementasikan dalam ECMA, perlu untuk menebak apa faktor terbalik sebelum melakukan hal lain.
The downside adalah bahwa algoritma ini dibuat untuk regex yang sangat panjang ... tapi saya senang bahwa akhirnya membutuhkan teknik yang digunakan dalam regex multiplikasi 651 byte saya (yang akhirnya usang, karena metode yang berbeda dibuat untuk 50 byte regex). Saya berharap masalah akan muncul yang memerlukan trik ini: Beroperasi pada dua angka, yang keduanya kekuatan dari basis yang sama, dalam satu lingkaran, dengan menambahkan mereka bersama-sama dengan jelas dan memisahkan mereka di setiap iterasi.
Tetapi karena kesulitan dan panjangnya algoritma ini, saya menggunakan lookaheads molekuler (dari bentuk
(?*...)
) untuk mengimplementasikannya. Itu adalah fitur yang tidak ada dalam ECMAScript atau mesin regex utama lainnya, tetapi yang saya miliki implementasikan di mesin saya . Tanpa tangkapan apa pun di dalam molekul lookahead, secara fungsional setara dengan lookahead atom, tetapi dengan tangkapan itu bisa sangat kuat. Mesin akan mundur ke lookahead, dan ini dapat digunakan untuk memperkirakan nilai yang berputar melalui semua kemungkinan (untuk pengujian nanti) tanpa menggunakan karakter input. Menggunakannya dapat menghasilkan implementasi yang jauh lebih bersih. (Variable-length lookbehind setidaknya memiliki kekuatan yang sama dengan molekuler lookahead, tetapi yang terakhir cenderung membuat implementasi yang lebih mudah dan elegan.)Jadi panjang 733 dan 690 byte sebenarnya tidak mewakili inkarnasi solusi yang kompatibel dengan ECMAScript - karenanya "+" setelahnya; tentu saja mungkin untuk mem-port algoritma itu ke ECMAScript murni (yang akan menambah panjangnya sedikit) tetapi saya tidak menyadarinya ... karena saya memikirkan algoritma yang jauh lebih sederhana dan lebih ringkas! Salah satu yang dapat dengan mudah diimplementasikan tanpa melihat molekul. Ini juga jauh lebih cepat.
Yang baru ini, seperti yang sebelumnya, harus menebak faktor terbalik, bersepeda melalui semua kemungkinan dan mengujinya untuk pertandingan. Ini membagi N dengan 2 untuk memberikan ruang bagi pekerjaan yang perlu dilakukan, dan kemudian membuat lingkaran di mana ia akan berulang kali membagi input dengan pembagi yang dimulai pada 3 dan bertambah setiap kali. (Dengan demikian, 1! Dan 2! Tidak dapat dicocokkan dengan algoritme utama, dan harus ditangani secara terpisah.) Pembagi ini terus dilacak dengan menambahkannya ke hasil bagi; dua angka ini dapat dipisahkan secara jelas karena, dengan asumsi M! == N, hasil bagi berjalan akan terus dibagi oleh M sampai sama dengan M.
Jadi saya suka bahwa masalahnya dapat dikurangi menjadi bahkan lebih sedikit kompleksitas daripada regex Fibonacci dioptimalkan golf saya , tapi saya mengeluh dengan kekecewaan bahwa teknik multiplexing-power-of-the-same-base saya harus menunggu masalah lain yang sebenarnya membutuhkannya, karena yang ini tidak. Ini adalah kisah tentang algoritma multiplikasi 651 byte saya yang digantikan oleh 50 byte, sekali lagi!
Sunting: Saya dapat menjatuhkan 1 byte (119 → 118) menggunakan trik yang ditemukan oleh Grimy yang dapat memperpendek pembagian dalam kasus bahwa hasil bagi dijamin lebih besar dari atau sama dengan pembagi.
Tanpa basa-basi lagi, inilah regex:
Versi benar / salah (118 byte):
^((x*)x*)(?=\1$)(?=(xxx\2)+$)((?=\2\3*(x(?!\3)xx(x*)))\6(?=\5+$)(?=((x*)(?=\5(\8*$))x)\7*$)x\9(?=x\6\3+$))*\2\3$|^xx?$
Cobalah online!
Kembalikan faktorial terbalik atau tidak cocok (124 byte):
^(?=((x*)x*)(?=\1$)(?=(xxx\2)+$)((?=\2\3*(x(?!\3)xx(x*)))\6(?=\5+$)(?=((x*)(?=\5(\8*$))x)\7*$)x\9(?=x\6\3+$))*\2\3$)\3|^xx?$
Cobalah online!
Kembalikan faktorial terbalik atau tidak cocok, dalam ECMAScript +
\K
(120 byte):^((x*)x*)(?=\1$)(?=(xxx\2)+$)((?=\2\3*(x(?!\3)xx(x*)))\6(?=\5+$)(?=((x*)(?=\5(\8*$))x)\7*$)x\9(?=x\6\3+$))*\2\K\3$|^xx?$
Dan versi bebas spasi dengan komentar:
Sejarah lengkap optimalisasi golf saya di regex ini ada di github:
regex untuk mencocokkan nomor faktorial - metode perbandingan multiplisitas, dengan molekuler lookahead.txt
regex untuk mencocokkan nomor faktorial.txt (yang ditunjukkan di atas)
((x*)x*)
((x*)+)
((x+)+)
\2
Mesin .NET regex tidak meniru perilaku ini dalam mode ECMAScript-nya, dan dengan demikian, 117 byte regex berfungsi:
Cobalah online! (versi eksponensial-perlambatan, dengan mesin .NET regex + emulasi ECMAScript)
sumber
JavaScript (ES6),
302928 byteMengharapkan bilangan bulat positif. Pengembalian
-1
untuk kepalsuan dan-2
untuk kebenaran.Catatan : Fungsi ini mendukung input yang cukup besar (Anda harus membaca ini sebagai: 'cukup besar untuk JS'). Ini harus bekerja dengan aman hingga 2 53 - 1 . Pasti akan gagal mulai dari N = 121.645.100.408.831.992 , input ini dibulatkan menjadi 19! = 121.645.100.408.832.000 karena pengkodean IEEE-754-nya. Ada mungkin menjadi hasil positif palsu lain sebelum 121.645.100.408.831.991 karena kesalahan pembulatan, tapi saya tidak tahu pasti.
sumber
~
di akhir.Python 3 ,
3938 byteFungsi rekursif mengambil integer,
n
, mengembalikan nilai boolean inversley mewakili hasilnya (truthy:False
, falsey:True
)Cobalah online!
Membagi berulang kali
n
dengani
, dengan nilai awal1
, sampai sisanya kurang dari atau sama dengan1
kemudian menguji apakah sisanya kurang dari1
, hanya faktorial yang akan berakhir dengan sisa sama dengan1
, dan<
satu byte lebih pendek dari==
.sumber
1
untuk semua faktorial kecuali1
yang dikembalikanTrue
.Java 8, 46 byte
Ini didasarkan pada entri Roman Gräf yang saya dapat membuat selusin byte dari. Saya akan menyarankan itu di sana tetapi saya belum memiliki reputasi yang cukup untuk berkomentar! Kode pelari ujian saya yang dimodifikasi:
sumber
Retina ,
5038 byte12 byte disimpan berkat @Neil dengan menggabungkan memperpendek loop dan dengan menyingkirkan
;
Cobalah online!
Output
1
untuk benar dan0
salah..+
cocok dengan seluruh nomor1¶$&$*
menggantinya dengan1
diikuti oleh baris baru dan pertandingan dikonversi ke unaryProgram yang tersisa membagi angka unary di garis bawah dengan berturut-turut meningkatkan bilangan bulat positif, terus melacak di baris atas, sementara dimungkinkan untuk melakukannya.
+`
loop sampai string tetap sama^(1+)¶(\1)+$
cocok dengan baris atas banyak1
s dan kelipatannya banyak1
s di baris bawah dan ganti dengan1$1¶$#2$*
garis atas banyak1
s dengan yang lain1
, yaitu, meningkatkan jumlah yang diwakili oleh garis atas oleh 1, diikuti oleh baris baru dan jumlah kecocokan dari garis atas di garis bawah (mis. jumlah pertandingan dari kelompok penangkap kedua )1
s banyak , yaitu, membagi angka bawah dengan angka teratasSetelah tidak mungkin lagi melakukannya,
¶.$
berikan jumlah korek api regex ini, yaitu. apakah ada satu-satunya1
di garis bawah, yang hanya terjadi jika angka adalah faktorialJika no-crash / crash dibolehkan alih-alih nilai true / falsy, maka saya bisa mendapatkan
3634 byte.Ini berjalan dengan pendekatan yang sama, tetapi menggabungkan ke
$*
dalam garis ketiga dan keempat. Baris ketiga dan seterusnya adalah bagian dari loop yang sama,{
adalah kependekan dari+(
mana(
grup mengelompokkan baris yang tersisa ke dalam loop. Faktorial berakhir pada program yang keluar dari loop, sementara non-faktorial terjebak dalam loop selamanya sampai Retina melempar OverflowException yang disebabkan oleh penggantian terakhir yang gagal sehingga memiliki bagian bawah unary bukan dalam desimal, dan penggantian pertama dari loop mengubah garis bawah dari desimal ke unary, sehingga meledak dengan cepat.sumber
1
seperti yang tersirat saat$*
di akhir penggantian.$*
dengan dua garis lainnya.05AB1E , 4 byte
Cobalah online!
Penjelasan
sumber
L
muncul inputnya? Juga,Å!
memberi Anda daftar faktorial kurang dari atau sama dengan input.D
sini. Tangkapan bagus tentangÅ!
. Saya selalu lupa tentang daftar-perintah. Itu tidak akan menyimpan byte, tetapi pasti lebih efisien.C ++,
10210092 BytesLoop melalui semua nilai dari
0
ken
dan menghitung faktorial dan kemudian memeriksa apakah itu sama dengann
.Terima kasih Christoph! (disimpan 8 byte)
sumber
int a(int n){int i=n,j=0;for(;i;)j|=lround(exp(lgamma(i--+1)))==n;return j;}
.lround
danlgamma
sudah C ++ 11 jadi bisa saja#include<cmath>
. Mungkin Anda dapat lebih meningkatkan saran saya :)Haskell ,
4326 byteCobalah online!
sumber
f n=elem n$scanl1(*)[1..n]
konyol tidak efisien tetapi lebih pendek.40430
tanpa penundaan yang nyata.divMod
dengan[1..]
berturut-turut sampai mencapai nol sisa dengan hasil bagi 1 (faktorial) atau sisanya bukan nol (non-faktorial), tetapi tampaknya itu bukan pendekatan yang tepat. Aku menemukan solusi 46-karakter lucu ini, meskipun:f|let x%n=mod n x==0&&(x+1)%div n x||n==1=(1%)
.Haskell , 38 byte
Cobalah online! Contoh penggunaan:
(2#) 24
. PengembalianTrue
atauFalse
.Ini adalah yang terpendek yang bisa saya dapatkan sementara masih sangat efisien. Bahkan untuk angka sebesar
hasilnya segera diberikan. Solusinya bekerja dengan membagi input
n
olehm = 2,3,4,5,...
sampai baik hasilnya adalah satu ataun
tidak habis dibagim
.Untuk solusi 26-byte yang lebih pendek namun tidak efisien yang menghitung
n!
input yang bukan faktorial lihat di sini .sumber
MATL , 5 byte
Cobalah online!
Penjelasan
sumber
Fourier ,
4039 byteCobalah di FourIDE!
Pada dasarnya mengalikan jumlah N dengan jumlah yang meningkat hingga N sama dengan (output 1) atau lebih besar dari (output 0) input.
Pseudocode Penjelasan:
sumber
Japt ,
86 byteCobalah online!
Ini menghasilkan 0 untuk false dan 1 untuk true.
Penjelasan
sumber
aU ¦J
kex¥U
(memetakan masingX
- masing keX==U
dan jumlah), meskipun itu tidak akan berfungsi pada TIO.2
karenao
hanya akan memberi Anda[0,1]
. Inilah perbaikan dengan penghematan 1 byte.Perl 5, 31 byte
Input diambil melalui STDIN, output diberikan melalui kode keluar (1 untuk faktorial, 0 untuk non-faktorial).
Input dibagi oleh bilangan bulat berturut-turut sampai 1 atau beberapa fraksi kurang dari satu, yang dipotong ke dalam hasilnya.
sumber
Perl 6 , 29 byte
Menguji
Diperluas:
sumber
{$_∈[\*] 1..$_}
. Pendekatan lain yang menarik adalah2>*.polymod(1..*).sum
.setlX , 32 byte
Menciptakan fungsi yang disebut
f
mana Anda menggunakan faktorial potensial Anda sebagai parameter.Ia bekerja dengan ukuran bilangan bulat sembarang tetapi itu cukup tidak efisien.
(Ngomong-ngomong: ini adalah partisipasi pertama saya di puzzle pemrograman)
sumber
C (gcc), 33 byte
Perhatikan bahwa beberapa penulis mendefinisikan "bilangan asli" sebagai bilangan bulat positif . Karena itu saya tidak peduli yang
f(0)
menyebabkan rekursi tak terbatas.sumber
R ,
2822 byteCobalah online!
sumber
C # (.NET Core) , 68 byte
Cobalah online!
Bukan solusi terpendek, tetapi bekerja dengan angka yang sangat besar. TIO Link menyertakan contoh dengan
10000!
.Berikut adalah versi yang lebih pendek yang menggunakan
int
yang memiliki nilai maksimum 2147483647 .C # (.NET Core) , 45 byte
Cobalah online!
Kredit ke @KevinCruijssen untuk total bermain golf 3 byte dari kedua jawaban!
sumber
&&
dapat golfed untuk&
, dan trailing;
tidak harus dihitung untuk fungsi lambda. Juga, tidak bisakahulong k=2
beradauint k=2
di jawaban 50-byte Anda?&
vs&&
. Saya pikir saya mendapatkan stack overflow, tapi sepertinya berhasil juga.ulong
adalah 64 bit sedangkanuint
32. Sepertinya orang lain menggunakanint
jadi mungkin saya hanya akan menggunakannya untuk versi singkat. Sehubungan dengan trailing;
, ini adalah fungsi penuh, bukan lambda, jadi saya pikir saya perlu memasukkannya?/
dan di%
antaraulong
danuint
, tetapi tidakulong
danint
. Tidak tahu itu :)double
Anda mulai melihat pembulatan di beberapa titik - misalnya, 24! dan 120! gagal. MeskipunSystem.Numerics.BigInteger
memiliki ketepatan yang paling,int
adalah jawaban terpendek :)&&
operator hubungan arus pendek. . Tapi ini golf kode;) Senang Anda suka10000!
contohnya!C ++ (dentang), 51 byte
Rekursi menang sejauh bermain golf.
51 byte, nol benar:
int f(int n,int i=2){return n<2?!n:n%i|f(n/i,i+1);}
Ini mengorbankan kecepatan yang cukup banyak untuk penghematan 1 byte. Ganti
|
dengan||
untuk membuatnya cepat, karena evaluasi hubung singkat OR logis.Cobalah online! (Versi lambat 51 byte)
Cobalah secara online!(Versi cepat 52 byte)
Versi lambat tidak digabungkan:
Versi cepat tidak disatukan:
Ada banyak cara untuk mengatur ulang ini.
52 byte, bukan nol adalah benar:
int f(int n,int i=2){return n<2?n:n%i?0:f(n/i,i+1);}
Cobalah online!
52 byte, nol benar:
int f(int n,int i=2){return!n?1:n%i?n-1:f(n/i,i+1);}
Cobalah online!
Sebelum beralih ke rekursi, saya mencoba membuat beberapa versi berulang, dan mereka mendekati.
54 byte, bukan nol benar:
int f(int n){for(int i=2;n>1;)n=n%i?0:n/i++;return n;}
Cobalah online!
54 byte, nol adalah benar (berdasarkan pengiriman Java 8 Roman Gräf ):
int f(int n){int a=1,i=0;for(;a<n;a*=++i);return a-n;}
Cobalah online!
Sekarang, untuk bagian bawah laras, versi rekursif tanpa
n==0
penanganan (saya menganggap ini tidak valid, karena 0 adalah bilangan alami, dan definisi apa pun yang tidak digunakan untuk "bilangan asli" dari penggunaan yang sangat terbatas). Dalam versi di bawah ini, rekursi tak terbatasf(0)
salah satu memicu segfault karena meluap tumpukan, atau dengan kompiler yang mengoptimalkannya untuk iterasi, loop tanpa henti:48 byte, nol benar:
int f(int n,int i=2){return n%i?n-1:f(n/i,i+1);}
Cobalah online!
48 byte, nol adalah benar (berdasarkan pengiriman 33 byte C (gcc) Hagen von Eitzen ):
int f(int n,int e=0){return n%++e?n-1:f(n/e,e);}
Cobalah online!
sumber
Mathematica, 20 byte
versi lain untuk menguji angka besar (lihat komentar)
menguji hingga 1000!
sumber
Range[#]
denganRange@#
:)!Range@#!~FreeQ~#&
.Cubix , 24 byte
Cobalah online
Kubus
Kita mulai dengan mendorong
1
,I
nput,1
ke stack. Ini akan menjadi indeks kami, target kami, dan akumulator kami, masing-masing.Kami kemudian mengulang. Pada setiap iterasi, kami mengurangi akumulator dari input. Jika hasilnya 0, kita selesai, jadi kita tekan
1
,O
utput, dan keluar. Jika negatif, kami sudah melangkah terlalu jauh, jadi kami dorong0
,O
mengucapkan, dan keluar. Kalau tidak, kita lihatsumber
Neim , 8 byte
Penjelasan:
Cobalah!
Neim , 3 byte (tidak bersaing)
Non-bersaing sebagai token berisi dan token faktorial ditambahkan setelah tantangan dibuat.
Penjelasan:
Cobalah!
sumber
> <> ,
2422 byte-2 byte terima kasih kepada @Aaron
Saya mencoba bahasa baru (karena lisensi Mathematica saya kedaluwarsa ...)
Cobalah secara online , atau di taman bermain ikan
Mengasumsikan nomor input sudah ada di stack , dan mengembalikan 0 atau 1. Ia bekerja dengan mengalikan n angka pertama sampai berhenti menjadi kurang dari input, dan kemudian mencetak 1 jika sama dengan input, dan 0 jika tidak t.
sumber
v>\n<^
menjadi\\n/
; lihat di siniAPL (Dyalog Unicode) , 5
67byteGolfed byte dengan mengubah
×/
ke!
berkat Erik yang OutgolferCobalah online!
Penjelasan
sumber
N∊×\⍳N←⎕
Bagaimana ini mengambil argumen? Saya tidak melihat din
mana pun. Apakah ini hal yang spesifik Dyalog?(⊢∊(×/⍳)) right_argument
seperti yang Anda lihat di tautan TIO. Dan⊢
merujuk pada argumen yang benar.⊢∊×\ä⍳
. Solusi "benar" (tetapi lebih lama) adalah0=1|!⍣¯1
; "Apakah faktor pembalik bilangan bulat?"JavaScript (ES6), 71 byte
Ini mengambil input sebagai argumen fungsi dan
alert
output. Keluaran0
untuk falsey dan1
untuk kebenaran.Penjelasan
Program ini terdiri dari dua fungsi,
f
dang
.f
adalah fungsi komputasi faktorial rekursif, dang
merupakan fungsi utama program.g
mengasumsikan memiliki argumen tunggaln
. Ini mendefinisikan argumen defaultr
dengan nilai 0 dan argumen default lain dengan nilai0
. Itu, kemudian, mengulangi semua bilangan bulat dari 0 ken
, dan, di setiap iterasi, memeriksa apakah fungsi yangf
diterapkan lebih darii
(indeks saat ini) saman
, yaitu apakahn
merupakan faktorial darii
. Jika itu terjadi menjadi kasus,r
's nilai diatur ke 1. Pada akhir fungsi,r
yangalert
ed.Cuplikan Tes
( Catatan: Potongan keluaran digunakan
console.log()
karena tidak ada yang suka terlalu banyak dari sialalert()
itu. )sumber
QBIC ,
2119 bytePenjelasan
Sebelumnya
Penjelasan:
sumber
Java 8, 59 byte
Kode uji
sumber