Sebuah prime benar-truncatable adalah perdana di mana setiap prefix adalah perdana (dalam basis 10). Sebuah kiri-truncatable prima adalah persis sebaliknya, di mana setiap postfix adalah prima (bilangan prima yang dimulai dengan 0 tidak diperbolehkan). Kedua urutan ini terbatas (Hanya ada 83 truncatable kanan, sementara ada 4260 truncatable kiri).
Anda perlu menulis sebuah program yang menerima sejumlah tunggal sebagai input, dan menghasilkan n th prima kanan truncatable. Namun, ketika program dibaca diatur mundur , itu harus menghasilkan perdana terpotong kiri ke- n .
Untuk mengatur program mundur, kami membagi program menjadi kata-kata, lalu membalik urutan kata-kata. Sebuah kata dapat terdiri dari sejumlah karakter.
Misalnya, jika yang berikut adalah program Anda:
hello world
1234567890
Berikut ini semua akan dimungkinkan pengaturan mundur:
Membagi pada setiap karakter:
0987654321
dlrow olleh
Memisahkan di ruang putih:
1234567890
world hello
Membelah secara sewenang-wenang (pipa ditambahkan untuk kejelasan):
hel|lo w|orld
1|23456|7|8|90
908723456orld
1lo whel
Saat mengatur program Anda mundur, semua spasi putih harus dipertimbangkan dan dibalik, sama seperti karakter lainnya.
Masukan uji maju:
1: 2
2: 3
21: 379
60: 239933
83: 73939133
Input tes mundur:
1: 2
2: 3
39: 647
187: 29173
4260: 357686312646216567629137
Program harus dapat berjalan dalam jumlah waktu yang wajar (kurang dari satu menit)
Ini adalah kode-golf , sehingga program dengan byte paling sedikit menang!
sumber
lo w
adalahorld\n1
. Baris baru tidak mengakhiri atomJawaban:
Jelly ,
2623 byteMeneruskan
Cobalah online!
Kata-kata
Ñ
¶
p
9
¶
7ÆR2ĿV€$ÆPÐf$ÐĿFị@
Ke belakang
Cobalah online!
Kata-kata
7ÆR2ĿV€$ÆPÐf$ÐĿFị@
¶
9
p
¶
Ñ
Bagaimana itu bekerja
Semua program Jelly terdiri dari tautan (Jelly mengambil fungsi), yang dipisahkan oleh linefeeds atau pilcrows (
¶
). Yang terakhir adalah tautan utama ; itu disebut secara otomatis ketika program dijalankan.Program forward berfungsi sebagai berikut.
Program mundur hampir persis sama; hanya ada dua perbedaan.
Tautan utama sekarang
Ñ
, yang hanya memanggil tautan di bawahnya (membungkus), yaitu, tautan utama program penerusan.9p
bukannyap9
mengembalikan produk Cartesian yang dibalik.sumber
Python 2,
143139 byteTerdiri dari lima bagian:
I=1
a={2}…[~-n]
I=0
Jadi pembalikan hanya membalik nilai
I
.Penjelasan
Fungsi
f
melakukan pencarian rekursif untuk bilangan prima terpotong kiri (LTPs) atau bilangan prima terpotong-kanan (RTP), tergantung pada nilai globalI
. Nilai-nilai ini ditambahkan ke seta
. Kemudian,lambda n:sorted(a)[~-n]
kembalikan yangn
ke-satu.Mari kita mendefinisikan sebuah daun sebagai LTP, RTP, beberapa digit bukan nol + LTP, atau RTP + beberapa digit bukan nol. Ini semua adalah nilai-nilai yang
f
bisa ingin memeriksa keutamaan.Saya merancang tes pseudoprime Fermat yang bekerja untuk semua daun:
(63973 adalah nomor Carmichael .)
Jika tes ini mengembalikan nilai true, maka
z
harus ditambahkan ke seta
dan kita harus mengulanginyastr(z)
. Bit kode yang bertanggung jawab adalah:Pertama, kami ingin menangani kasus ini
z == 2
. Kami melakukannya dengan hanya menghindarinya di sini dan melakukan pengkodean-keras2
saat kami mendefinisikannyaa
! (EDIT: Dan tidak ada yang berbahaya terjadi jika kita juga menangkapz == 1
.) Jadi kita dapat mengasumsikan ituz ≥ 3
sekarang.Saya telah menerjemahkan beberapa "dan" ke dalam perbandingan rantai pendek hubungan pendek: tiga perbandingan pertama harus berhasil sebelum
a.add(z)
danf(u)
pernah dievaluasi. Inilah semua peran mereka:Ucapan Terima Kasih
u=[d+s,s+d][I]
→u=d[I:]+s+d*I
;z==2
→z<3
dan trik mod 91 ). Terima kasih!sumber