गुणकों के साथ एक सेट को कवर करें


14

आओ हम 1 से अधिक पूर्णांकों का एक सेट लेते हैं और इसे X कहते हैं । हम एस (i) को परिभाषित करेंगे कि मैं जहां i> 1 द्वारा X विभाज्य के सभी सदस्यों का सेट है । इन सबसेट में से सेट के एक समूह का चयन करना चाहेंगे

  • उनका संघ एक्स सेट है

  • X का कोई भी तत्व दो सेटों में नहीं है।

उदाहरण के लिए हम के {3..11}रूप में फिर से इकट्ठा कर सकते हैं

      {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}

कुछ सेट इस तरह से व्यक्त नहीं किए जा सकते हैं। उदाहरण के लिए यदि हम लेते हैं {3..12}, तो 123 और 4 दोनों में से एक है जो हमारे सेट को पारस्परिक रूप से अनन्य होने से रोकता है।

कुछ सेटों को कई तरीकों से व्यक्त किया जा सकता है, उदाहरण के {4..8}तौर पर इसका प्रतिनिधित्व किया जा सकता है

      {4,5,6,7,8}
S(4): {4,      8}
S(5): {  5,     }
S(6): {    6,   }
S(7): {      7, }

लेकिन इसका प्रतिनिधित्व भी किया जा सकता है

      {4,5,6,7,8}
S(2): {4,  6,  8}
S(5): {  5,     }
S(7): {      7, }

कार्य

हमारा लक्ष्य एक प्रोग्राम लिखना है जो एक सेट को इनपुट के रूप में लेगा और सबसे कम संख्या में सबसेट को आउटपुट करेगा जो इसे इस तरह से कवर करता है। यदि कोई नहीं है तो आपको सकारात्मक पूर्णांक (उदाहरण के लिए 0) के अलावा कुछ मूल्य का उत्पादन करना चाहिए ।

यह एक प्रश्न है, इसलिए उत्तर बाइट्स में स्कोर किए जाएंगे, कम बाइट बेहतर होने के साथ।

टेस्ट

{3..11}       -> 5
{4..8}        -> 3
{22,24,26,30} -> 1
{5}           -> 1

यदि कोई नहीं है तो आपको सकारात्मक पूर्णांक के अलावा कुछ मूल्य का उत्पादन करना चाहिए (उदाहरण के लिए 0)। हमारे कार्यक्रम के बजाय अपरिभाषित व्यवहार नहीं कर सकते?
मिस्टर एक्सकोडर

इसके अलावा, आप की तरह एक परीक्षण मामले जोड़ सकते हैं [5..5]? क्या हम जैसी चीजें प्राप्त कर सकते हैं [8..4]?
मिस्टर एक्सकोडर

@ Mr.Xcoder नहीं यह नहीं हो सकता है। कार्यक्रमों को असंभव मामलों की पहचान करने में सक्षम होना चाहिए न कि हमेशा के लिए लूप या उन पर क्रैश।
पोस्ट रॉक गार्फ हंटर

1
" 12दोनों का एक बहु है 3और 4हमारे सेट को परस्पर अनन्य होने से रोक रहा है ": क्यों? मुझे समस्या के बयान में कुछ और नहीं दिखता है, जिसके लिए 12दोनों सबसेट में जाने की आवश्यकता है।
पीटर टेलर

1
इसके अलावा, परीक्षण के मामलों में क्या है? [22,24,26,30]के सभी गुणक हैं 2। क्या आप सुनिश्चित हैं कि इसे और सैंडबॉक्स को हटाना बेहतर नहीं होगा?
पीटर टेलर

जवाबों:


6

पायथन 2 , 167 बाइट्स

lambda a:([q for q in range(a[-1])if a in[sorted(sum(j,[]))for j in combinations([[p for p in a if p%i<1]for i in range(2,1+a[-1])],q)]]+[0])[0]
from itertools import*

इसे ऑनलाइन आज़माएं!

-9 जाकारी करने के लिए धन्यवाद बाइट्स
-4 श्री Xcoder करने के लिए धन्यवाद बाइट्स
-2 के बजाय सेट सूचियों का उपयोग करके बाइट्स
का उपयोग करके -5 बाइट्स a in [...]के बजाय any([a == ...])
-2 श्री Xcoder करने के लिए धन्यवाद बाइट्स
-8 बयान मर्ज करके बाइट्स
-5 श्री Xcoder करने के लिए धन्यवाद बाइट्स
-7 श्री Xcoder / जाकारी करने के लिए धन्यवाद बाइट्स
ठीक बग के +7 बाइट्स
OVS -1 बाइट धन्यवाद

ध्यान दें

यह बड़ी अधिकतम संख्या के लिए बेहद धीमा है क्योंकि यह किसी भी तरह से अनुकूलित नहीं है; यह श्री Xcoder के उपकरण पर 2 मिनट के भीतर नहीं था [22, 24, 26, 30]


5

क्लिंगो , 51 बाइट्स

{s(2..X)}:-x(X).:-x(X),{s(I):X\I=0}!=1.:~s(I).[1,I]

डेमो

$ echo 'x(3..11).' | clingo cover.lp -
clingo version 5.1.0
Reading from cover.lp ...
Solving...
Answer: 1
x(3) x(4) x(5) x(6) x(7) x(8) x(9) x(10) x(11) s(3) s(4) s(5) s(7) s(11)
Optimization: 5
OPTIMUM FOUND

Models       : 1
  Optimum    : yes
Optimization : 5
Calls        : 1
Time         : 0.003s (Solving: 0.00s 1st Model: 0.00s Unsat: 0.00s)
CPU Time     : 0.010s
$ echo 'x(4..8).' | clingo cover.lp -
clingo version 5.1.0
Reading from cover.lp ...
Solving...
Answer: 1
x(4) x(5) x(6) x(7) x(8) s(3) s(4) s(5) s(7)
Optimization: 4
Answer: 2
x(4) x(5) x(6) x(7) x(8) s(2) s(5) s(7)
Optimization: 3
OPTIMUM FOUND

Models       : 2
  Optimum    : yes
Optimization : 3
Calls        : 1
Time         : 0.001s (Solving: 0.00s 1st Model: 0.00s Unsat: 0.00s)
CPU Time     : 0.000s
$ echo 'x(22;24;26;30).' | clingo cover.lp -
clingo version 5.1.0
Reading from cover.lp ...
Solving...
Answer: 1
x(22) x(24) x(26) x(30) s(5) s(8) s(22) s(26)
Optimization: 4
Answer: 2
x(22) x(24) x(26) x(30) s(3) s(22) s(26)
Optimization: 3
Answer: 3
x(22) x(24) x(26) x(30) s(2)
Optimization: 1
OPTIMUM FOUND

Models       : 3
  Optimum    : yes
Optimization : 1
Calls        : 1
Time         : 0.004s (Solving: 0.00s 1st Model: 0.00s Unsat: 0.00s)
CPU Time     : 0.000s
$ echo 'x(5).' | clingo cover.lp -
clingo version 5.1.0
Reading from cover.lp ...
Solving...
Answer: 1
x(5) s(5)
Optimization: 1
OPTIMUM FOUND

Models       : 1
  Optimum    : yes
Optimization : 1
Calls        : 1
Time         : 0.001s (Solving: 0.00s 1st Model: 0.00s Unsat: 0.00s)
CPU Time     : 0.000s

ऐसा लगता है कि समाधान के बिना मामलों का पता नहीं लगता x(3..12).(या मुझे अपडेट करने की आवश्यकता है?)। BTW, आप क्लिंगो के लिए एक अच्छा परिचय का सुझाव दे सकते हैं?
क्रिश्चियन सिवर्स ने

1
@ChristianSievers उफ़, यह एक बग था, जिसे मैंने अब ठीक कर दिया है। इसे UNSATISFIABLEऐसे मामले में आउटपुट देना चाहिए । मैंने ज्यादातर पोटासको गाइड का इस्तेमाल किया ।
एंडर्स कासोर्ग

4

गणितज्ञ, 105 बाइट्स

Length@Select[Subsets@Table[Select[s,Mod[#,i]==0&],{i,2,Max[s=#]}],Sort@Flatten@#==Sort@s&][[1]]~Check~0&


इसे ऑनलाइन
कॉपी करने की कोशिश करें और कोड को ctrl + v के साथ पेस्ट करें, कोड
के अंत में इनपुट पेस्ट करें,
शिफ्ट हिट करें + चलाने के लिए दर्ज करें

इनपुट

[{3,4,5,6,7,8,9,10,11}]

इनपुट
आउटपुट के रूप में एक सूची लेता है 0 अगर कोई नहीं है


का अच्छा उपयोगCheck
कीउ गान

एक बार काम करने के संस्करण के बाद आपने अपना पहला उत्तर क्यों नहीं खोला?
नील

क्योंकि यह एक पूरी तरह से नया तरीका था? क्या यहाँ कोई समस्या है?
J42161217

4

हास्केल, 136 बाइट्स

import Data.List
f l|m<-maximum l=(sort[n|(n,c)<-[(length s,[i|j<-s,i<-[j,2*j..m],elem i l])|s<-subsequences[2..m]],c\\l==l\\c]++[0])!!0

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

f l     =                           -- input set is l
   |m<-maximum l                    -- bind m to maximum of l
       [   |s<-subsequences[2..m]]  -- for all subsequences s of [2..m]
        (length s, )                -- make a pair where the first element is the length of s
            [i|j<-s,i<-[j,2*j..m],elem i l]
                                    -- and the second element all multiples of the numbers of s that are also in l
     [n|(n,c)<-       ,c\\l==l\\c]  -- for all such pairs (n,c), keep the n when c has the same elements as l, i.e. each element exactly once
   sort[ ]++[0]                     -- sort those n and append a 0 (if there's no match, the list of n is empty)
 (     )!!0                         -- pick the first element

के लिए बहुत समय लेते हैं {22,24,26,30}


3

जेली, 38 35 34 33 31 28 25 24 23 20 19 बाइट्स

ṀḊŒPð%þ@⁹¬Sḟ1ðÐḟL€Ḣ

-5 बाइट्स लीक लियुन के लिए धन्यवाद

इसे ऑनलाइन आज़माएं!

मुझे लगता है कि तीसरा परीक्षण मामला काम करता है, लेकिन यह बहुत धीमा है। 0कोई समाधान नहीं होने पर आउटपुट किया जाता है।

स्पष्टीकरण (इस स्पष्टीकरण को गलत हो सकता है):

ṀḊŒPð%þ@⁹¬Sḟ1ðÐḟL€Ḣ     (input z)
ṀḊ                      - 2 .. max(z)
  ŒP                    - powerset
    ð                   - new dyadic chain
     %þ@⁹               - modulo table of z and that
         ¬              - logical not
          S             - sum
           ḟ1           - filter out 1's
             ðÐḟ        - filter out elements that satisfy that condition
                L€      - length of each element
                  Ḣ     - first element


धन्यवाद! और अपने आप को प्रस्तुत न करने के लिए धन्यवाद!
जकार्इ

मुझे अपने मूल के करीब एक अलग 18 बाइट का समाधान मिला है, मैं इस एक को बेहतर तरीके से व्यक्तिगत करता हूं:ṀḊŒPðḍ@þ@⁹Sḟ1ðÐḟḢL
ज़ाचार्इ

वाह ... ṀḊवास्तव में एक बहुत अच्छी चाल है!
ज़ाचरी

वूप्स, यह काम नहीं करता है, और न ही मेरा फिर से लिखना! इसका उत्पादन 0 होना चाहिए, 1 नहीं
जकार्ही

2

जूलिया, 91 बाइट्स

x->(t=[];for i in x z=findfirst(x->x==0,i%(2:maximum(x)));zt?1:push!(t,z) end;length(t))

उम ... क्या आप भाषा के नाम के भीतर एक लिंक शामिल करना भूल गए, या इसे वास्तव में "[जूलिया]" नाम दिया गया है?
जकार्इ

आपने सही कहा, नाम जूलिया है बिना कोष्ठक के
तंज

आप अपने अन्य उत्तरों पर भी इसे ठीक करना चाह सकते हैं!
जचारि

वाह, यह बहुत जवाब था! और यदि आप एक लिंक [Text to display](link to website)
डालना
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.