다양한 제품


38

당신의 작업은 간단합니다 : 두 개의 정수 ab출력 ∏[a,b]; 즉, a와 사이의 범위의 곱입니다 b. 당신이 걸릴 수 ab그 함수 목록 입력, 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

이것은 이므로 바이트 단위의 가장 짧은 프로그램이 승리합니다.


리더 보드

이 게시물의 맨 아래에있는 스택 스 니펫은 답변 a) 언어 당 가장 짧은 솔루션 목록으로, b) 전체 리더 보드로 카탈로그를 생성합니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

## 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 행운을 빕니다;)
Conor O'Brien

입력을 b, a? 로 취할 수 있습니까 ?
FlipTack

@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
나는이 beatable ... 의심
kirbyfan64sos

14
젤리?
Aaron

30

ArnoldC , 522 511 바이트

codegolf의 첫 번째 게시물!

나는 이것을하는 것이 재미 있었다. 독점 범위.

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

여기에서 그것은 변환되어 사용 들여 이것을 기준으로
비잔

어떤 통역사를 사용하고 있습니까?
lirtosiast

공식적인 . 당신은 @NO PROBLEMO와 1에 대해 옳습니다 (0이 아님).
Zycho

18

파이썬, 30 바이트

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

포함 범위. 오른쪽 끝점보다 높을 때까지 왼쪽 끝점을 반복적으로 곱하고 증가시킵니다.이 경우 빈 곱은 1 (참)입니다.


13

마인 크래프트 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.

이 코드는 다음 의사 코드에 해당합니다.

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

여기 에서 세계를 다운로드 하십시오 .


프로그램 크기는 이 스코어링 방법으로 계산됩니다 .
GamrCorps 2016

젠장, 내가하기 전에 도착 했어 : I
애디슨 크럼프

스냅 샷 버전, 즉 다른 것을 지정해야합니다 15w46a.
애디슨 크럼

Minecraft : D LoL, Minecraft에서 골프 : D
username.ak

12

TI-BASIC, 9 바이트

Input A
prod(randIntNoRep(A,Ans

Ans 프롬프트 에서 하나의 숫자를 가져옵니다 .

리스트에서와 같은 입력을 가지고 또한 9 바이트 Ans:

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

1
스스로 알아내는 데 시간이 걸렸으므로 여기에 게시하겠습니다. TI-BASIC의 각 함수는 1 바이트입니다.
Nic Hartley

3
@QPaysTaxes 많은 것들이 있지만 전부는 아닙니다. %2 바이트입니다.
mbomb007

12

파이썬 2, 44 38 바이트

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

명백한 익명 함수 답변과 거의 같습니다.

편집 : 내가 알지 못한 일부 기능으로 6 바이트를 절약 한 xnor에게 감사드립니다.


1
int.__mul__람다 대신 작동 하는 내장을 사용할 수 있습니다 . 이 두 숫자 x,y는로 압축을 푼 상태로 쓸 수도 있습니다 *l.
xnor December

36
44를 넘어서도 여전히 44처럼 보입니다.
스파게티

10

Pyth, 5 바이트

*FrQE

Pyth에는 제품이 없으므로 범위에서 *를 줄입니다.

배타적 범위를 사용합니다.


4
*FrFQ단지 :) 재미를 위해, 해당하지만 다른 입력 함께
FryAmTheEggman


8

Mathematica, 15 바이트

1##&@@Range@##&

음수가 아닌 정수에 대해서만 작동하는 더 짧은 솔루션 :

#2!/(#-1)!&

3
음이 아닌 정수의 경우 더 짧음 :#2!#/#!&
Anders Kaseorg

8

자바 스크립트 (ES6), 34 바이트

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

때로는 가장 간단한 답변이 최고입니다! 그냥 for루프 내부 eval. 포함 범위.


와. 인상적입니다!
Conor O'Brien

어, 지금 당장 골프를하려고 할 때이 정확한 해결책을 생각했습니다 ... +1
ETHproductions

1
이 문자는 25 자로 더 짧습니다. f=(a,b)=>a<b?a*f(a+1,b):1
Matthias Burtscher


7

Japt , 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.

와우, 지금까지 다른 답변에 비해 한심한 것 같습니다. Japt에서 좀 더 작업해야합니다 ...


설명? : 3
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ 완료 :)
ETHproductions

2
5K 담당자! : D
ETHproductions

6

하스켈, 19 17 바이트

a#b=product[a..b]

사용 예 : 2#5-> 120.


귀하는 b를 포함하도록 선택할 수 있습니다. b.
xnor

@ xnor : Ups, 그것을 간과해야합니다. 감사!
nimi

확실하지 않지만 PPCG는 식으로 주어진 답변을 허용한다고 생각합니다.
자부심을 가진 haskeller

@proudhaskeller : 기본값 은 모든 프로그램과 기능을 허용하는 것입니다. 작업 설명에서 스 니펫, 표현식 등을 명시 적으로 허용해야합니다.
nimi

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 바이트

골프에 대한 도움을 주신 Dennis와 RetoKoradi에게 감사드립니다!

q~1$-,f+:*

온라인으로 사용해보십시오

로 입력을 a b받습니다. 계산 PI [a,b)합니다.

참고 :이 프로그램은 6 바이트 길이, 그리고 경우에만 작동 a하고 b긍정적이다.

q~,>:*

온라인으로 사용해보십시오

로 입력을 a b받습니다. 계산 PI [a,b)합니다.


q~{_)_W$<}g;]:*3 바이트를 절약합니다.
Dennis

4
q~1$-,f+:*10 바이트
Reto Koradi

5

배쉬 + GNU 유틸리티, 13

seq -s* $@|bc

현재 디렉토리에 이름이로 시작하는 파일이 없다고 가정합니다 -s. 시작 및 종료 (포함)는 명령 행 매개 변수로 전달됩니다.

이것은 단순히 시작부터 끝까지 시퀀스를 생성하고로 분리 한 *다음 파이프를 bc산술 평가합니다.


2
그러나 모든 파일을 시작합니다 -s! : P
Conor O'Brien

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 문제를 해결하는 데 도움을 주신 @Don Muesli 에게 감사드립니다 .


좋은 대답입니다! 언어가 도전 과제를 게시하기 때문에 답변을 게시 할 수 있지만 아마도 자격
Luis Mendo

아닌가 &:p바이트 짧은?
DJMcMayhem

@DrGreenEggsandIronMan 그렇습니다. 어쨌든 경쟁이 아닌 것 같아서 단축 할 수 있었지만 답변을 게시 할 당시에는 없었습니다&
Suever


4

루비, 22 바이트

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

언 골프 드 :

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

용법:

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

1
나는 지난 밤 에이 같은 솔루션에 대해 생각하고 있었지만 그것을 쓸 시간이 없었습니다.
Alexis Andersen

4

C, 32 바이트

의 경우 [a,b):

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

들어 [a,b](Katenkyo의 제안에, (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;}. :)
Katenkyo

gcc에서 -5 바이트a=...return...

4

05AB1E , 2 바이트 (비경쟁)

암호:

ŸP

설명:

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

4

J, 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조차 몰랐을 때 작성 : p

*/(}.[:>: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
당신은 사용할 수 있습니다 [:*/]+i.@-에 대한 10 바이트 는 범위를 가지고가는 경우 [a, b)b ([:*/]+i.@-) a같은 그 10 ([:*/]+i.@-) 5출력 15120.
마일

@miles 그 대답은 전혀 몰랐을 때 쓰여졌 J습니다. : p
Leaky Nun

인수가 모두 양수이면 8 바이트 솔루션이 작동하지 않습니다.
Dennis

4

자바 스크립트 (ES6), 22 바이트

JS 골퍼 중 누구도 재귀를 사용한다고 생각하지 못했습니다 ...

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

예를 들어 변수에 대입하고 var q = a=>F=b=>a-b?b*F(b-1):alike를 호출하십시오 q(2)(5).


4

Brachylog , 3 바이트

⟦₃×

온라인으로 사용해보십시오!

입력은로 전달됩니다 [A,B]. 범위는 B 전용이지만 대체하여 포함 할 수 .


3
PPCG에 오신 것을 환영합니다! 요즘 언어가 만들어지는 것은 중요하지 않으므로이 답변은 완벽하게 경쟁적입니다. 당신이 당신의 체류를 즐기시기 바랍니다!
코너 오브라이언

아, 반가워요! 나는 투표로 정렬 된 답변으로 너무 많은 오래된 도전을보고 있다고 생각합니다.
관련없는 문자열

@UnrelatedString 그런데 경쟁하지 않는 메시지가 보이면 편집하는 것이 좋습니다.
Esolanging 과일


3

파이썬, 52 바이트

매우 간단한 코드; 조금 너무 깁니다.

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

3

자바 스크립트 (ES6), 45 41 바이트

@ Cᴏɴᴏʀ O'Bʀɪᴇɴ 덕분에 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이 Reduce 매핑에서 필요하지 않다고 생각합니다 .x=>x*a++
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ 고마워, 그 트릭은 정말 잘 작동합니다!
ETHproductions

2
끝에 세미콜론을 추가해야합니다. 점수.
Seadrus

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

마지막 요소를 제외하려면 ..^대신..


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.