제로섬 카운팅 ≥ 1 이 주어지면 솔루션 수를 ±

n ≥ 1 이 주어지면 솔루션 수를 ± 1 ± 2 ± 3 ± … ± n = 0으로 되 돌리는 프로그램 또는 함수를 작성하십시오 .

n = 6의 경우 해가 없으므로 답은 0입니다. n = 4의 경우 해가 두 개이므로 답은 2입니다 (두 해는 1-2-3 + 4 = -1 + 2 + 3-4입니다). = 0).

OEIS 시퀀스 A063865 입니다. 입력 / 출력 예제는 다음과 같습니다.

n       a(n)
1       0
2       0
3       2
4       2
5       0
6       0
7       8
8       14
9       0
10      0
11      70
12      124
13      0
14      0
15      722
16      1314

바이트 단위의 최단 코드가 이깁니다.



답변

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

@tsh 덕분에 1 바이트 절약

f=(n,s)=>n--?f(n,n-~s)+f(n,n+~s):!s

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


답변

Wolfram Language (Mathematica) , 33 바이트

Count[{1,-1}~Tuples~#.Range@#,0]&

n내적 Range[n]이 0 인 -1과 -1 의- 튜플을 계산합니다 .

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


답변

하스켈 , 42 바이트

f n=sum[1|0<-sum<$>mapM(\x->[x,-x])[1..n]]

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

이것은 내가 쓸 수있는 재귀 함수보다 2 1 바이트 짧습니다.


답변

05AB1E , 10 바이트

X®‚sã€ƶO_O

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

설명

X®‚          # push [1,-1]
   sã        # cartesian product with input
     €ƶ      # multiply each element in each list with its 1-based index
       O     # sum each list
        _    # logical negation of each sum
         O   # sum

답변

C (gcc), 45 62 52 50 바이트

f(n,r){n=n?f(n-1,r+n)+f(n-1,r-n):!r;}F(n){f(n,0);}

Kevin Cruijssen 항의 Java 8 답변 .

여기에서 온라인으로 사용해보십시오 .

주석에서 제안 된 개선 사항으로 인해 코드는 clang으로 컴파일 할 때 작동하지 않는 지점까지 정의되지 않은 동작을 생성합니다.

3 바이트 골프를위한 etene 에게 감사 합니다. 10 바이트 더 골프를 해준 Kevin Cruijssen 에게 감사 합니다. 2 바이트 더 골프 해 준 Christoph 에게 감사드립니다 .

언 골프 버전 :

f(n, r) { // recursive function - return type and parameter type are omitted, they default to int
    n = // instead of returning, we set n - dirty trick
        n ? // if n is not 0, recurse
        f(n-1,r+n) // +n
       +f(n-1,r-n) // -n
        !r; // else if r != 0 return 0 else return 1
}
F(n) { // function to start the recursion; again implicitly int(int)
    n = f(n, 0); // call the recursive function; this time we simply don't return
}

답변

05AB1E , 9 8 바이트

바이트를 저장해 준 Emigna 에게 감사합니다 !

암호:

LæO·sLO¢

05AB1E 인코딩을 사용합니다 . 온라인으로 사용해보십시오!

설명

L           # Create the list [1, 2, .., input]
 æ          # Compute the powerset of this list
  O         # Sum each list
   ·        # Double each element
    sLO     # Compute the sum of [1, 2, .., input]
       ¢    # Count the number of occurrences

답변

MATL , 14 13 바이트

[la]Z^G:!Y*~s

1 바이트를 절약 한 @Giuseppe 에게 감사드립니다 !

온라인으로 사용해보십시오! 또는 모든 테스트 사례를 확인하십시오 .

설명

고려 n = 3예를 들어. 스택이 거꾸로 표시됩니다. 즉, 최신이 아래에 나타납니다.

[la]   % Push array [1 -1]
       % STACK: [1 -1]
Z^     % Cartesian power with inplicit input n
       % STACK: [ 1  1  1
                  1  1 -1
                  1 -1  1
                  1 -1 -1
                 -1  1  1
                 -1  1 -1
                 -1 -1  1
                 -1 -1 -1]
G:     % Push n, range: gives [1 2 ... n]
       % STACK: [ 1  1  1
                  1  1 -1
                  1 -1  1
                  1 -1 -1
                 -1  1  1
                 -1  1 -1
                 -1 -1  1
                 -1 -1 -1],
                 [1  2  3]
!      % Transpose
       % STACK: [ 1  1  1
                  1  1 -1
                  1 -1  1
                  1 -1 -1
                 -1  1  1
                 -1  1 -1
                 -1 -1  1
                 -1 -1 -1],
                 [1
                  2
                  3]
Y*     % Matrix multiplication
       % STACK: [6
                 0
                 2
                -4
                 4
                -2
                 0
                -6]
~      % Logical negation
       % STACK: [0
                 1
                 0
                 0
                 0
                 0
                 1
                 0]
s      % Sum of vector. Implicit display
       % STACK: 2