디비 나치 수열


23

디비 나치 ( OEIS )

피보나치 순서를 수행하지만 다음을 사용하는 대신

f(n) = f(n-1)+f(n-2)

용도:

f(n) = sum(divisors(f(n-1))) + sum(divisors(f(n-2)))

의 입력에 n대해 n 번째 항을 출력하려면 프로그램에 입력이 1 개만 있어야합니다.


처음 14 개의 용어 (0- 인덱스, 1- 인덱스, 사용한 상태) :

0  | 0     # Initial               | []
1  | 1     # Initial               | [1] => 1
2  | 1     # [] + [1]              | [1] => 1
3  | 2     # [1] + [1]             | [1,2] => 3
4  | 4     # [1] + [1,2]           | [1,2,4] => 7
5  | 10    # [1,2] + [1,2,4]       | [1,2,5,10] => 18
6  | 25    # [1,2,4] + [1,2,5,10]  | [1,5,25] => 31
7  | 49    # [1,2,5,10] + [1,5,25] | [1,7,49] => 57
8  | 88    # [1,5,25] + [1,7,49]   | [1, 2, 4, 8, 11, 22, 44, 88] => 180
9  | 237   # [1,7,49] + [180]      | [1, 3, 79, 237] => 320
10 | 500   # [180] + [320]         | [1, 2, 4, 5, 10, 20, 25, 50, 100, 125, 250, 500] => 1092
11 | 1412  # [320] + [1092]        | [1, 2, 4, 353, 706, 1412] => 2478
12 | 3570  # [1092] + [2478]       | [1, 2, 3, 5, 6, 7, 10, 14, 15, 17, 21, 30, 34, 35, 42, 51, 70, 85, 102, 105, 119, 170, 210, 238, 255, 357, 510, 595, 714, 1190, 1785, 3570] => 10368
13 | 12846 # [2478] + [10368]      | [1, 2, 3, 6, 2141, 4282, 6423, 12846] => 25704
Etc...

의 약수 : 당신은 사람들을 위해 선도적 인 0을 포함할지 여부를 선택할 수 0있는 []이 문제의 목적을.

그것은 최저 바이트 수 승리입니다 ...


15
모든 자연수는 0을 나누 므로 제수의 합은 + ∞ 입니다.
Dennis

9
@Dennis는 마침내 1 + 2 + 3 + ... = -1/12라고 생각하지 않는 사람입니다.
Leaky Nun

1
@Dennis 우리는 0을 제거하고 이것을 유효하게 만들 수 있습니다 : P. 또는 Infinity원하는 경우 Mathematica 답변을 제출할 수도 있습니다 .
매직 문어 Urn

젤리 답변이 더 짧을 것입니다. : P 시퀀스를 변경하거나 (답변을 조정해야 할 수도 있음) 설명을 변경하거나 (기본 값 0, 1, 1로 시작 )
Dennis

1
@carusocomputing 시퀀스를 변경하지 않으면 어떻게 답변에 영향을 줄 수 있습니까?
Martin Ender 2016 년

답변:


10

05AB1E , 9 바이트

XÎFDŠ‚ÑOO

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

설명

XÎ          # initialize stack with 1,0,input
  F         # input times do
   D        # duplicate
    Š       # move down 2 places on the stack
     ‚      # pair the top 2 elements on the stack
      Ñ     # compute divisors of each
       OO   # sum twice

스와핑의 톤 heh에 가고있다! 흥미 롭군
매직 문어 Urn

2
나는 마지막 몇 바이트가 독자에게 어떻게 고함을 지르는지를 좋아합니다.
Rohan Jhunjhunwala 2016 년

1
당신은 2 분 롤로 이겼습니다.
매직 문어 Urn

8

Mathematica, 45 40 바이트

If[#<3,1,Tr@Divisors@#0[#-i]~Sum~{i,2}]&

매스 매 티카의 제수 관련 기능은 Divisors, DivisorSum그리고 DivisorSigma모두를위한 정의되어 있지 N = 0 우리가에서 시작하므로, (당연히 그렇게) f(1) = f(2) = 1입력을 지원하지 않습니다 0.

명명되지 않은 함수를 사용하는 대신 연산자로 정의하는 것이 2 바이트 더 긴 것 같습니다.

±1=±2=1
±n_:=Sum[Tr@Divisors@±(n-i),{i,2}]

±Mathematica 지원 인코딩에서 1 바이트가 아니면 * 7 바이트 더 길어집니다 .
CalculatorFeline

@CalculatorFeline입니다. ( $CharacterEncodingWindows 시스템에서 기본 설정은 WindowsANSICP 1252입니다.)
Martin Ender

1
알아 둘만 한. .
CalculatorFeline




3

MATL, 16 15 바이트

Oliq:",yZ\s]+]&

이 솔루션은 0 기반 인덱싱을 사용합니다.

MATL Online 에서 사용해보십시오

설명

O        % Push the number literal 0 to the stack
l        % Push the number literal 1 to the stack
i        % Explicitly grab the input (n)
q        % Subtract 1
:        % Create the array [1...(n - 1)]
"        % For each element in this array...
  ,      % Do the following twice
    y    % Copy the stack element that is 1-deep
    Z\   % Compute the divisors
    s    % Sum the divisors
  ]      % End of do-twice loop
  +      % Add these two numbers together
]        % End of for loop
&        % Display the top stack element

3

젤리 , 10 9 바이트

ð,ÆDẎSð¡1

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

-1의 Dennis 에게 감사합니다 .



@Dennis 0암시 적입니까?
Outgolfer Erik

STDIN에서 반복 횟수를 가져 오면 닐라 딕 체인이 생기고 0 은 닐라 딕 체인의 암시 적 인수입니다.
데니스

@Dennis 그래서 ¡다른 사람들은 어디에서나, 심지어 Ɠ? 예상치 못한 일입니다 ...
Outgolfer Erik

명시 적으로 명시되지 않는 한, ¡et al. 마지막 명령 행 인수를 취하고, 존재하지 않는 경우 STDIN에서 행을 읽습니다.
Dennis





1

R, 81 바이트

f=function(n,a=1,b=1,d=numbers::divisors)`if`(n-1,f(n-1,b,sum(d(a))+sum(d(b))),a)

1 인덱싱되며 시퀀스 시작시 0을 제외합니다. 그 제로는 내장 numbers::divisors이 잘 처리하지 못하기 때문에 구현하는 데 많은 어려움을 겪었습니다 .

나머지는 피보나치 시퀀스를 구현하는 표준 재귀 함수의 수정 된 버전입니다.

> f(1)
[1] 1
> f(2)
[1] 1
> f(3)
[1] 2
> f(5)
[1] 10
> f(13)
[1] 12846
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.