JE Maxfield membuktikan teorema berikut (lihat DOI: 10.2307 / 2688966 ):
Jika adalah bilangan bulat positif yang memiliki angka , maka ada bilangan bulat positif sehingga angka pertama dari merupakan bilangan bulat .
Tantangan
Detail
- mewakili faktorial dari .
- Digit dalam kasus kami dipahami berada di basis .
- Kiriman Anda harus bekerja untuk sewenang-wenang yang diberikan cukup waktu dan memori. Hanya menggunakan misalnya tipe 32-bit untuk mewakili bilangan bulat tidak cukup.
- Anda tidak perlu mengeluarkan sesedikit mungkin .
Contohnya
A N
1 1
2 2
3 9
4 8
5 7
6 3
7 6
9 96
12 5
16 89
17 69
18 76
19 63
24 4
72 6
841 12745
206591378 314
paling mungkin untuk setiap dapat ditemukan di https://oeis.org/A076219
Jawaban:
Python 2 , 50 byte
Cobalah online!
Ini adalah variasi dari solusi 47-byte yang dijelaskan di bawah ini, disesuaikan untuk mengembalikan
1
input'1'
. (Yaitu, kami menambah1
ekspresi penuh daripada panggilan rekursif, dan mulai menghitung darin==2
untuk menghapus satu lapisan kedalaman, menyeimbangkan hasil untuk semua non-'1'
input.)Python 2 , 45 byte (peta 1 hingga
True
)Ini adalah variasi lain, oleh @ Jo King dan @xnor, yang mengambil input sebagai angka dan kembali
True
untuk input1
. Beberapa orang berpikir ini adalah permainan yang adil, tetapi saya pribadi merasa sedikit aneh.Tetapi biayanya hanya 3 byte untuk membungkus hasil Boolean yang icky
+()
, memberi kami solusi "bagus" yang lebih pendek:Python 2 , 48 byte
sumber
+1
.a
sebagai angka.-a
dalam-p
``, itu trik yang rapi :)Brachylog ,
35 byteCobalah online!
Mengambil input melalui variabel outputnya, dan output melalui variabel inputnya. (Sebaliknya, hanya menemukan awalan acak faktorial input, yang tidak begitu menarik.) Waktu pada kasus uji kedua-terakhir di TIO, tetapi baik-baik saja pada yang terakhir . Saya sudah menjalankannya di 841 di laptop saya selama beberapa menit pada saat menulis ini, dan itu belum benar-benar mengeluarkan jawaban, tetapi saya yakin akan hal itu.
Karena satu-satunya input yang
ḟa₀
tidak berfungsi adalah 1, dan 1 adalah awalan positif 1! = 1,1|ḟa₀
berfungsi dengan baik.Juga, pada pengeditan ini, 841 telah berjalan selama hampir tiga jam dan masih belum menghasilkan output. Saya kira menghitung faktorial dari setiap bilangan bulat dari 1 hingga 12745 tidak terlalu cepat.
sumber
C ++ (gcc) ,
10795 byte, menggunakan-lgmp
dan-lgmpxx
Terima kasih kepada orang-orang di komentar untuk menunjukkan beberapa kecelakaan konyol.
Cobalah online!
Menghitungn! dengan mengalikan (n−1)! dengan n , lalu berulang kali membaginya dengan 10 sampai tidak lebih besar dari bilangan bulat yang dilewati. Pada titik ini, loop berakhir jika faktorial sama dengan bilangan bulat yang dilewati, atau berlanjut ke n berikutnya jika tidak.
sumber
107
byte.return
?Jelly , 8 byte
Cobalah online!
Mengambil bilangan bulat dan mengembalikan singleton.
sumber
05AB1E , 7 byte
Cobalah online atau verifikasi -hampir- semua kasus uji (
841
waktu habis, jadi tidak termasuk)Penjelasan:
sumber
Pyth - 8 byte
Cobalah online .
sumber
JavaScript,
4743 byteOutput sebagai BigInt.
Cobalah secara Online!
Menyelamatkan beberapa byte dengan mengambil pendekatan Lynn untuk "membangun" faktorial daripada menghitungnya pada setiap iterasi, jadi harap tingkatkan solusinya juga jika Anda membatalkan ini.
sumber
_Ês bU}f1
di Japt tidak bekerjas
.1
jika0
dapat dikembalikann=1
.x=i=1n;f=n=>`${x*=++i}`.search(n)?f(n):i
C # (.NET Core) , 69 + 22 = 91 byte
Cobalah online!
Penggunaan
System.Numerics.BigInteger
yang membutuhkanusing
pernyataan.-1 byte terima kasih kepada @ExpiredData!
sumber
Jelly , 16 byte
Cobalah online!
Penjelasan
sumber
Perl 6 , 23 byte
Cobalah online!
Penjelasan
sumber
Arang , 16 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Dorong
1
ke daftar kosong sehingga mulai dengan produk yang ditentukan.Ulangi sementara input tidak dapat ditemukan di awal produk dari daftar ...
... dorong panjang daftar ke dirinya sendiri.
Cetak nilai terakhir yang didorong ke daftar.
sumber
Perl 5
-Mbigint -p
, 25 byteCobalah online!
sumber
J ,
2822 byte-6 byte berkat FrownyFrog
Cobalah online!
jawaban asli J , 28 byte
Cobalah online!
>:@] ... x:@1
dimulai dengan presisi yang diperluas1
, terus meningkatkannya sambil ...-.@
itu tidak terjadi ...{.@
elm pertama adalah pertandingan awal ...E.&":
semua kecocokan substring (setelah merangkai kedua argumen&":
) mencari input asli di ...!
faktorial dari angka yang kita tambahkansumber
(]+1-0{(E.&":!))^:_&1x
C (gcc) -lgmp, 161 byte
Cobalah online!
sumber
strstr(b=mpz_get_str(0,10,_),a)-b;mpz_mul(_,_,n))mpz_add_ui(n,n,1)
alih-alihb=mpz_get_str(0,10,_),strstr(b,a)-b;mpz_add_ui(n,n,1),mpz_mul(_,_,n))
Python 3 , 63 byte
Cobalah online!
-24 byte terima kasih kepada Jo King
-3 byte terima kasih kepada Chas Brown
sumber
f=
yang Anda miliki di tajuk seharusnya diperhitungkan terhadap jumlah bit Anda.Jelly , 11 byte
Cobalah online!
sumber
Bersihkan , 88 byte
Cobalah online!
Mendefinisikan
$ :: Integer -> Integer
.Menggunakan
Data.Integer
bilangan bulat ukuran arbitrer untuk IO.sumber
Bahasa Wolfram (Mathematica) , 62 byte
Cobalah online!
sumber
Ruby , 40 byte
Cobalah online!
sumber
Ikon ,
6563 byteCobalah online!
sumber
Haskell, 89 byte
Jika ada yang tahu cara memotong impor yang diperlukan, beri tahu saya.
sumber