Urutan lain, tantangan lain. *
Definisi
Perdana p
berada dalam urutan ini, sebut saja A
, jika untuk setiap digit d
dalam p
ekspansi desimal, Anda ganti d
dengan d
salinan d
dan bilangan bulat yang dihasilkan masih prima; nol tidak diizinkan.
Sebagai contoh, 11
sepele dalam urutan ini (ini adalah angka pertama, kebetulan). Berikutnya dalam urutan adalah 31
, karena 3331
juga prima; maka 53
karena 55555333
juga prima, dan sebagainya.
Tantangan
Diberikan input n
, kembali A(n)
, yaitu n
item th dalam urutan ini.
Contohnya
Berikut adalah 20 istilah pertama untuk membantu Anda memulai. Ini adalah A057628 pada OEIS.
11, 31, 53, 131, 149, 223, 283, 311, 313, 331, 397, 463, 641, 691, 937, 941, 1439, 1511, 1741, 1871
Ini berarti A(0) = 11
,, A(1) = 31
dll., Ketika menggunakan nol pengindeksan.
Aturan
- Anda dapat memilih pengindeksan berbasis nol atau satu; tolong jelaskan di jawaban Anda yang mana.
- Alih-alih mengembalikan
n
elemen ke - th, Anda dapat memilih untuk mengembalikann
istilah yang pertama . - Anda dapat mengasumsikan bahwa input / output tidak akan lebih besar dari format integer asli bahasa Anda; namun, prime digit yang diulang mungkin lebih besar dari format asli bahasa Anda, sehingga perlu dipertanggungjawabkan.
- Sebagai contoh,,
1871
jumlah terakhir dari contoh, memiliki bilangan prima yang sesuai18888888877777771
, yang sedikit lebih besar dari INT32 standar. - Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Output bisa ke konsol, dikembalikan dari fungsi, ditampilkan dalam sembulan peringatan, dll.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
* Agar adil, saya telah menemukan beberapa syarat pertama dari urutan yang hanya bermain-main dengan beberapa angka, dan kemudian pergi ke OEIS untuk mendapatkan sisa urutan.
sumber
169
itu sendiri bukan yang utama, itu13 * 13
.Jawaban:
Sekam , 15 byte
Cobalah online!
Erik the Outgolfer menyimpan satu byte. Menggunakan
ṗ
alih-alihεp
akan menghemat byte lain, tetapi itu membuat program sangat lambat bahkan untuk n = 2.sumber
ṗ
dalam penerjemah, ini gila bagaimana ini lebih lambat daripada menemukan semua faktor utama ...05AB1E ,
1413 byte-1 byte terima kasih kepada Emigna !
Cobalah online!
Penjelasan
sumber
Jelly ,
1814 byteCobalah online!
Tn. Xcoder: -1 Byte (logis semua)
Erik the Outgolfer: -2 Bytes (satu baris, bukan dua)
HyperNeutrino: -1 Byte (mengembalikan elemen urutan pertama)
Penjelasan
Sunting: semula mengirim jawaban yang menyertakan angka 0 dalam representasi desimalnya yang secara khusus tidak diizinkan.
sumber
Bahasa Wolfram (Mathematica) , 100 byte
Cobalah online!
Jonathan Frech menyimpan 3 byte
dan -7 byte dari JungHwan Min
-15 byte dari Martin Ender
juga terima kasih kepada Jenny Mathy
sumber
Alice ,
7270666256 byteTerima kasih kepada Leo karena telah menghemat 5 byte.
Cobalah online!
Menggunakan input berbasis 1.
Penjelasan
The golf trik rapi di sini (meskipun itu hanya menghemat beberapa byte) adalah bahwa saya menggunakan tes primality yang memberikan
0
untuk komposit n untukn
untuk non-komposit n . Dengan begitu, kita tidak harus menggunakan hasilnya secara langsung dalam kondisi, tetapi kita bisa meneruskannya langsung ke bagian berikutnya yang memeriksa bahwa input tidak mengandung nol.sumber
Python 2 , 130 byte
Cobalah online!
Python 2 ,
195179167140138136135134 bytexrange
alih-alihrange
, dengan demikian menghindariMemoryError
dan memadatkan fungsi utama; meningkatkan penghitungan indeks bilangan bulat.|
untuk menghemat byteor
.~-
alih-alih0**
untuk membalikkan keberadaan nol dalamj
, seperti&
diikuti oleh boolean sejati mengisolasi properti boolean nilai ini.~-A&B&C
(setara dengan(not A) and B and C
) denganA, B, C
menjadi booleanA<B==C
.Cobalah online! (1-diindeks)
Penjelasan
Menentukan fungsi utama
f
yang mengambil dalam indeks integern
,, dan secara default nilai yang ditetapkanj
, urutan saat ini canditate (diinisiasi9
untuk meningkatkan kinerja sambil menjaga ukuran program) dan fungsi pengecekan utama.Selama
n
tidak nol,n
entri urutan ke-3 belum ditemukan. Jadij
bertambah dann
dikurangi oleh satu jika ifj
adalah angka yang memenuhi properti yang diperlukan.Ketika loop berakhir,
j
adalahn
entri urutan ke - 4 dan dengan demikian dicetak.sumber
Pyth , 21 byte
Coba di sini!
Agak panjang karena Pyth tidak memiliki ekspansi Desimal bawaan .
.f
), yang:.AKjZT
), dan (&
) ...*VK`Z
), bergabung bersama dan dikonversi ke integer (ss
) adalah prime (P_
), dan (&
) ...P_
).sumber
e
sesuai amandemen aturan baru.Perl 6 , 51 byte
Cobalah online!
grep {...}, 2..*
memfilter urutan tak terbatas bilangan asli mulai dari 2 menggunakan fungsi predikat antara kawat gigi.(...)[$_]
indeks ke dalam daftar yang difilter ini menggunakan argumen fungsi$_
.!/0/
memfilter angka yang mengandung angka nol.S:g/./{$/ x $/}/
mereplikasi setiap digit dalam ekspansi desimal nomor tes.is-prime $_ & S:g/./{$/ x $/}/
memanggilis-prime
fungsi bawaan dengan dan-junction$_
, nomor tes, dan nomor yang dihasilkan dari mereplikasi digitnya. Fungsi akan mengembalikan true jika kedua anggota dan-junction adalah prima.sumber
J, 81 byte
Ini adalah salah satu situasi di mana saya belum menemukan solusi yang baik.
Meskipun demikian, saya memposting ini dengan harapan mempelajari sesuatu yang baru.
f
memberi tahu kami jika angka yang diberikan adalah "prime digit berulang". Itu rusak sebagai berikut:Dan akhirnya kata kunci Do ... While, dengan kata kerja yang sulit, yang tampaknya tidak dapat dihindari, yang muncul dari kenyataan bahwa kita perlu menggunakan daftar untuk menyimpan kemajuan kita, yang membutuhkan register "prima saat ini" dan "yang ditemukan sejauh ini" , karena argumen kiri kami sudah diambil untuk menyimpan kondisi berhenti, yaitu
n
,. Ini berarti bahwa kita harus menggunakan banyak byte berharga untuk tugas sederhana menentukan args ([
dan]
) dan membongkar daftar elemen 2 kita ({.
dan{:
):Cobalah online!
sumber
f
dengan fungsi helper yang dibungkus dengan tanda kurung. Juga, saya mencoba memainkan golf fungsi helper dan muncul1 p:('x',~"."0#])&.":
, yang sayangnya tidak berhasil mengecualikan bilangan prima dengan '0' di dalamnya. Apakah Anda punya pikiran? Itu juga harus memiliki'x',~
bagian untuk mendapatkan presisi ekstra ...(((0>.-)((*&(1&p:)0&e.|10#.#~),.&.":))([,(+*)~)])/^:_@,&2
, gunakan10x
untuk memperpanjang rentang jika tidak n = 15 akan melewati 937