मेरी सरणी को इसके बराबर होना चाहिए, लेकिन यह नहीं है!


21

पूर्णांक की एक सरणी को देखते हुए aजिसमें एन पूर्णांक और एक पूर्णांक शामिल हैं x; aके aबराबर राशि बनाने के लिए तत्वों की सबसे कम राशि निकालें x। यदि कोई संयोजन नहीं बन aसकता है x, तो मिथ्या मान लौटाएं।

जैसा कि एक टिप्पणी में कहा गया है कि यह एक्स के योग के साथ अधिकतम सेट है , मेरे कम गणित मस्तिष्क को बहाना। मैं कॉलेज के बाद से बहुत सारी शर्तें भूल गया।


उदाहरण (सत्य):

f([1,2,3,4,5,6,7,8,9,10], 10) = [1,2,3,4]

f([2,2,2,2,2,2,2,2,2], 10) = [2,2,2,2,2]

f([2,2,2,2,-2,-2,-2,-4,-2], -8) = [2,2,-2,-2,-2,-4,-2]

f([-2,-4,-2], -6) = [-4,-2] OR [-2,-4]

f([2,2,2,4,2,-2,-2,-2,-4,-2], 0) = [2,2,2,4,2,-2,-2,-2,-4,-2] (अपरिवर्तित)

f([], 0) = [] (अपरिवर्तित शून्य-राशि प्रकरण)


उदाहरण (मिथ्या, किसी भी सुसंगत गैर-सरणी मान):

केस बनाना असंभव: f([-2,4,6,-8], 3) = falsy (E.G. -1)

शून्य सम प्रकरण: f([], non-zero number) = falsy (E.G. -1)

  • नोट: किसी भी मूल्य की तरह [-1]मिथ्या के लिए मान्य नहीं किया जा सकता है, क्योंकि यह एक संभावित सत्य आउटपुट है।

नियम:

  • इनपुट को सरणी के रूप में, या तर्कों की एक सूची के रूप में लिया जा सकता है, अंतिम या पहला x
  • आउटपुट पूर्णांक की कोई सीमांकित सूची हो सकती है। ईजी 1\n2\n3\nया [1,2,3]
  • किसी भी मूल्य का उपयोग एक गलत संकेतक के रूप में किया जा सकता है, पूर्णांक के एक सरणी के अलावा अन्य।
  • आपका कोड अंतिम सरणी के आकार को अधिकतम करना होगा, आदेश कोई फर्क नहीं पड़ता।
    • ईजी f([3,2,3],5)दोनों के लिए [2,3]और [3,2]समान रूप से मान्य हैं।
    • ईजी आपके लिए f([1,1,2],2)केवल [1,1]उतना ही वापस आ सकता [2]है जितना कम है।
  • दोनों का योग aऔर के मान से xकम 2^32-1और अधिक से अधिक होगा -2^32-1
  • यह , सबसे कम बाइट-काउंट जीत है।
  • यदि एक ही आकार के कई सब-वे हैं जो मान्य हैं, तो यह उन सभी को आउटपुट करने के लिए स्वीकार्य नहीं है। आपको किसी एक को चुनना होगा और उस एक को आउटपुट करना होगा।

मुझे बताएं कि क्या यह पोस्ट किया गया है, मुझे नहीं मिला।

पोस्ट मुझे इस तरह मिलीं : संबंधित लेकिन बंद , ...


1
मुझे लगता है कि "गलत, किसी भी सुसंगत गैर-सरणी मूल्य" में त्रुटि शामिल है?
जोनाथन एलन

" किसी भी मूल्य को एक गलत संकेतक के रूप में इस्तेमाल किया जा सकता है, जो पूर्णांक के एक सरणी के अलावा अन्य है। " क्या इसमें एक खाली सरणी शामिल है?
झबरा

@shaggy [] एक संभावित सत्य मूल्य का संकेत है, है ना? अनुमति है कि मेटा नियम अलग सत्य और झूठे से अधिक महत्वपूर्ण है?
मैजिक ऑक्टोपस Urn

@ जोहानथनअल्लन अगर उस त्रुटि को एक सत्य परिदृश्य में नहीं उठाया जा सकता है, तो मुझे लगता है। लेकिन मुझे लगता है कि यह जानबूझकर युक्ति को आगे बढ़ाने का प्रयास है। अगर मैं मूल्य को वापस करने के लिए संकेतक से शब्द बदल देता हूं तो क्या यह ठीक है?
मैजिक ऑक्टोपस Urn

मेरा मानना ​​है कि लगातार बाहर निकलने वाले मूल्य मेटा के अनुसार रिटर्न वैल्यू के रूप में गिने जाते हैं?
मैजिक ऑक्टोपस Urn

जवाबों:


7

ब्रेकीलॉग , 8 बाइट्स

h⊇.+~t?∧

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

मासिक ब्रैकलॉग उत्तर। false.यदि संभव न हो तो लौटता है।

व्याख्या

h⊇.           The output is a subset of the head of the input
  .+~t?       The sum of the elements of the output must equal the tail of the input
       ∧      (Avoid implicit unification between the output and the input)

6

अजगर 2 , 108 104 बाइट्स

lambda a,n:[x for l in range(len(a)+1)for x in combinations(a,l)if sum(x)==n][-1]
from itertools import*

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

-4 बाइट्स, जोनाथन एलन के लिए धन्यवाद


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

def f(a,n):
 q=[a]
 while q:
  x=q.pop(0);q+=[x[:i]+x[i+1:]for i in range(len(x))]
  if sum(x)==n:return x

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

-2 बाइट्स, जनाथन फ्रीच को धन्यवाद


1
आप उपयोग कर सकते हैं range(-len(a),1)और -l2 बचा सकते हैं , लेकिन lambda a,n:[x for l in range(len(a)+1)for x in combinations(a,l)if sum(x)==n][-1]4 बचाता है।
जोनाथन एलन

@JonathanAllan धन्यवाद :)
TFeld


@JonathanFrech धन्यवाद, मैं कल थक गया होगा;)
12



4

पायथ , 8 बाइट्स

  • 8-बटर ( इसे आज़माएं! ) - आउटपुट केवल एक संभव समाधान है। अनचाहे इनपुट के लिए, यह STDOUT के लिए कुछ भी प्रिंट नहीं करता है, जो एक खाली स्ट्रिंग है, जो कि तकनीकी रूप से पाइथ में गलत है, लेकिन STDERR को लिखता है। यह सुझाव देने के लिए FryAmTheEggman का धन्यवाद (STDERR की अनदेखी और केवल STDOUT आउटपुट पर ध्यान केंद्रित), इस प्रकार 1 बाइट की बचत होती है।

    efqz`sTy    
    
  • 9-बटर ( इसे आज़माएं! ) - केवल एक ही संभव समाधान को आउटपुट करता है, एक एकल सूची में लिपटे जैसा कि डिफ़ॉल्ट रूप से अनुमत है (जैसे ([1...10], 10) -> [[1,2,3,4]]; ([], 0) -> [[]])। नायाब इनपुट के लिए, यह वापस लौटता है [], जो पाइथ में गलत है।

    >1fqz`sTy
    
  • 10-byter ( यह कोशिश करो! ) - एक स्पष्ट आउटपुट के लिए, सिंगलटन-सूची नियम का उपयोग और उपयोग किए बिना 0बजाय []एक falsy मूल्य के रूप में।

    e+0fqz`sTy
    

व्याख्या

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

  • 8-byter बस का उपयोग करता है अंत में निर्मित, जो त्रुटि फेंकता है, लेकिन STDERR हमारी साइट नियमों के अनुसार, STDOUT करने के लिए उत्पादन में रिक्त स्ट्रिंग है, जो falsy है किया जा रहा है पर ध्यान नहीं दिया जा सकता है।
  • 9-byter पिछले तत्व लेता है, लेकिन बराबर अजगर कोड का उपयोग कर lst[-1:]के स्थान पर lst[-1]समाधान के अयोग्य आदानों के लिए फेंके जाने से बचने के लिए त्रुटियों के लिए।
  • 10-byter पहले जोड़ता एक 0 फ़िल्टर्ड उप-संग्रह की सूची में है, तो उस संग्रह (पिछले तत्व) के अंत लेता है। यदि इनपुट सॉल्व नहीं होते हैं, तो इसके बजाय स्वाभाविक रूप से 0 का उपयोग किया जाता है।

[]झूठा है साफ। अजगर ऐसा क्यों करता है []?
मैजिक ऑक्टोपस Urn

@MagicOctopusUrn पायथ वास्तव में पायथन से विरासत में मिला है : इसे ऑनलाइन आज़माएं
श्री एक्सकोडर

@FryAmTheEggman एक खाली सूची परीक्षण के मामले में एक सत्य उत्पादन नहीं होगा f([], 0) = []?
सोक

@FryAmTheEggman आपके सुझाव के लिए धन्यवाद! मैंने आवश्यक परिवर्तन किए हैं :)
श्री एक्सकोडर


3

पर्ल 6 , 38 37 बाइट्स

{*.combinations.grep(*.sum==$_).tail}

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

करी समारोह।


रुको, क्या यह ;भी आवश्यक है?
जो किंग

@JoKing "विकृत दोहरे बंद" त्रुटि से बचने के लिए पहले के पुनरावृत्ति में यह आवश्यक था। लेकिन किसी कारण से अब इसे छोड़ा जा सकता है। (मुझे लगता है कि मेरे $^xसाथ बदलने के बाद $_।)
nwellnhof

3

ब्रेकीलॉग , 4 बाइट्स

⟨⊇+⟩

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

फैटलिज़ के बराबर के बारे में h⊇.+~t?∧, बहुत कम को छोड़कर , विधेय रचना की विशेषता के लिए धन्यवाद, जो संदर्भ के संपादित इतिहास के अनुसार 8 जनवरी तक प्रगति में काम था, दो महीने से अधिक समय तक उत्तर को स्थगित करना। ⟨⊇+⟩एक सैंडविच है , जिसका विस्तार है {[I,J]∧I⊇.+J∧}, जहां ब्रेसिज़ इस मामले में अप्रासंगिक हैं क्योंकि सैंडविच किसी भी तरह से अपनी लाइन पर है।

                The input
[I,J]           is a list of two elements I and J.
        .       The output,
         +J     which sums to J
           ∧    (which we don't unify with the output),
      I⊇        is a sublist of I
     ∧          (which we don't unify with [I,J]).

फ़ेटलाइज़ के उत्तर का एक बहुत कम नाटकीय रूपांतर, जो एक ही वैरिएबल के साथ एक ही विधेय का उपयोग करता है, लेकिन एक बाइट को अलग तरीके से व्यवस्थित करने से छोटा होता है:

ब्रेकीलॉग , 7 बाइट्स

h⊇.&t~+

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

           The input
h          's first element
 ⊇         is a superlist of
  .        the output,
   &       and the input
    t      's last item
     ~+    is the sum of the elements of
           the output.

(इसके अलावा, यदि कोई व्यक्ति कुछ अजीब देखना चाहता है, तो परीक्षण के मामलों में किसी भी अंडरस्कोर को हाइफ़न में बदलें)


1
नवंबर 2018 में @ ais523 द्वारा सैंडविच लागू किया गया था लेकिन जनवरी 2019 की शुरुआत में केवल ब्राचिग्लॉग में खींच लिया गया था।
घातक

1
बेशक, इस इतिहास-खुदाई के मामलों में से कोई भी, क्योंकि वर्षों से चुनौती को स्थगित करने वाली भाषाओं को अनुमति दी गई है।
शाम


2

क्लीन , 89 बाइट्स

import StdEnv,Data.List,Data.Func
$n=find((==)n o sum)o sortBy(on(>)length)o subsequences

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

तत्वों के उपयुक्त संयोजन नहीं होने पर, और अन्यथा , $ :: Int -> [Int] -> (Maybe [Int])लौटने वाले फ़ंक्शन को परिभाषित करता है ।Nothing(Just [elements...])


2

जावास्क्रिप्ट (ईएस 6), 108 बाइट्स

के रूप में इनपुट लेता है (array)(n)। या तो एक सरणी देता है या false

a=>n=>a.reduce((a,x)=>[...a,...a.map(y=>1/r[(y=[...y]).push(x)]||eval(y.join`+`)-n?y:r=y)],[[]],r=!n&&[])&&r

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


2

यह शांत और छोटे से शुरू हुआ, लेकिन किनारे के मामले मुझे मिले। जो भी हो, मुझे इस काम में गर्व है।

पायथन 3 , 169 161 154 बाइट्स

from itertools import*
def f(a,x):
	if sum(a)==x:return a
	try:return[c for i in range(len(a))for c in combinations(a,i)if sum(c)==x][-1]
	except:return 0

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


याद रखें कि यह [कोड-गोल्फ] है इसलिए आपको अपनी बाइट गिनती को यथासंभव छोटा बनाने की कोशिश करनी चाहिए! आपके पास एक अग्रणी न्यूलाइन और कुछ अन्य तुच्छ व्हाट्सएप गोल्फ हैं, और मैं शर्त लगाता हूं कि जो अजगर जानता है वह इसे और नीचे कर सकता है।
ग्यूसेप

@Giuseppe मुझे प्रमुख व्हाट्सएप की याद दिलाने के लिए धन्यवाद। मैंने इसके कुछ हिस्सों को समेकित करने की कोशिश में कुछ समय बिताया, लेकिन इस बीच इसे पोस्ट करने का फैसला किया अगर कोई अन्य संपादन का सुझाव दे सकता है।
गीगाफ्लॉप

एक समस्या नहीं है! यह 5 साल की तरह है क्योंकि मैंने कोई पायथन किया है, लेकिन range(x)उत्पन्न नहीं करता है (0...x-1)? तो अपने range(len(a))आप को अपरिवर्तित सरणी छोड़ने की संभावना नहीं दे रहा है?
ग्यूसेप

@Giuseppe यूरेका, कि यह किया। मैं जिस नई सामग्री के साथ काम कर रहा था, उस पर बहुत अधिक ध्यान केंद्रित कर रहा हूं।
20

if a==[] and x==0उपयोग के बजाय if sum(a)==x। तो फिर तुम भी निकाल सकते हैं +1से range
वेदांत कंदोई

2

आर , 100 80 बाइट्स

function(a,x){i[sum(a|1):0,j[combn(a,i,,F),if(sum(j)==x)return(j)]]
F}
`[`=`for`

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

20 बाइट्स digEmAll के लिए धन्यवाद बचा लिया

FALSEअसंभव मानदंडों के लिए रिटर्न ।



@digEmAll मुझे निश्चित रूप से खुशी है कि मुझे आपके 98 बाइट उत्तर में संपादित करने का मौका नहीं मिला :-)
Giuseppe


1

अटैची , 28 बाइट्स

${(y&`=@Sum\Radiations@x)@0}

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

वैकल्पिक

34 बाइट्स :f[x,y]:=({y=Sum@_}\Radiations@x)@0

30 बाइट्स :First@${y&`=@Sum\Radiations@x}

29 बाइट्स :{(_&`=@Sum\_2)@0}#/Radiations

29 बाइट्स :${({y=Sum@_}\Radiations@x)@0}

29 बाइट्स :`@&0@${y&`=@Sum\Radiations@x}

29 बाइट्स :{_}@@${y&`=@Sum\Radiations@x}

व्याख्या

${(y&`=@Sum\Radiations@x)@0}
${                         }    function receiving two arguments, x and y
            Radiations@x        calculate the radiations of x
                                (simulates removing all possible subslices of x)
           \                    keep those radiations
        Sum                     ...whose sum...
     `=@                        ...equals...
   y&                           ...y
  (                     )@0     select the first one (always the longest)

0

एपीएल (एनएआरएस), 65 चार्ट, 130 बाइट्स

{m←⍺=+/¨v←1↓{0=⍴⍵:⊂⍬⋄s,(⊂1⌷⍵),¨s←∇1↓⍵}⍵⋄0=↑⍴b←m/v:⍬⋄b⊃⍨n⍳⌈/n←⍴¨b}

↓ का उपयोग किया जाता है क्योंकि सेट के सेट का पहला तत्व एक शून्य सेट (यहां e Zilde) होगा, जो कि समाप्त करना चाहता है क्योंकि ऐसा लगता है कि + / the शून्य है ...

खोजने या त्रुटि के लिए, यह ⍬ या प्रिंट पाठ में वापस नहीं आएगा:

  o←⎕fmt
  o ⍬
┌0─┐
│ 0│
└~─┘

परीक्षा:

  z←{m←⍺=+/¨v←1↓{0=⍴⍵:⊂⍬⋄s,(⊂1⌷⍵),¨s←∇1↓⍵}⍵⋄0=↑⍴b←m/v:⍬⋄b⊃⍨n⍳⌈/n←⍴¨b}

  o 1 z ,1
┌1─┐
│ 1│
└~─┘
  o 2 z ,1
┌0─┐
│ 0│
└~─┘
  o 10 z 1 2 3 4 5 6 7 8 9 10
┌4───────┐
│ 1 2 3 4│
└~───────┘
  o 10 z 2,2,2,2,2,2,2,2,2
┌5─────────┐
│ 2 2 2 2 2│
└~─────────┘
  o ¯8 z 2,2,2,2,¯2,¯2,¯2,¯4,¯2
┌7──────────────────┐
│ 2 2 ¯2 ¯2 ¯2 ¯4 ¯2│
└~──────────────────┘
  o ¯6 z ¯2,¯4,¯2
┌2─────┐
│ ¯4 ¯2│
└~─────┘
  o 0 z 2,2,2,4,2,¯2,¯2,¯2,¯4,¯2
┌10───────────────────────┐
│ 2 2 2 4 2 ¯2 ¯2 ¯2 ¯4 ¯2│
└~────────────────────────┘
  o 10 z 1 2 3 4
┌4───────┐
│ 1 2 3 4│
└~───────┘
  o 10 z 1 2 3
┌0─┐
│ 0│
└~─┘
  o 0 z ⍬
┌0─┐
│ 0│
└~─┘
  o +/⍬  
0
~
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.