Mari kita himpunan bilangan bulat lebih besar dari 1 dan menyebutnya X . Kami akan mendefinisikan S (i) sebagai himpunan semua anggota X yang dapat dibagi oleh i di mana i> 1 . Ingin memilih dari himpunan bagian ini sekelompok set sedemikian rupa
Persatuan mereka adalah himpunan X
Tidak ada elemen X dalam dua set.
Sebagai contoh, kita dapat menyusun kembali {3..11}
sebagai
{3,4,5,6,7,8,9,10,11}
S(3): {3, 6, 9, }
S(4): { 4, 8, }
S(5): { 5, 10, }
S(7): { 7, }
S(11):{ 11}
Beberapa set tidak dapat diekspresikan dengan cara ini. Sebagai contoh jika kita ambil {3..12}
, 12
adalah kelipatan dari 3 dan 4 yang mencegah set kita menjadi saling eksklusif.
Beberapa set dapat diekspresikan dalam berbagai cara, misalnya {4..8}
dapat direpresentasikan sebagai
{4,5,6,7,8}
S(4): {4, 8}
S(5): { 5, }
S(6): { 6, }
S(7): { 7, }
tetapi juga bisa direpresentasikan sebagai
{4,5,6,7,8}
S(2): {4, 6, 8}
S(5): { 5, }
S(7): { 7, }
Tugas
Tujuan kami adalah untuk menulis sebuah program yang akan menetapkan sebagai input dan menghasilkan jumlah himpunan bagian terkecil yang menutupinya dengan cara ini. Jika tidak ada, Anda harus menampilkan beberapa nilai selain bilangan bulat positif (misalnya 0
).
Ini adalah pertanyaan kode-golf sehingga jawaban akan dinilai dalam byte, dengan lebih sedikit byte yang lebih baik.
Tes
{3..11} -> 5
{4..8} -> 3
{22,24,26,30} -> 1
{5} -> 1
sumber
[5..5]
? Bisakah kita menerima hal-hal seperti[8..4]
?12
Adalah kelipatan dari keduanya3
dan4
mencegah perangkat kami menjadi saling eksklusif ": mengapa? Saya tidak melihat hal lain dalam pernyataan masalah yang mengharuskan12
masuk ke kedua himpunan bagian.[22,24,26,30]
semua kelipatan2
. Apakah Anda yakin tidak akan lebih baik untuk menghapus ini dan memasukkannya ke kotak pasir?Jawaban:
Python 2 , 167 byte
Cobalah online!
-9 byte berkat Zacharý
-4 byte terima kasih kepada Tn. Xcoder
-2 byte dengan menggunakan daftar alih-alih set
-5 byte dengan menggunakan
a in [...]
daripadaany([a == ...])
.-2 byte terima kasih kepada Tn. Xcoder
-8 byte dengan menggabungkan pernyataan
-5 byte terima kasih kepada Tn. Xcoder
-7 byte terima kasih kepada Tn. Xcoder / Zacharý
+7 byte untuk memperbaiki bug
-1 byte berkat ovs
catatan
Ini sangat lambat untuk angka maksimum yang lebih besar karena sama sekali tidak dioptimalkan; itu tidak dalam 2 menit pada perangkat Mr. Xcoder untuk
[22, 24, 26, 30]
.sumber
Clingo , 51 byte
Demo
sumber
x(3..12).
(atau apakah saya perlu memperbarui?). BTW, bisakah Anda menyarankan pengenalan yang bagus untuk kloning?UNSATISFIABLE
dalam kasus seperti itu. Saya kebanyakan menggunakan panduan Potassco .Mathematica, 105 byte
Cobalah online
copy dan paste kode dengan ctrl + v,
rekatkan input di akhir kode,
tekan shift + enter untuk menjalankan
memasukkan
mengambil daftar sebagai input
keluaran 0 jika tidak ada
sumber
Check
Haskell, 136 byte
Cobalah online!
Bagaimana itu bekerja
Luangkan banyak waktu untuk
{22,24,26,30}
.sumber
Jelly,
3835343331282524232019 byte-5 byte berkat Leaky Nun
Cobalah online!
Saya pikir test case ketiga berfungsi, tetapi sangat lambat.
0
dikeluarkan ketika tidak ada solusi.Penjelasan (mungkin penjelasan ini salah):
sumber
ṀḊŒPðḍ@þ@⁹Sḟ1ðÐḟḢL
ṀḊ
sebenarnya adalah trik yang sangat keren!Julia, 91 byte
sumber
[Text to display](link to website)