Anda harus membuat perdana terkecil dengan n
digit, dan hanya akan berisi digit yang ditentukan dalam daftar k
.
Contoh:
Memasukkan:
4
1 2
Untuk ini, Anda harus menghasilkan perdana terkecil dengan 4
digit, dan perdana itu hanya boleh berisi digit 1
dan 2
.
Keluaran:
2111
Memasukkan:
10
0 4 7
Keluaran:
4000000007
Memasukkan:
6
5 5 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 5 5
Keluaran:
115151
Anda dapat menjamin bahwa input akan selalu dalam format yang Anda tentukan, dan Anda dapat melakukan apa saja jika Anda mendapatkan input yang tidak valid (seperti input menjadi satu digit n
, tanpa k
.)
Jika tidak ada solusi untuk input tersebut, program Anda diizinkan untuk melakukan salah satu dari yang berikut:
- Mencetak
banana
- Lempar kesalahan
- Jalankan selamanya
- Ada yang lain
Karena ini adalah kode-golf , cobalah membidik kode terpendek.
Input dapat dalam format apa pun yang Anda tentukan. Misalnya, jika Anda ingin input Anda seperti salah satu dari yang berikut ini, itu tidak masalah.
4
[1, 2]
[1,2]4
1,2
4
4 12
Anda dapat menulis suatu program atau fungsi, dan itu harus mengembalikan nilai yang benar atau mencetaknya.
Ruang kosong diizinkan di mana saja.
Tantangan ini diinspirasi oleh A036229 .
Jawaban:
Brachylog (2), 8 byte
Cobalah online!
Sangat lambat pada masalah yang memiliki banyak kemungkinan digit, atau yang mengandung 0 di set digit yang mungkin (itu berfungsi dalam kasus ini; hanya saja itu jauh lebih lambat sehingga TIO habis waktu kecuali masalahnya sangat sederhana). Seperti biasa untuk Brachylog, ini adalah fungsi, bukan program lengkap.
Input diambil dalam format
[ndigits,[list of digits]]
, mis[10,[[0,4,7]]]
.Penjelasan
Dilihat dari sudut pandang deklaratif murni, ini mengatakan "menemukan bilangan prima, dengan jumlah digit yang diberikan, di mana semua digit adalah salah satu digit yang diberikan". Untuk menemukan nomor terkecil , kami menggunakan petunjuk urutan evaluasi untuk memastikan urutan kami menguji angka terkecil hingga terbesar; dalam hal ini,
ᵐ
membuat keputusan di dekat awal daftar kurang rentan terhadap perubahan daripada keputusan di akhir (ini adalah tatanan alaminya, yang kebetulan sama dengan leksikografis dan urutan numerik pada bilangan bulat), dan dengan demikian{o∋}ᵐ
memiliki dua urutan evaluasi mengisyaratkan, "variasikan beberapa digit terakhir terlebih dahulu" (dariᵐ
tatanan alamiah) sebagai petunjuk yang lebih penting, dan "periksa digit yang lebih kecil sebelum digit yang lebih besar" (dario
sebelum∋
, yang bertindak sebagai petunjuk dalam konteks ini) sebagai tiebreak.{o∋}ᵐ
dapat ditulis sebagai setaraoᵐ∋ᵐ
dengan menyimpan byte.sumber
Paket Bash + bsd-games, 28 byte
Input diberikan pada baris perintah sebagai n diikuti oleh k sebagai daftar digit yang tidak dibatasi.
Cobalah online.
sumber
Python 2 , 66 byte
Cobalah online!
Mengambil input seperti
f(3,{'9','3','8'})
.Python tidak memiliki built-in untuk bilangan prima, sehingga fungsi menghasilkan mereka menggunakan Teorema Wilson untuk memeriksa setiap nilai potensial
k
pada gilirannya untuk menjadi prima.Ketidaksetaraan dirantai
10**~-n<p%k*k<s>=set(`k`)
menggabungkan tiga kondisi padak
:10**~-n<k
:k
mengandung setidaknyan
digit. Kita tidak perlu memeriksa dengan tepat karena jika kita mencapai lebih banyak digit, pasti tidak ada solusip%k>0
:k
adalah prima, melalui kondisi Teorema Wilson denganp=(n-1)!^2
. Karenap%k
0 atau 1, ini dapat digabungkan dengan kondisi sebelumnya seperti10**~-n<p%k*k
s>=set(`k`)
: Semua digit dalamk
berada di sets
. Ini dapat disambungkan karena Python 2 menganggap set lebih besar dari angka.Jika saat
k
ini tidak memenuhi semua ini, fungsi berulangk+1
, menambahkan 1 ke output yang dihasilkan. Karena output berakhir denganTrue
yang sama dengan1
, dank
dimulai pada1
, outputnya adalahk
. Pelacakan paralel inik
menghasilkan ketukank
langsung pada kesuksesan.sumber
JavaScript (ES7), 100 byte
Mengambil input sebagai jumlah digit
n
dan string digit yang diizinkans
dalam sintaks currying(n)(s)
. Kembaliundefined
jika tidak ada solusi yang ditemukan.Bekerja agak cepat hingga 6 digit, mungkin bekerja untuk 7 dan tentunya terlalu lambat - dan memori haus - lebih dari itu.
Uji
Tampilkan cuplikan kode
sumber
n=>s=>[...Array(10**n).keys()].find(i=>eval(`/[${s}]{${n}}/`).test(i)&(p=j=>i%--j?p(j):j==1)(i))
Jelly , 12 byte
Mengambil satu set dan integer sebagai argumen baris perintah. Mencetak 0 jika tidak ada solusi.
Cobalah online!
Bagaimana itu bekerja
sumber
Pyke,
1816 byteCoba di sini!
Berjalan selamanya jika tidak ada nilai yang ditemukan
sumber
Mathematica, 64 byte
Fungsi murni di mana argumen pertama adalah daftar (diurutkan) dari digit yang diizinkan dan argumen kedua adalah panjang yang diizinkan.
Tuples@##
menghitung semua daftar angka diperbolehkan dari panjang diizinkan, maka kita menemukanFirstCase
yang cocokx:{f_,___}
sehingga digit pertamaf
adalah tidak0
dan integery=FromDigits@x
adalah perdana dan menggantikannya dengany
.sumber
/;
tes untuk memilih tuple tetapi juga:>
mengkonversi ke format output yang diinginkan. (Saya melihat dalam dokumentasi yang dibolehkan, tetapi hanya setelah membaca jawaban ini!) Anda harus menentukan bahwa fungsi Anda membutuhkan angka yang diizinkan untuk diurutkan: itu memberikan jawaban yang salah3331
alih-alih3313
jika dipanggil dengan[{3,1},4]
.Select[FromDigits/@Tuples[Sort@#,#2],PrimeQ][[1]]&@@#&
?0
dan@@#&
tampaknya berlebihan.Brachylog , 15 byte
Cobalah online!
Ini cukup lambat.
Penjelasan
sumber
JavaScript (ES6), 86 byte
Mengambil input melalui sintaks currying, misalnya,
(4)('12')
Untuk dijalankan dalam mode ketat (untuk optimisasi panggilan ekor [TCO] ). Jika lingkungan Anda tidak mendukung TCO, itu akan menghasilkan kesalahan stack overflow untuk bilangan prima yang lebih besar dari tumpukan lingkungan.
Untuk input yang tidak valid itu akan berjalan selamanya.
catatan:
chrome://flags/#enable-javascript-harmony
dan mengaktifkan bendera ini untuk menjalankan cuplikan di atas dengan dukungan TCO.sumber
F=i=>(P=j=>i%--j?P(j):1==j)(i)&&...
MATL, 17 byte
Fungsi ini menerima dua input, bilangan bulat yang menentukan jumlah digit dan larik karakter yang menunjukkan nilai yang mungkin. Dalam hal tidak ada bilangan prima, kesalahan ditampilkan.
Cobalah secara Online!
Penjelasan
sumber
Pyth -
1312 byteTest Suite .
sumber
Sage, 62 byte
Mengambil input dari formulir:
f( 4 , {'1','2'} )
sumber
Perl 6 , 43 byte
Berjalan selamanya jika tidak ada solusi.
sumber
05AB1E , 17 byte
Cobalah online!
sumber
05AB1E ,
221918 byte (-1 @Riley)Cobalah online!
sumber
,
pada akhirnya.Perl5, 77 byte
Jalankan seperti ini:
sumber
Ruby,
7776 byteFormat input: angka dan string.
Contoh:
sumber
Perl 6 , 68 byte
Cobalah
Kembali
Nil
jika tidak ada perdana yang dapat ditemukan.Diperluas:
sumber
Python 2 + primefac ,
9185 byteCobalah online
Inputnya seperti
4,{'1','2'}
.sumber
1,{'1'}
bukan input yang valid (karena 1 tidak prima), sehingga Anda dapat melakukan apa pun yang Anda suka di sana.PHP, 82 byte
Mengambil angka dan serangkaian digit dari argumen baris perintah. Jalankan dengan
-nr
.kerusakan
sumber
Java 7,
139141 byte+2 byte dengan angka-angka yang mendukung di atas 32-bit (diubah
int
menjadilong
)Format input: Integer (yaitu
4
) dan String (yaitu"12"
)Penjelasan:
Kode uji:
Coba di sini.
CATATAN: Test case kedua dinonaktifkan karena loop untuk waktu yang sangat lama ..
Keluaran:
sumber