재귀 적으로 연결된 반복 누적 [N]과 M 반복


14

이 양 개의 정수를 타고 NM와의 연결된 누적 합계를 생성 [N]하여, M반복. 마지막 반복 결과를 출력합니다.

연결된 누적 합계의 정의 :

  1. 숫자로 시작 N하고 순서를 정의하십시오X = [N]
  2. X누적 합계에 추가X
  3. 2 단계를 반복하십시오 M.

벡터의 누적 합 X = [x1, x2, x3, x4]은 다음과 같습니다 [x1, x1+x2, x1+x2+x3, x1+x2+x3+x4].

와 예 N = 1M = 4:

P = 누적 합 함수

M = 0: [1]
M = 1: [1, 1]                    -  X = [1, P(1)] = [[1], [1]]      
M = 2: [1, 1, 1, 2]              -  X = [X, P(X)] = [[1, 1], [1, 2]]
M = 3: [1, 1, 1, 2, 1, 2, 3, 5]  -  X = [X, P(X)] = [[1, 1, 1, 2], [1, 2, 3, 5]]
M = 4: [1, 1, 1, 2, 1, 2, 3, 5, 1, 2, 3, 5, 6, 8, 11, 16]

첫 번째 X = [1]는 반복으로 계산되지 않습니다. 당신은 M = 5위의 예 를 위해 선택할 수 있습니다 (따라서 계산X = [1] 한 번의 반복으로 계산).

이다 OEIS의 A107946


테스트 사례 :

N = 5, M = 1
5, 5

N = 2, M = 3
2, 2, 2, 4, 2, 4, 6, 10

N = 4, M = 6
4, 4, 4, 8, 4, 8, 12, 20, 4, 8, 12, 20, 24, 32, 44, 64, 4, 8, 12, 20, 24, 32, 44, 64, 68, 76, 88, 108, 132, 164, 208, 272, 4, 8, 12, 20, 24, 32, 44, 64, 68, 76, 88, 108, 132, 164, 208, 272, 276, 284, 296, 316, 340, 372, 416, 480, 548, 624, 712, 820, 952, 1116, 1324, 1596

이것은 이므로 가장 짧은 코드가 승리합니다. 선택적 입력 및 출력 형식.


지금은 너무 늦었지만 N실제로 문제에 어떤 것이 있습니까? 결과에 곱하는 상수 요소 일뿐입니다.
Martin Ender

답변:




6

껍질 , 9 8 7 바이트

1 바이트 절약을위한 H.PWiz에 감사합니다.

!¡S+G+;

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

1 기반을 사용합니다 M.

설명

      ;     Wrap N in a list to get [N].
 ¡          Iterate the following function on this list and collect
            the results in an infinite list.
  S+        Concatenate the current value with...
    G+      ...the cumulative sum. We're not using the cumsum built-in ∫ 
            because it prepends a zero.
!           Use M as an index into the infinite list.

내 접근 방식도 골프 였는지 확실하지 않습니다. 또한 이미 선행을 반환하지 말 것을 제안 했습니다 (이 경우 2 바이트를 절약 할 수있는 것). cumsum0
Outgolfer Erik

ot∫G+있습니까?
H.PWiz

@ H.PWiz Hmm ... 문서는 명확하지 않은 것 같습니다 (AFAIK "스캔"은 "누적 감소"가 아니라 "감소"를 의미합니다).
Outgolfer Erik

F줄이는 것은 G누적 감소
H.PWiz

5

MATL , 6 바이트

:"tYsh

입력은 M 다음 N.

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

설명

:"      % Implicitly input M. Do the following M times
  t     %   Implicitly input N the first time. Duplicate
  Ys    %   Cumulative sum
  h     %   Concatenate horizontally
        % Implicitly end loop. Implicitly display stack

3
응? 나는 100 번 시도했다고 확신합니다. 나는 심지어 TIO에서 이상한 오류가 아닌지 확인하기 위해 Suever의 사이트를 방문하려고 시도했습니다 ... 전혀 이해할 수 없습니다 ...
Stewie Griffin

2
나는 이것에 대해 생각을 멈출 수 없다 ... 나는 그 정확한 문자를 반복해서 쓰고 두 개의 다른 사이트에서 그것을 성공 시키려고 노력했다는 것을 절대적으로 확신한다. 그것이 사실이 아니기 때문에 남은 유일한 설명은 내가 미쳐 가고 있다는 것입니다 ... 이것은 정말 내 머리를 망쳐 놓았습니다!
Stewie Griffin



3

Dyalog APL , 12 바이트

{(⊢,+\)⍣⍺⊢⍵}

오른쪽은 N, 왼쪽은 M입니다. 여기에 APL을보십시오!

설명:

{(⊢,+\)⍣⍺⊢⍵}
{          } an anonymous function
 (⊢,+\)      a train for a single iteration:
             the right argument
   ,          concatenated with
    +\        the cumulative sum 
            repeated
             left argument times
         ⊢⍵  on the right argument

설명을 좋아하십시오. 무슨 일이 일어나고 있는지 매우 분명합니다. 그렇지 않으면 APL을 이해하기 어렵다 : P
Emigna





0

자바 스크립트 (ES6), 55 54 바이트

카레 구문으로 입력을 (m)(n)받습니다.

m=>g=a=>m--?g([...a=+a?[a]:a,...a.map(x=>s+=x,s=0)]):a

테스트 사례


0

젤리 , 5 바이트

;+\$¡

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

Dennis가 제안한 버전 ( 단일 배열 n대신 반환 [n]).


W제거 할 수 있습니다.
Dennis

@Dennis 나는 출력이 바로 그렇지 않을까 두려워? 나는 그것을 생각했지만 입력을 1받고 0두려워 하면 그것들을 제거하는 1대신에 돌아올 [1]것입니다. 출력이 여전히 같기 때문에 대신 전체 프로그램을 사용할 수 없습니다.
Outgolfer Erik

1Jelly가 배열을 표시하는 방법 [1]입니다. 나는 그것에 아무런 문제가 없다.
Dennis

@Dennis Hmm ... (위의 의견의 마지막 부분에서 언급했듯이) 약간 의심 스럽습니다 ...이를 허용하는 합의가 있습니까, 아니면 "표준 허점 학대 데이터 유형"으로 간주됩니까?
Outgolfer Erik

두 형식 모두 정상입니다.
CG.

0

클로저, 67 바이트

#(loop[c[%]i %2](if(= i 0)c(recur(into c(reductions + c))(dec i))))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.