एक सीमा से अधिक उत्पाद


39

आपका कार्य सरल है: दो पूर्णांक aऔर b, आउटपुट ∏[a,b]; वह है, उत्पाद के बीच की सीमा aऔर b। आप समय लग सकता है aऔर bकिसी भी उचित प्रारूप में, कि एक समारोह, एक सूची इनपुट, STDIN, वगैरह के लिए तर्क हो या नहीं। आप किसी भी उचित प्रारूप में आउटपुट कर सकते हैं, जैसे कि रिटर्न वैल्यू (फ़ंक्शंस के लिए) या STDOUT। aहमेशा से कम होगी b

ध्यान दें कि अंत अनन्य या समावेशी हो सकता है b। मैं मीन मेख निकालने वाला नहीं हूं। ^ _ ^

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

[a,b) => result
[2,5) => 24
[5,10) => 15120
[-4,3) => 0
[0,3) => 0
[-4,0) => 24

[a,b] => result
[2,5] => 120
[5,10] => 151200
[-4,3] => 0
[0,3] => 0
[-4,-1] => 24

यह एक , इसलिए बाइट्स में सबसे छोटा कार्यक्रम जीत जाता है।


लीडरबोर्ड

इस पोस्ट के निचले हिस्से में स्टैक स्निपेट उत्तर से सूची बनाता है) क) प्रति भाषा में सबसे छोटे समाधान की सूची के रूप में और बी) एक समग्र लीडरबोर्ड के रूप में।

यह सुनिश्चित करने के लिए कि आपका उत्तर दिख रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:

## Language Name, N bytes

Nआपके प्रस्तुत करने का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:

## Ruby, <s>104</s> <s>101</s> 96 bytes

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

## Perl, 43 + 2 (-p flag) = 45 bytes

आप भाषा के नाम को एक लिंक भी बना सकते हैं जो बाद में स्निपेट में दिखाई देगा:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


1
इसका जवाब मैं कल TI-BASIC में दे रहा हूं।
SuperJedi224

@ SuperJedi224 सौभाग्य;)
कॉनर ओ'ब्रायन

क्या इनपुट के रूप में लिया जा सकता है b, a?
फ्लिपकार्ट

@FlipTack हां आप कर सकते हैं
कॉनर ओ'ब्रायन

जवाबों:


36

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

rP

कमांड लाइन तर्क के रूप में दो नंबर लेता है। इसे ऑनलाइन आज़माएं।

ध्यान दें कि यह समावेशी रेंज है। एक बाइट (3 बाइट) की लागत के लिए, हम इसे विशिष्ट बना सकते हैं:

’rP

इसे ऑनलाइन आज़माएं। ध्यान दें कि b aइस संस्करण के लिए तर्क दिए जाने चाहिए ।

व्याख्या

सम्मिलित

a rP b
  r   dyadic atom, creates inclusive range between a and b
   P  computes product of the list

अनन्य

b ’rP a
  ’   decrement b (by default, monadic atoms in dyadic chains operate on the left argument)
   r  range
    P product 

10
मुझे संदेह है कि यह बहुत अच्छा है ...
kirbyfan64sos

14
@ kirbyfan64sos आप जेली?
हारून

30

अर्नोल्ड , 522 511 बाइट्स

कोडगुल्फ़ पर पहली पोस्ट!

मुझे ऐसा करने में मज़ा आया। अनन्य सीमा।

LISTEN TO ME VERY CAREFULLY f
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE a
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE b
GIVE THESE PEOPLE AIR
HEY CHRISTMAS TREE r
YOU SET US UP 1
HEY CHRISTMAS TREE l
YOU SET US UP 1
STICK AROUND l
GET TO THE CHOPPER r
HERE IS MY INVITATION r
YOU'RE FIRED a
ENOUGH TALK
GET TO THE CHOPPER a
HERE IS MY INVITATION a
GET UP 1
ENOUGH TALK
GET TO THE CHOPPER l
HERE IS MY INVITATION b
LET OFF SOME STEAM BENNET a
ENOUGH TALK
CHILL
I'LL BE BACK r
HASTA LA VISTA, BABY

स्पष्टीकरण (धन्यवाद बिजन):

DeclareMethod f
        MethodArguments a
        MethodArguments b
        NonVoidMethod
        DeclareInt r
        SetInitialValue 1
        DeclareInt l
        SetInitialValue 1
        WHILE l
                AssignVariable r
                        SetValue r
                        MultiplicationOperator a
                EndAssignVariable
                AssignVariable a
                        SetValue a
                        + 1
                EndAssignVariable
                AssignVariable l
                        SetValue b
                        > a
                EndAssignVariable
        EndWhile
        Return r
EndMethodDeclaration

हाहाहा ... मैं हँस रहा हूँ
rpax

लेकिन एक स्पष्टीकरण बहुत अच्छा होगा
rpax

यहाँ यह बदला है और का उपयोग कर दांतेदार है इस संदर्भ के रूप में
बिजन

आप किस दुभाषिया का उपयोग कर रहे हैं?
lirtosiast

आधिकारिक एक । आप @NO PROBLEMO और 1 (0 नहीं;) के बारे में सही हैं
Zycho

18

पायथन, 30 बाइट्स

f=lambda a,b:a>b or a*f(a+1,b)

समावेशी सीमा। बार-बार बाएं समापन बिंदु को गुणा और बढ़ाता है, जब तक कि यह सही समापन बिंदु से अधिक नहीं होता है, इस स्थिति में यह 1 का खाली उत्पाद है (सत्य के रूप में)।


13

Minecraft 15w35a +, कार्यक्रम का आकार 456 कुल (नीचे देखें)

यहाँ छवि विवरण दर्ज करें

यह गणना करता है PI [a,b)। इन दोनों आदेशों का उपयोग करके इनपुट दिया गया है: /scoreboard players set A A {num}और /scoreboard players set B A {num}/scoreboard objectives add A dummyइनपुट से पहले उपयोग करना याद रखें ।

का उपयोग कर स्कोर किया गया {program size} + ( 2 * {input command} ) + {scoreboard command} = 356 + ( 2 * 33 ) + 34 = 456:।

यह कोड निम्नलिखित psuedocode से मेल खाता है:

R = 1
loop:
  R *= A
  A += 1
  if A == B:
    print R
    end program

यहाँ दुनिया डाउनलोड करें


कार्यक्रम का आकार इस स्कोरिंग विधि द्वारा गिना जाता है ।
गेमक्रॉप्स

दमयन्ती, इससे पहले कि तुम मेरे पास पहुँचते। : I
Addison Crump

आपको स्नैपशॉट संस्करण, 15w46aया कुछ और निर्दिष्ट करने की आवश्यकता है।
Addison Crump

Minecraft: D LoL, गोल्फिंग इन Minecraft: D
username.ak

12

टीआई-बेसिक, 9 बाइट्स

Input A
prod(randIntNoRep(A,Ans

एक नंबर से Ans और दूसरा एक प्रॉम्प्ट से लेता है ।

इसके अलावा एक सूची के रूप में इनपुट लेते हुए 9 बाइट्स Ans:

prod(randIntNoRep(min(Ans),max(Ans

1
मुझे अपने बारे में जानने में थोड़ा समय लगा, इसलिए मैं इसे यहां पोस्ट करने जा रहा हूं: TI-BASIC में प्रत्येक फ़ंक्शन एक बाइट है।
निक हार्टले

3
@QPaysTaxes उनमें से बहुत सारे हैं, लेकिन उनमें से सभी नहीं। %दो बाइट्स है।
mbomb007 21

12

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

lambda l:reduce(int.__mul__,range(*l))

बहुत स्पष्ट गुमनाम समारोह का जवाब।

संपादित करें: मुझे पता नहीं था कि कुछ सुविधाओं के साथ 6 बाइट बचाने के लिए xnor के लिए धन्यवाद।


1
आप बिल्ट-इन का उपयोग कर सकते हैं int.__mul__, जो आपके लैम्ब्डा के स्थान पर काम करता है। दो नंबरों x,yको भी अनपैक किया जा सकता है *l
xnor

36
पार किया 44 अभी भी 44 की तरह दिखता है।
एक स्पेगेटो

10

अजगर, 5 बाइट्स

*FrQE

पायथ में उत्पाद नहीं है, इसलिए हम सीमा पर * कम करते हैं।

अनन्य श्रेणी का उपयोग करता है।


4
*FrFQसमतुल्य है, लेकिन अलग-अलग इनपुट के साथ, बस मज़े के लिए :)
FryAmTheEggman


8

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

1##&@@Range@##&

एक छोटा समाधान जो केवल गैर-नकारात्मक पूर्णांक के लिए काम करता है:

#2!/(#-1)!&

3
गैर-नकारात्मक पूर्णांकों के लिए भी छोटा:#2!#/#!&
एंडर्स कासोर्ग

8

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

(a,b)=>eval("for(c=a;a<b;)c*=++a")

कभी-कभी सबसे सरल उत्तर सबसे अच्छा होता है! बस एक forपाश भीतर eval। समावेशी सीमा।


वाह। यह प्रभावशाली है!
कॉनर ओ'ब्रायन

अरे यार, मैंने इस सटीक उपाय के बारे में सोचा, जबकि मेरा अभी गोल्फ का प्रयास कर रहा है ... +1
ETHproductions

1
यह एक 25 अक्षरों से भी छोटा है: f=(a,b)=>a<b?a*f(a+1,b):1
मथायस बर्ट्चर


7

जाप , 7 बाइट्स

इस तरह की आसान चुनौतियां हमेशा मजेदार होती हैं। :)

UoV r*1

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

व्याख्या

UoV r*1  // Implicit: U = first input, V = second input
UoV      // Generate range [U,V).
    r*1  // Reduce by multiplication, starting at 1.

वाह, यह अब तक के अन्य उत्तरों की तुलना में दयनीय लगता है। मुझे जाप पर कुछ और काम करने की जरूरत है ...


स्पष्टीकरण? : 3
कॉनर ओ'ब्रायन

@ C @O'Bʀɪᴇɴ किया गया :)
ETHproductions

2
वूट, 5K प्रतिनिधि! : D
ETHproductions

6

हास्केल, 19 17 बाइट्स

a#b=product[a..b]

प्रयोग उदाहरण: 2#5-> 120


आपको बी शामिल करने के लिए चुनने की अनुमति है।
xnor

@ एक्सनोर: अप्स, को नजरअंदाज करना चाहिए था। धन्यवाद!
नीम

मुझे यकीन नहीं है, लेकिन मुझे लगता है कि पीपीसीजी अभिव्यक्ति के रूप में दिए गए उत्तरों की अनुमति देता है।
गर्वित हैकेलर

@proudhaskeller: डिफ़ॉल्ट पूर्ण कार्यक्रमों और कार्यों की अनुमति देने के लिए है। कार्य विवरण में स्निपेट्स, अभिव्यक्तियों आदि को स्पष्ट रूप से अनुमति दी जानी चाहिए।
नीमी

5

प्रोलॉग, 45 बाइट्स

कोड:

p(A,B,C):-A=B,C=A;D is A+1,p(D,B,E),C is A*E.

व्याख्या की:

p(A,B,C):-A=B,      % A is unifiable with B
          C=A       % Unify C with A
          ;         % OR
          D is A+1, % D is the next number in the range
          p(D,B,E), % Recurse on the range after the first element
          C is A*E. % The result C is the product of the first element and the result 
                      of the recursion

उदाहरण:

p(5,10,X).
X = 151200

p(-4,-1,X).
X = 24

5

ऑक्टेव, 15 बाइट्स

@(a,b)prod(a:b)

सीधा। समावेशी श्रेणी का उपयोग करता है।


5

CJam, 6 19 18 10 बाइट्स

गोल्फ के साथ मदद के लिए डेनिस और रेटोकोरडी को धन्यवाद!

q~1$-,f+:*

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

के रूप में इनपुट लेता है a b। गणना करता है PI [a,b)

नोट: इस कार्यक्रम है 6 लंबे बाइट्स, और तभी काम करता है aऔर bसकारात्मक रहे हैं।

q~,>:*

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

के रूप में इनपुट लेता है a b। गणना करता है PI [a,b)


q~{_)_W$<}g;]:*तीन बाइट्स बचाता है।
डेनिस

4
q~1$-,f+:*10 बाइट्स के लिए।
रेटो कोराडी

5

बैश + जीएनयू उपयोगिताओं, 13

seq -s* $@|bc

मान लें कि वर्तमान निर्देशिका में कोई फ़ाइल नहीं है जिनके नाम से शुरू होता है -s। प्रारंभ और अंत (समावेशी) कमांड-लाइन मापदंडों के रूप में पारित किए जाते हैं।

यह सिर्फ़ आरंभ से अंत तक अनुक्रम उत्पन्न करता है, इसके द्वारा अलग किया जाता है *, फिर bcअंकगणितीय मूल्यांकन के लिए पाइप किया जाता है।


2
लेकिन मैं अपनी सभी फाइलें शुरू करता हूं -s! : पी
कॉनर ओ'ब्रायन

5

MATL (गैर-प्रतिस्पर्धात्मक), 4 बाइट्स

समावेशी रेंज

2$:p

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

व्याख्या

2$: % Implicitly grab two input arguments and create the array input1:input2
p   % Take the product of all array elements

इस पूरी MATL चीज़ को लटकाने में मेरी मदद करने के लिए @ डोन मूसली को धन्यवाद ।


अच्छा जवाब! चूंकि भाषा चुनौती का सामना करती है, आप उत्तर पोस्ट कर सकते हैं, लेकिन शायद आपको संकेत करना चाहिए कि यह जीतने के लिए गैर-योग्य है
लुइस मेंडो

&:pएक बाइट कम नहीं है?
DJMcMayhem

@DrGreenEggsandIronMan हाँ तो मुझे लगता है कि यह किसी भी तरह से गैर प्रतिस्पर्धा तो मैं इसे छोटा कर सकता है, लेकिन जब तक मैं अपने उत्तर पोस्ट पर हम नहीं था&
Suever


4

रूबी, 22 बाइट्स

->i,n{(i..n).reduce:*}

Ungolfed:

-> i,n {
  (i..n).reduce:* # Product of a range
}

उपयोग:

->i,n{(i..n).reduce:*}[5,10]
=> 151200

1
मैं कल रात इसी समाधान के बारे में सोच रहा था लेकिन इसे लिखने का समय नहीं था।
एलेक्सिस एंडरसन

4

सी, 32 बाइट्स

के लिए [a,b):

f(a,b){return a-b?a*f(a+1,b):1;}

के लिए [a,b](काटेनको के सुझावों पर, 32 बाइट्स फिर से):

f(a,b){return a<b?a*f(a+1,b):b;}

1
मुझे C में एक अन्य समाधान मिला, यदि आप रुचि रखते हैं, तो यह 32 बाइट्स भी है f(a,b){return a<b?a*f(a+1,b):b;}। :)
कैटेनिको

-5 बाइट्स के a=...बजाय gcc मेंreturn...

4

05AB1E , 2 बाइट्स (गैर-प्रतिस्पर्धात्मक)

कोड:

ŸP

स्पष्टीकरण:

Ÿ   # Inclusive range [input, ..., input]
 P  # Total product of the list
    # Implicit printing top of the stack

4

जे, 8 बाइट्स

[:%/!@<:

प्रयोग

>> f =: [:%/!@<:
>> f 10 5
<< 15120

जहाँ >>STDIN है और <<STDOUT है।

व्याख्या

यह गणना ∏[a,b]करता है (b-1)!/(a-1)!

minus_one =: <:
factorial =: !
of        =: @
monadic   =: [:
division  =: %/
f =: monadic division factorial of minus_one

पिछला 13-बाइट संस्करण

लिखा जब मुझे पता नहीं था कि Jयहां तक कि क्या है: पी

*/(}.[:>:i.)/

उपयोग:

   */(}.[:>:i.)/ 5 10
30240

स्पष्टीकरण:

*/            NB. multiply over
  (
   }.         NB. remove [the first x items] from
     [:>:     NB. increment all of
         i.   NB. the numbers from 0 to [y-1]
           )
            / NB. insert the above code into the following numbers

विस्तृत विवरण:

i.10 would produce 0 1 2 3 4 5 6 7 8 9

>:i.10 would make it 1 2 3 4 5 6 6 7 8 9 10

the [: is used to make the ">:" take only one argument (a monad)
because if it takes two arguments, it is a different function.
so [:>:i.10 becomes 1 2 3 4 5 6 7 8 9 10

}. means take away the first [x] items from the following list,
so 5}.1 2 3 4 5 6 7 8 9 10 becomes 6 7 8 9 10

the two slashes "/" in the code are actually the same
for example, */6 7 8 9 10 becomes 6*7*8*9*10

1
महान व्याख्या!
wizzwizz4

2
आप 10 बाइट्स के[:*/]+i.@- लिए उपयोग कर सकते हैं यदि आप रेंज को ऐसे लेते हैं जैसे कि आउटपुट । [a, b)b ([:*/]+i.@-) a10 ([:*/]+i.@-) 515120
मील

@ मीलों यह उत्तर तब लिखा गया था जब मुझे बिल्कुल भी पता नहीं था J: पी
लीकी नून

यदि आपका तर्क सकारात्मक नहीं है तो आपका 8 बाइट समाधान काम नहीं करेगा।
डेनिस

4

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

मुझे विश्वास नहीं हो रहा है कि हममें से कोई भी जेएस गोल्फर्स को रिकर्सन का इस्तेमाल करने के लिए नहीं सोच रहा था ...

a=>F=b=>a-b?b*F(b-1):a

उदाहरण के लिए एक चर को असाइन करें var q = a=>F=b=>a-b?b*F(b-1):a, फिर कॉल करें q(2)(5)


4

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

⟦₃×

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

इनपुट के रूप में पारित किया गया है [A,B]। रेंज बी के अनन्य है, लेकिन के साथ बदलकर समावेशी बनाया जा सकता है


3
PPCG में आपका स्वागत है! आजकल, यह कोई फर्क नहीं पड़ता कि कब भाषा बनाई जाती है, इसलिए यह उत्तर पूरी तरह से प्रतिस्पर्धी है। आशा है कि आपने अपने ठहरने का आनन्द लिया होगा!
कॉनर ओ'ब्रायन

आह, जानकर अच्छा लगा! मुझे लगता है कि मैं वोटों द्वारा हल किए गए उत्तर के साथ बहुत पुरानी चुनौतियों को देख रहा हूं।
असंबंधित स्ट्रिंग

@UnrelatedString वैसे, अगर आप उन गैर-प्रतिस्पर्धी संदेशों को देखते हैं तो उन्हें संपादित करना पूरी तरह से ठीक है।
फलन


3

पायथन, 52 बाइट्स

बहुत सरल कोड; थोड़ा बहुत लंबा।

def p(a,b):
 t=1
 for i in range(a,b):t*=i
 return t

3

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

@ Cᴏɴᴏʀ O'Bed की बदौलत 4 बाइट्स बचाए

(a,b)=>[...Array(b-a)].reduce(x=>x*a++,1)

थोड़ा बहुत लंबा लगता है ...

(a,b)=>           // Define an anonymous function that takes parameters a and b, and returns:
[...Array(b-a)]   // An array of b-a items,
.reduce(          // Reduced by
x=>x*a++          //  multiplying each item with the previous,
,1)               //  starting at 1.

यह काम करता है? प्रशंसा! मुझे नहीं लगता कि आपको yकम मैपिंग में इसकी आवश्यकता है , इसलिए इसे काट देंx=>x*a++
कॉनर ओ'ब्रायन

@ C @O'Bʀɪᴇɴ धन्यवाद, कि चाल वास्तव में अच्छी तरह से काम करता है!
ETHproductions

2
आपको अंत में एक अर्धविराम जोड़ना चाहिए। स्कोर के लिए।
साद्रुस

3

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

f(a,b)=prod(a:b)

नोट: यदि रेंज ऑब्जेक्ट a:b(जो शाब्दिक रूप से स्टार्ट वैल्यू और स्टॉप वैल्यू के रूप में संग्रहीत है, और आंतरिक रूप से इनपुट के रूप में "प्रत्येक चरण पर 1 की वृद्धि" शामिल है) को इनपुट के रूप में अनुमति दी जाती है, तो बस 4 बाइट्स की आवश्यकता होती है prod:।


3

पर्ल 6 , 14 बाइट्स

{[*] $^a..$^b}

उपयोग:

my &code = {[*] $^a..$^b}
say code |$_ for (2,5),(5,10),(-4,3),(0,3),(-4,-1);
# 120
# 151200
# 0
# 0
# 24

say chars code 1,10000;
# 35660

यदि आप ..^इसके बजाय अंतिम तत्व उपयोग को बाहर करना चाहते थे..

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.