सबसेट कारक खोजें


14

आइए कल्पना करें कि हमारे पास सकारात्मक पूर्णांकों का एक निश्चित सेट है। इस सेट को डॉट्स की एक रेखा के रूप में दर्शाया जा सकता है, जहां सेट में मौजूद प्रत्येक पूर्णांक एक स्केन्ट्रॉन या पंच कार्ड की तरह भरा होता है । उदाहरण के लिए सेट {1,3,4,6}को इस रूप में दर्शाया जा सकता है:

*.**.*

*हमारे सेट के एक सदस्य का .प्रतिनिधित्व करता है और एक पूर्णांक का प्रतिनिधित्व करता है जो कि वह सेट का सदस्य नहीं है।

इन सेटों में "कारक" हैं। यदि x की प्रतियों से y का निर्माण किया जा सकता है, तो शिथिल x, y का एक कारक है। अधिक सख्ती से कारक की हमारी परिभाषा इस प्रकार है:

  • x, y का एक कारक है और यदि केवल y ही असमान सेटों की संख्या का संघ है , तो सभी एक ऑफसेट के साथ x हैं।

हम कहेंगे *.*एक कारक की *.**.*है क्योंकि यह काफी स्पष्ट रूप की दो प्रतियां से बना है *.*समाप्त करने के लिए डाल अंत।

*.**.*
------
*.*...
...*.*

फैक्टर्स का एंड टू एंड होना जरूरी नहीं है, हम यह भी कहेंगे कि *.*यह एक फैक्टर है*.*.*.*

*.*.*.*
-------
*.*....
....*.*

कारक भी ओवरलैप कर सकते हैं। यह साधन *.*भी एक कारक है****

****
----
*.*.
.*.*

हालाँकि एक संख्या को एक कारक से अधिक बार कवर नहीं किया जा सकता है। उदाहरण के लिए *.*है नहीं का एक पहलू *.*.*


यहाँ एक और अधिक जटिल उदाहरण है:

 *..*.**..***.*.*

यह *..*.*एक कारक के रूप में है। आप देख सकते हैं कि नीचे मैंने तीन उदाहरण प्रस्तुत किए हैं *..*.*

*..*.**..***.*.*
----------------
*..*.*..........
......*..*.*....
..........*..*.*

कार्य

किसी भी उचित प्रतिनिधित्व आउटपुट द्वारा सेट को देखते हुए सभी सेट जो इनपुट के कारक हैं।

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

यह एक प्रश्न है, इसलिए आपको इसे कम से कम बाइट्स में करने का लक्ष्य रखना चाहिए।

परीक्षण के मामलों

ये परीक्षण मामले हाथ से किए गए थे, एक गलती हो सकती है या दो बड़े लोगों पर हो सकती है

*                -> *
*.*.*            -> *, *.*.*
*.*.*.*          -> *, *.*, *...*, *.*.*.*
******           -> *, **, *..*, ***, *.*.*, ******
*..*.**..***.*.* -> *, *..*.*, *.....*...*, *..*.**..***.*.*
*...*****.**.**  -> *, *...**.**, *.....*, *...*****.**.**

यदि हम सेट को संख्याओं की सूची के रूप में लेते हैं (उदाहरण के [1,3,5,7]लिए *.*.*.*) क्या हम मान सकते हैं कि यह क्रमबद्ध है?
मार्टिन एंडर

1
क्या यह उन बहुपदों के विभाजक खोजने के बराबर है जिनके गुणांक 0 और 1 तक सीमित हैं?
xnor

1
@xnor मुझे यकीन नहीं है। यदि *.*.*= x+x^2+x^4, तो 1+x+x^2= ***एक भाजक होगा, है ना? x+x^2+x^4 = (1-x+x^2)(1+x+x^2)
mbomb007

1
@JonathanAllan आपके उदाहरणों के लिए, *एक ऐसे कारक के रूप में सूचीबद्ध किया गया है जो *.या के रूप में एक ही सबसेट का प्रतिनिधित्व करता है *..
मार्टिन एंडर

1
@JonathanAllan यह आउटपुट के सभी सेटों को मान्य सेटों के सभी ASCII अभ्यावेदन को आउटपुट नहीं कहता है।
मार्टिन एंडर

जवाबों:


3

मैथेमेटिका, 71 68 बाइट्स

#&@@@Cases[(s=Subsets)@s@#,x_/;Sort[Join@@x]==#&&Equal@@(#&@@@x-x)]&

इनपुट {1,3,5,7}(सॉर्ट किए गए) और आउटपुट के रूप में {{1, 3, 5, 7}, {1, 3}, {1, 5}, {1}}। फ़ंक्शन संदेशों का एक गुच्छा फेंक देगा।

यह O (2 2 Nope ) है (जहां N इनपुट की लंबाई है और o = p = e = 1 ...)। यह सबसेट्स के सभी सबसेट को जेनरेट करता है, फिर उन इनपुट को चुनता है जो इनपुट सेंड में तब जुड़ते हैं जब आपस में जुड़ते हैं (यह सुनिश्चित करते हैं कि हम केवल विभाजन पर विचार कर रहे हैं) और जहां सभी तत्व समान हैं यदि हम प्रत्येक सब्सेट के सबसे छोटे मूल्य को घटाते हैं)।


2

जेली , 12 बाइट्स

;÷@DỊȦ
ÆDçÐf

इनपुट और आउटपुट उपयोग 1और 0के बजाय *और .

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

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

ÆDçÐf   Main link. Argument: n (integer with decimal digits 1 and 0)

ÆD      Compute all divisors of n.
  çÐf   Filter; call the helper link with left argument d and right argument n for
        all divisors d of n. Return the array of d's for which the helper link
        returns a truthy value.


;÷@DỊȦ  Helper link. Left argument: d. Right argument: n

 ÷@     Divide n by d.
;       Concatenate, yielding [d, n÷d].
   D    Decimal; convert both integers in the pair to base 10.
    Ị   Insignificant; map 1 and 0 to 1, all other positive integers to 0.
     Ȧ  All; return 1 iff the result contains no zeroes.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.