Bilangan prima kesepian (seperti saya menyebutnya) adalah bilangan prima, di mana diberi nomor grid dengan lebar w ≥ 3
, adalah bilangan prima yang tidak memiliki bilangan prima lain yang berdekatan dengan mereka secara ortogonal atau diagonal.
Misalnya, jika kita membawa kisi ini ke tempat w = 12
(bilangan prima yang dicetak tebal):
1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16 17 18 19 20 21 22 23...
...86 87 88 89 90 91 92 93 94 95 96
97 98 99 100 101 102 103 104 105 106 107 108
109 110 111 112 113 114 115 116 117 118 119 120
Anda dapat melihat bahwa hanya dua bilangan prima 103 dan 107 yang tidak memiliki bilangan prima secara ortogonal atau diagonal apa pun. Saya telah melewatkan bagian karena tidak ada bilangan prima kesepian di sana. (kecuali 37, sebenarnya)
Tugas Anda adalah, diberi dua input w ≥ 3
dan i ≥ 1
, menentukan prime kesepian pertama dalam kisi-kisi angka dengan lebar w
, di mana prime kesepian mengatakan harus lebih besar dari atau sama dengan i
. Input dapat diambil dalam format apa pun yang wajar (termasuk menjadikannya sebagai string). Dijamin akan ada prime lonely untuk lebar w
.
Grid tidak membungkus.
Contoh:
w i output
11 5 11
12 104 107
12 157 157
9 1 151
12 12 37
Karena ini adalah kode-golf , kode terpendek menang!
w=12
tidak37
prima kesepian? Tidak ada angka di sekitarnya -{25, 26, 38, 49, 50}
- yang prima.Jawaban:
C (gcc) ,
159158149 byteCobalah online!
sumber
JavaScript (ES6),
116104 byteMengambil input dalam sintaks currying
(w)(i)
.Uji kasus
Tampilkan cuplikan kode
Berkomentar
sumber
Python 2 , 144 byte
Cobalah online!
Urutan argumen:
w
,i
.Tidak ada modul eksternal yang digunakan di sini.
Python 2 + sympy, 127 byte
Cobalah online!
Tidak layak mendapat posting yang berbeda, karena satu-satunya perbedaan di sini adalah bahwa ia menggunakan
sympy.isprime
alih-alih fungsi pemeriksaan prima yang diimplementasikan secara manual.sumber
MATL , 38 byte
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Kode dasarnya terdiri dari satu loop yang terus memperbesar grid seperti yang dijelaskan dalam tantangan dengan satu baris di setiap iterasi.
Setelah membuat kisi-kisi di setiap iterasi, baris terakhir dihapus (kita tidak bisa tahu apakah bilangan prima itu kesepian atau tidak) dan angka yang tersisa diuji untuk melihat apakah setidaknya ada satu prime lonely ada. Ini dilakukan melalui konvolusi 2D.
Jika ada prime kesepian, kita keluar dari loop dan output perdana pertama. Atau kita lanjutkan dengan iterasi berikutnya, yang akan mencoba kotak yang lebih besar.
(Kode sebenarnya menggunakan versi kotak yang dialihkan, yang diperbesar oleh kolom, bukan oleh baris.)
sumber
Julia 0,6, 135 byte
TIO tidak memiliki
Primes
paket. Ini 5 byte lebih pendek jika saya diizinkan untuk mengembalikan semua bilangan prima kesepian (findfirst
menjadifind
). Upaya Julia untuk memindahkan fungsionalitasBase
adalah melukai golf (bukan tujuan Julia),Primes
dimasukkan dalam 0,4.Tidak digabungkan (kebanyakan)
sumber
Jelly , 20 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Perl 6 ,
113104 byteCobalah online!
sumber
Bersih ,
181... 145 byteCobalah online!
Tidak Disatukan:
sumber
Jelly ,
3029 byteDugaan saya adalah ini mungkin bisa dikalahkan oleh margin yang adil
Link diadik mengambil
i
di kiri danw
di kanan yang mengembalikan prime kesepian.Cobalah online!
Bagaimana?
sumber
Java 8, 176 byte
Port of Jonathan Frech 'C menjawab .
Cobalah online.
sumber