Setan-Primes
siapa mereka?
mereka Primes
mengandung 666
ini adalah Setan-Primes: [46663,266677,666599,666683,616669]
ini BUKAN :[462667,665669,36363631,555]
Merencanakan
Setiap angka yang lebih besar dari 6661 memiliki Setan-Primes di belakangnya
Tantangan
Diberikan bilangan bulat n>6661
menemukan Setan-Perdana di belakang (atau setara) dan paling dekat dengan dirinya.
Contohnya
Bilangan bulat n=30000
memiliki 3 Setan-Primes (SP) di balik itu: [6661, 16661, 26669]
.
Kode Anda harus mengembalikan 26669
yang terdekat di belakangnya
Uji Kasus
Input-> Output
6662->6661
10000->6661
66697->66697 (a SP returns himself)
328765->326663
678987->676661
969696->966677
Aturan
Kode Anda harus bekerja untuk semua yang ada n
dalam rentang bahasa Anda.
Ini kode-golf , jadi jawaban tersingkat dalam byte menang!
output the nth satan prime
tantangan ...Jawaban:
Mathematica, 82 byte
sumber
Neim , 9 byte
Penjelasan:
Cobalah online!
sumber
+6
mendorong 666? Atau apakah Neim hanya logam itu?+x
berarti 612 + kode karakterx
. Kode6
kebetulan adalah 54, jadi 612 + 54 = 666.'\+*
=100,356,612,868
(ditambah ordinal dari char berikut yaitu)Jelly ,
109 byteHemat 10% berkat @Dennis!
Cobalah online!
Penjelasan
sumber
ÆRẇ@Ðf666Ṁ
w
harus bekerjaẇ@
.Pyth ,
1514 byteDisimpan 1 byte dengan bantuan dari Dave .
Kesalahan memori untuk
969696
dan apa pun yang lebih tinggi pada komputer saya, tetapi tidak masalah jika diberikan memori yang cukup.Cobalah di sini atau periksa Test Suite.
Bagaimana?
Pyth , 14 byte
Coba di sini!
sumber
ef&/`T*3\6P_TS
"666"
adalah cara yang kurang efisien untuk menggambarkan string 666 yang*3\6
05AB1E , 11 byte
Cobalah online!
sumber
Bash + Core Utils,
5149 BytesMengambil argumen baris perintah. Bisa sangat lambat dengan jumlah yang lebih besar.
sumber
|head -1
sampai akhir.Mathematica,
64626153 byte-1 byte terima kasih kepada @KellyLowder
-8 byte (wow) terima kasih kepada @Natatree
Penjelasan
Ambil input. Kami menurunkannya dalam kondisi berikut:
inputnya tidak prima, ATAU
digit input tidak mengandung tiga 6s berturut-turut.
Kami ulangi itu sampai Setan utama tercapai.
sumber
#//.i_/;!PrimeQ@i||ToString@i~StringFreeQ~"666":>i-1&
Perl 5 , 47 byte
46 byte kode +1 untuk
-p
Cobalah online!
sumber
Japt , 14 byte
Menguji
Melihat karena ada adalah bonus berdasarkan waktu 50%: kasus uji Rampungkan
969696
di bawah setengah detik.Penjelasan
Input bilangan bulat implisit
U
.Buat array bilangan bulat dari
1
keU
.Saring (
f
) bilangan prima.Membalikkan.
Kembalikan elemen pertama yang mengembalikan nilai kebenaran (dalam hal ini
1
) ketika melewati fungsi yang memeriksa apakah ...Integer yang dikonversi menjadi string (
s
) berisi (ø
) 666.Alternatif Lebih Cepat, 15 byte
Sekali lagi, mengingat awalnya ada bonus berdasarkan waktu, inilah alternatif, dan jauh lebih cepat, solusi yang sepertinya tidak bisa saya mainkan lebih jauh.
Menguji
sumber
PowerShell , 128 byte
Cobalah online!
PowerShell tidak memiliki built-in faktorisasi prima, jadi ini meminjam kode dari jawaban saya pada Prime Factors Buddies .
Kami mengambil input
$n
, lalu menyatakan yang barufunction f
yang menghitung faktor-faktor input$a
. Jika inputnya$a
prima, maka ini akan kembali adil$a
.Bagian utama dari program ini adalah infinite
for()
loop. Di dalam loop, kami memeriksa apakah$n
-match
es melawan666
dan apakah$n
prima (yaitu,$n
cocok dengan semua faktor$n
). Jika ya, kita letakkan$n
di pipeline danexit
, dengan output implisit. Kalau tidak, kami mengurangi$n--
dan melanjutkan loop.sumber
Python 2 ,
7776 byteSunting: -1 byte berkat @ Mr.Xcoder
Waktu berjalan lambat, berjalan masuk
O(n^2)
Cobalah online!
Solusi 76 byte lainnya
Cobalah online!
Dengan SymPy 73 byte
Cobalah online!
sumber
lambda x:max(q for q in range(x+1)if"666"in`q`*all(q%t for t in range(2,q)))
- gunakanmax()
bukan[][-1]
PowerShell ,
716964 byteCobalah online!
328765 membutuhkan waktu ~ 30 detik di mesin saya, tetapi batas waktu 60 detik di Tio.run habis.
678987 memakan waktu ~ 1,5 menit.
sumber
MATL, 16 byte
Cobalah di MATL Online
Penjelasan
sumber
C ++ 389 byte
Ini adalah program lengkap!
Anda perlu Boost untuk mengompilasinya. (Atau salin dan tempel ke shell C ++ online favorit Anda.)
Jalankan dari baris perintah dengan memberikan n sebagai argumen.
Tidak Disatukan:
Pintasan dibuat dalam hal pengujian angka acak. Kode asli mulai menguji kemungkinan bilangan prima di 6661 dan bertambah dua. Anda juga akan mendapatkan peringatan kompiler karena itu (-1) di sana alih-alih npos.
Namun, ini berjalan cukup cepat. Hanya butuh sekitar 40 detik untuk menemukan semua 214 setan primes di bawah 1.000.000 pada AMD Sempron 130 lama saya.
: ^ D
sumber
Paket Bash + bsd-games, 33
Cobalah online .
sumber
tail -n1
.tail
sini. Bahkantail -1
1 bahkan kurang.Python 3 ,
85 8380 byteHalvard's berukuran 4 byte lebih pendek karena dilakukan dengan Python 2.
Cobalah online!
Beri waktu, itu sangat lambat karena
O(n^2)
kerumitannya.sumber
JavaScript (ES6),
5554 byte-1 byte terima kasih kepada @ThePirateBay.
Sangat lambat dengan input besar. Tes primality diadaptasi dari jawaban kode golf ini .
Pengaturan waktu
10000
butuh 10 detik328765
memakan waktu 3 menit678987
membutuhkan waktu 9 menit969696
memakan waktu 16 menitTes
Beberapa di antaranya akan menggantung browser Anda selama beberapa menit.
Tampilkan cuplikan kode
Versi Lebih Cepat, 56 byte
Selesaikan setiap test case dalam waktu kurang dari satu detik.
sumber
d==1
dengand<2
sejakn>6661
.f=n=>/666/.test(n)&(g=d=>n%--d?g(d):d<2)(n)?n:f(n-1)
tetapi akan menimbulkan kesalahan rekursi untuk nomor yang lebih besar.f=n=>/666/.test(d=n)-eval("while(n%--d);d")?f(n-1):n
Ruby,
67,66,58, 56 byteTermasuk
+7
byte untuk-rprime
Ini cukup cepat, menghitung nilai hingga
~2^52
sekitar satu detik dan2^64
dalam waktu kurang dari 5 menit (MBP 2011, Ruby 2.3.1).sumber
Stax , 10 byte
Jalankan dan debug itu
Penjelasan (tidak dibungkus):
sumber
PHP , 148 byte
Cobalah online!
sumber
Perl 6 , 35 byte
Cobalah online!
Solusi rekursif langsung.
sumber
C # (.NET Core) ,
117115112 byteCobalah online!
int
deklarasi.Saya yakin ini bisa dibuat lebih pendek; mungkin dengan secara rekursif memanggil
func f
dan menghapus bagian luarfor
-loopPendekatan Rekursif, 85 byte
Cobalah online!
Saya tidak yakin seberapa baik pendekatan ini cocok dalam batas-batas kode-golf karena harus mengatur yang
Func<int,int> f = null
pertama, dan ituf
dipanggil lagi, tetapi tidak dihitung terhadap byte. Klarifikasi apa pun akan dihargai.sumber