Diketahui bahwa bilangan prima aneh akan muncul dalam segitiga Pascal tepat dua kali. Namun, tidak semua angka yang muncul tepat dua kali dalam segitiga Pascal adalah prima. Kami akan memanggil nomor-nomor ini sebagai bilangan prima Pascal.
Bilangan prima Pascal adalah bilangan komposit yang muncul tepat dua kali dalam segitiga Pascal. Beberapa bilangan prima Pascal pertama adalah
4, 8, 9, 12, 14, 16, 18, ...
Tantangan Anda adalah untuk mengambil bilangan bulat positif n sebagai input dan output benar atau salah, tergantung pada apakah n adalah prima Pascal atau tidak. Ini kode-golf, jadi program tersingkat menang!
Jawaban:
Bahasa Wolfram (Mathematica) , 45 byte
Cobalah online!
Setiap angka komposit n muncul tepat dua kali pada baris n dan tidak dapat muncul sesudahnya. Jadi syarat untuk bilangan prima Pascal adalah bahwa mereka tidak muncul sama sekali dalam baris n-1 pertama .
Sejauh yang saya tahu, ini lebih pendek daripada memeriksa bahwa itu muncul tepat dua kali dalam pertama n baris dan mampu menggunakan
!PrimeQ
sebagai gantinya.sumber
Python 2 , 93 byte
Cobalah online!
Ini adalah fungsi bernama f , yang output melalui kode keluar , 0 untuk Pascal Primes, 1 sebaliknya.
Bagaimana ini bekerja?
Ini pada dasarnya memeriksa apakah n muncul dalam baris n - 1 pertama Pascal's triangle atau jika prime, dan melempar kesalahan jika salah satu dari kedua kondisi ini terpenuhi.
Disimpan 1 byte berkat ovs .
sumber
Jelly ,
11109 byteTerimakasih untuk:
’
(+1) hindari menggunakann2
(-2), jadi -1 keseluruhan.Cobalah online!
Pendekatan alternatif , oleh Jonathan Allan . (cacat)
Penjelasan untuk baris terakhir:
n
muncul dua kali dalam segitiga Pascal" setara dengan "n
tidak muncul din-1
baris pertama ".true
jika angkanya bukan bilangan prima (yaitu,ÆP == 0
) dan jumlahnyac
nol. Dari situ kita dapat menyimpulkan ituÆP == c
.Dapat dibuktikan bahwa jika mereka sama, maka mereka sama dengan 0, karena:
ÆP
mengembalikan nilai boolean, yang hanya bisa 0 atau 1.n
adalah bilangan prima, karena itu ia tidak dapat muncul din-1
baris pertama (yaitu,c == 0
)sumber
1
bukan prima Pascal; ini katanya.Ḷc€ḶFċoÆP¬
akan bekerja saya pikir.ċ=ÆP
harus bekerja.Ḷcþ`Fċ=ÆP
harus bekerja juga.Haskell ,
8684 byteCobalah online!
Penjelasan
Fungsi ini
p
secara rekursif mendefinisikan segitiga Pascal yang merosot:Seperti yang dapat kita lihat (dalam solusi
1
ini agak istimewa) setiap angkan
muncul tepat dua kali din+1
baris ke - th dan semua elemen dari baris berikutnya hanya menjadi lebih besar, sehingga kita hanya perlu memeriksa apakahn
ada suatu tempat hinggan
baris ke - th untuk melihat apakah suatu elemen didiskualifikasi:Sekarang kita memiliki
True
semua elemen yang muncul lebih dari dua kali (kecuali1
), jadi yang kita butuhkan adalah memilikiisPrime
fungsi yang salah yang mengembalikanTrue
untuk1
:sumber
APL (Dyalog) ,
44342419 byte5 byte disimpan berkat @Cowsquack
Cobalah online!
Bagaimana?
Kami memastikan bahwa keduanya tidak
⍳
- berkisar0
..n-1
,⍳∘.!
- Atas binomial cartesian dengan diri⊢∊
- mengandungn
,⍱
- juga tidak⊢|⍨
-n
modulo setiap item dari2↓⍳
- jangkauan2
..n-1
~0∊
- tidak mengandung0
(alias tidak dapat dibagi)sumber
(∨/1↓1≠⊢∨⍳)∧(~⊢∊⍳∘.!⍳)
lebih pendek dua byte(0∊⊢|⍨2↓⍳)∧∘~⊢∊⍳∘.!⍳
untuk dua lainnya, saya mengubah algoritma pemeriksaan~
memberikan(~0∊⊢|⍨2↓⍳)⍱⊢∊⍳∘.!⍳
satu byte kurang.JavaScript (Node.js) ,
103101 byteCobalah online!
sumber
n=>(r=x=>[...Array(n).keys(F=n=>n>0?n*F(n-1):1)].every(x))(i=>r(j=>F(i)/F(j)/F(i-j)-n))>F(n-1)**2%n
threority berfungsi tetapi sebenarnya untuk rentang kecilRuby ,
9795 byteCobalah online!
Memotong beberapa byte.
sumber
R , 55 byte
Cobalah online!
sum(!n%%1:n)>2
adalah tes komposit danouter(1:n-1,1:n,choose)
menghitung baris0
ken-1
segitiga Pascal, jadi kami pastikann
tidak muncul di sana.sumber
05AB1E , 10 byte
Cobalah online!
Penjelasan
Pemeriksaan yang
n
terjadi tepat dua kali dalam n pertama + baris segitiga pascals dan tidak prima.Perbandingan berfungsi karena tidak ada bilangan prima yang dapat terjadi 3 kali dalam segitiga.
sumber
Haskell , 90 byte
Cobalah online!
sumber
Pyth , 10 byte
Cobalah online!atau periksa Test suite.
sumber
JavaScript (Node.js) ,
79133130128 byteCobalah online!
pemeriksa prime jahat +50 byte :(
sumber
Python 2 ,
105104 byteterima kasih kepada user202729 untuk -1 byte
Cobalah online!
sumber
p+r
tampak mubazir ...