Urutannya
Semua orang tahu satu-satunya bilangan prima adalah 2
. Ho-hum. Tapi, ada bilangan genap tertentu di n
mana, ketika digabungkan dengan n-1
, mereka menjadi bilangan prima.
Sebagai permulaan, 1
tidak ada dalam daftar, karena 10
tidak prima. Demikian pula dengan 2
( 21
), dan 3
( 32
). Namun, 4
berfungsi karena 43
prima, jadi ini adalah angka pertama dalam urutan a(1) = 4
. Angka berikutnya yang berfungsi (baik 6
( 65
) maupun 8
( 87
) berfungsi) adalah 10
, karena 109
adalah bilangan prima, jadi a(2) = 10
. Lalu kami melewati banyak lagi sampai 22
, karena 2221
itu utama, jadi a(3) = 22
. Dan seterusnya.
Jelas semua istilah dalam urutan ini adalah genap, karena bilangan ganjil n
ketika digabungkan dengan n-1
menjadi genap (seperti 3
berubah menjadi 32
), yang tidak akan pernah menjadi prima.
Ini adalah urutan A054211 pada OEIS.
Tantangan
Mengingat nomor input n
yang cocok di suatu tempat ke dalam urutan ini (yaitu, n
digabungkan dengan n-1
prima), output posisinya dalam urutan ini. Anda dapat memilih 0 atau 1 diindeks, tetapi sebutkan yang Anda kirim.
Aturan
- Input dan output dapat dianggap sesuai dengan tipe integer asli bahasa Anda.
- Input dan output dapat diberikan dalam format apa pun yang nyaman .
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Jika memungkinkan, harap sertakan tautan ke lingkungan pengujian online agar orang lain dapat mencoba kode Anda!
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Contohnya
Contoh di bawah ini adalah 1-diindeks.
n = 4
1
n = 100
11
n = 420
51
sumber
n
selalu merupakan satu-satunya bilangan prima yang dapat dibagin
. Itu tidak istimewa - hanya bagaimana bilangan prima bekerja.Jawaban:
Jelly ,
87 byteTautan monadik yang mengambil anggota urutan dan mengembalikan indeksnya dalam urutan.
Cobalah online!
Bagaimana?
sumber
zip(head(), pop())
trik benar-benar dingin. :)Haskell ,
807570 byte5 byte menghemat berkat Laikoni
Cobalah online!
sumber
p x=all((>0).mod x)[2..x-1]
yang gagal untuk 1, tetapi ini seharusnya tidak menjadi masalah dalam kasus ini.show x++show(x-1)
bisa disingkat menjadishow=<<[x,x-1]
.show
bisa dilakukan dengan metode yang lebih pendek tetapi saya tidak memikirkan peta konser karena alasan tertentu.Jelly ,
12, 10, 8 byteCobalah online!
1-2 byte disimpan berkat @ nmjmcman101, dan 2 byte disimpan berkat @Dennis!
Penjelasan:
sumber
05AB1E ,
987 byteKode
Menggunakan penyandian 05AB1E . Cobalah online!
Penjelasan
sumber
'0-1'
ini prima.Sekam ,
131110 byte1
solusi -indeks:Cobalah online!
Tidak Terikat / Penjelasan
Terima kasih @Zgarb untuk
-3
byte!sumber
£İp
setara denganṗ
. Anda juga dapat menyimpan byte dengan#…ḣ
alih - alih£f…N
.Python 2 , 87 byte
-2 byte berkat @officialaimm . 1-diindeks.
Test Suite.
sumber
Pyth , 12 byte
Cobalah online! atau Verifikasi semua Uji Kasus.
Bagaimana?
sumber
Japt ,
1514121198 byte1-diindeks.
Cobalah
sumber
Æ
danÇ
?! Terima kasih, @Oliver; Saya akan memperbarui ketika saya kembali ke komputer.2o+X
(Dengan ruang tambahan) akan berfungsi sebagai pengganti[XXÉ]
, meskipun jika saya pernah menggunakan[]
kurung balancing otomatis, solusi Anda akan lebih pendek satu byte. (Sebenarnya 2, karena Anda bisa melakukannyaõ_ZÉ]¬nÃèj
)[]
! : DRöda , 73 byte
Cobalah online!
1-diindeks. Menggunakan aliran untuk melakukan input dan output.
Penjelasan:
sumber
Pyth , 14 byte
Cobalah online!
Penjelasan
sumber
lfTmP_s+`d`tdS
, sangat disayangkan bahwa saya tidak menemukan trik Anda sendiri pada saat itu :)Perl 6 , 45 byte
Cobalah online!
Yang
grep
menghasilkan urutan angka-angka yang memenuhi syarat, maka kita mencari kunci (:k
) (yaitu, indeks) darifirst
nomor dalam daftar yang sama dengan parameter input$_
.sumber
C,
9994 byte1 diindeks. Sungguh menyakitkan saya untuk menulis tes primality yang begitu boros secara komputasi, tetapi bagaimanapun juga byte adalah byte.
Jika kami mengizinkan beberapa hal yang benar-benar rapuh, kompilasi di komputer saya tanpa optimisasi dengan GCC 7.1.1, 94 byte berikut berfungsi (terima kasih @Conor O'Brien )
jika tidak, 99 byte yang lebih kuat ini berfungsi
Program lengkap, sedikit lebih mudah dibaca:
sumber
n=c;
alih-alihreturn c;
:i,c,m,k;f(n){c=i=1;for(;++i<n;c+=m==k){for(k=m=1;m*=10,m<i;);for(m=i*m+i-1;++k<m&&m%k;);}n=c;}
JavaScript (ES6),
49 4847 byte1-diindeks. Terbatas oleh ukuran tumpukan panggilan mesin Anda.
Cobalah online!
sumber
Mathematica, 77 byte
sumber
QBIC , 25 byte
Penjelasan
Ini menggunakan beberapa hal matematika yang cukup terlibat dengan cast-to-string ditampar untuk ukuran yang baik. Membuat topi versi tidak hanya menggabungkan string berbasis satu byte lebih lama:
sumber
PHP , 203 byte
Cobalah online!
Menggunakan indeks berbasis-1 untuk output. TIO link memiliki versi kode yang dapat dibaca.
sumber
Ruby , 42 + 9 = 51 byte
Menggunakan
-rprime -n
bendera. 1-diindeks.Bekerja dengan menghitung semua angka sama dengan atau di bawah input yang memenuhi kondisi (atau lebih teknis, semua angka yang memenuhi
n-1
kondisi). Karena input dijamin dalam urutan, tidak ada risiko kesalahan dari input acak seperti7
itu tidak "menjadi prima".Cobalah online!
sumber
Ruby , 62 byte
Cobalah online!
1-diindeks
sumber
Python 2 , 85 byte
1-diindeks
Uji
Perbaikan jawaban Mr. Xcoder
sumber
Java 8, 108 byte
Diindeks 0
Penjelasan:
Cobalah online.
sumber
Stax , 10 byte
1- Diindeks
Jalankan dan debug Penjelasannya
sumber
Tidy , 33 byte
Cobalah online!
Penjelasan
Ide dasarnya adalah membuat urutan angka yang valid kemudian mengembalikan fungsi indeks kari.
sumber