Pertanyaan ini dikerjakan ulang, harap baca kembali.
Ultrafactorials
Ultrafactorials adalah urutan angka yang dapat dihasilkan menggunakan fungsi berikut:
a(n) = n! ^ n!
Nilai yang dihasilkan naik sangat cepat. Catatan: Ini adalah entri A046882 di OEIS. Juga terkait adalah hyperfactorials, yang masih cukup besar, tetapi urutan yang sedikit lebih kecil: A002109
Tugas Anda
Tugas Anda adalah mengimplementasikan angka-angka ini ke dalam bahasa Anda. Program Anda akan menghitung jumlah semua ultrafactorial mulai dari 0 hingga inklusif n
.
Memasukkan
Program Anda hanya dapat mengambil satu input: angka, yang menyerupai terakhir (n) ultrafactorial yang akan ditambahkan ke penjumlahan. Input dipastikan positif atau 0.
Keluaran
Output Anda terserah Anda, selama ada jumlah angka yang terlihat di suatu tempat.
Aturan
- Anda dapat mengasumsikan semua bilangan bulat, oleh karena itu input bilangan bulat, dan menggunakan loop penghitungan bilangan bulat untuk menghasilkan beberapa hasil.
Uji kasus
Input: -1
Output: Any kind of error (because -1! is undefined), or no handling at all
Input: 0
Output: 1
Input: 1
Output: 2
Input: 2
Output: 6
Input: 3
Output: 46662
Tantangan
Ini adalah kode-golf , jadi jawabannya dengan panjang byte terkecil menang!
double
didukung oleh tipe data default bahasa (seperti )?Jawaban:
05AB1E , 5 byte
Kode:
Penjelasan:
Menggunakan pengkodean CP-1252 . Cobalah online!
sumber
L!DmO
juga berfungsi jika Anda ingin melepas bit "CP-1252 encoding".Mathematica, 19 byte
Permintaan maaf untuk kode yang sangat jelas;)
sumber
Jelly, 6 byte
Cobalah online!
sumber
‘
,, jadiR!*`S‘
simpan satu byte (saya memilih‘Ḷ!*`S
).R -
3430 bytemembuat vektorisasi itu bagus
sunting: disimpan 4 byte berkat @MickyT
sumber
x=factorial(0:scan());sum(x^x)
J,
1512 byteDisimpan 3 byte berkat mil!
Penjelasan
Uji kasus
sumber
1#.i.^~@!@,]
memotong beberapa byte lagi.1#.
melakukan penjumlahan. Jika itu bukan tip, Anda harus menambahkannya!Perl 6 ,
413837 byte( Cobalah online. )
Penjelasan:
for 0 .. $_
: Untuk setiap integer dari 0 hingga input,[*](1 .. $_) xx 2
: hitung faktorial dua kali,[**] ...
: dan eksponensial dua faktorial yang identik.[+] ...
: Lalu jumlah semua hasil dari loop.Berkat b2gills untuk 1 byte.
sumber
([*] …)
dapat ditulis sebagai[*](…)
tabungan byteCheddar ,
4437 byteTerima kasih kambing untuk operator yang berkurang! Saya pikir akan lebih baik untuk menambahkan faktorial
Cobalah online
Tidak disatukan
Penjelasan
Catatan: Sedikit ketinggalan jaman, akan diperbaiki
sumber
MATL , 7 byte
Cobalah online!
Penjelasan
sumber
PHP, 49 byte
INF
untukn>5
pada sistem 64 bit.untuk jumlah besar, 70 byte
membutuhkan PHP untuk dikompilasi
--with-gmp
sumber
Rubi,
6466 byteMenambahkan dua karakter untuk perbaikan bug off-by-one (akan mencari cara memperpendek panggilan injeksi nanti).
sumber
a=(0..i)
bukana=(1..i)
?+1
adalah solusi terbaik.Pyth -
98 byteTest Suite .
sumber
Haskell,
6756 bytePerhatikan bahwa pengajuan ini dibuat sebelum aturan yang melarang builtin dihapus.
Sebagai contoh:
sumber
Python 2,
7372 bytesumber
PARI / GP , 19 byte
sumber
R, 42
35byteSekarang saya sudah membaca pertanyaan dengan benar, saya telah memasukkan jumlahnya.
Ini membutuhkan pustaka gmp (multiple precision arithmetic) untuk tersedia. Ini memungkinkan penanganan sejumlah besar. Jika tidak, apapun yang melebihi 5 pengembalian
INF
.Ini diimplementasikan sebagai fungsi yang tidak disebutkan namanya untuk menghindari
as.character
yang akan diperlukan untuk output ke STDOUT melaluicat
Contoh dijalankan
f (9) akan berjalan cukup baik, tetapi mengisi sejumlah halaman. Beberapa ratus atau lebih dan 2.017.528 digit. f (10) membunuh sesi di mesin saya.
sumber
factorialZ(0:x)
. Apakah ada alasan khusus untuk tidak menggunakanbase::factorial()
fungsi ini?gmp::factorialZ
untuk menangani angka-angka besar.JavaScript (ES7), 38 byte
sumber
Pyke, 11 byte
Coba di sini!
Fakta menyenangkan: Pyke tidak memiliki faktorial bawaan karena
SB
hanya 2 byte!sumber
Haskell, 43 byte
Contoh penggunaan:
a 3
->46662
.b
menghitung satu ultrafactorial dana
menjumlahkan semua ultrafactorial dari0
ken
.sumber
JavaScript (ES7), 44 byte
sumber
Python 2, 82 Bytes
sumber
range(input())
ini akan menghapus beberapa byteBertanya-tanya , 33 byte
Pemakaian:
Penjelasan
Buat rentang inklusif dari 0 hingga input.
Peta pada rentang dengan fungsi yang 1) menghitung faktorial item, 2) menyimpan hasilnya
f
, dan 3) menghitungf^f
.Jumlah.
sumber
TI-Basic, 13 byte
PS Anda dapat mengganti
sum(seq(
denganΣ(
jika Anda memiliki sistem operasi yang lebih baru (tidak ada perubahan ukuran).sumber
Bahasa GameMaker, 97 byte
Fungsi utama (52 byte)
Fungsi f (45 byte)
sumber
Ruby 2, 41 byte
sumber
s
pada saat yang sama dengan melewatkannya sebagai nilai awalt
untuk mengurangi / menyuntikkan.->n{((t=s=1)..n).map{|i|t+=(s*=i)**s};t}
atau->n{t=s=1;(1..n).map{|i|t+=(s*=i)**s};t}
Dyalog APL, 10 byte
Bagaimana?
⍳
rentang input0,
didahului dengan 0!*!
menerapkanx! ^ x!
+/
jumlahsumber
*
dan!
merupakan fungsi skalar, jadi gunakan array:+/*⍨!0,⍳⎕
atau(+/!*!)0,⍳
jika Anda benar-benar menginginkan kereta.Mathematica, 19 byte
Fungsi anonim. Mengambil nomor sebagai input, dan mengembalikan nomor sebagai output.
sumber
Brachylog , 12 byte
Cobalah online!
Penjelasan
sumber
C #, 79 byte dengan output konsol
C #, 64 byte sebagai pengembalian
sumber
Sebenarnya
1110 byteBagaimana itu bekerja
sumber
Racket 54 byte
Tidak Disatukan:
Pengujian:
Keluaran:
sumber