아직 사용하지 않은 쌍 생각할 수도 있습니다. 여기서 n 은

양의 정수 시퀀스를 정의 해 봅시다. 짝수에 대한 순서를 이전 항의 두 배로 정의합니다. 시퀀스의 홀수 인덱스는 시퀀스에 아직 나타나지 않은 가장 작은 양의 정수입니다.

첫 커플 용어는 다음과 같습니다.

1,2,3,6,4,8,5,10,7,14,9,18,11,22,12,24,13,26,15,30

이것을 연결 쌍 (n, 2n) 의 목록으로 생각할 수도 있습니다. 여기서 n 은 가장 사용되지 않은 양의 정수입니다.

태스크

입력 으로 숫자 n이 주어지면 이 순서에서 n 번째 항을 계산하십시오 .

이것은 이므로 바이트 단위로 측정 할 때 소스 코드의 크기를 최소화해야합니다.

OEIS A036552



답변

하스켈, 40 바이트

l(a:r)=a:2*a:l[x|x<-r,x/=2*a]
(l[1..]!!)

제로 기반. l남아있는 정수의 게으른 목록에서 시퀀스를 점진적으로 빌드합니다.


답변

자바 스크립트 (ES6), 92 82 69 67 65 바이트

n=>(F=i=>i^n?F(a[b=i&1?2*b:(g=k=>a[k]?g(k+1):k)(1)]=-~i):b)(a={})

방법?

우리는 다음을 추적합니다.

  • 마지막으로 삽입 된 값 b .
  • 조회 테이블에서 이전에 발견 된 모든 값 a .

내부적으로 우리는 0 기반 인덱스 i를 사용하고 있습니다. 따라서 홀수 및 짝수 동작이 반전됩니다.

  • 홀수 위치에서 다음 값은 단순히 2 * b입니다.

  • 짝수 위치에서 재귀 함수 g () 와 조회 테이블 a 를 사용하여 가장 작은 일치 값을 식별합니다.

    (g = k => a[k] ? g(k + 1) : k)(1)

몇 바이트를 절약하기 위해 i{} 대신 로 초기화됩니다 0. 이것은 우리에게 다음을 사용하도록 강요합니다.

  • i^n비교 I를 가진 N 때문에 ({}) ^ n === n반면 ({}) - n가 평가 NaN.
  • -~i문자열을 생성 하기 때문에 i 를 증가시킵니다 ({}) + 1.

데모

let f =

n=>(F=i=>i^n?F(a[b=i&1?2*b:(g=k=>a[k]?g(k+1):k)(1)]=-~i):b)(a={})

for(n = 1; n <= 20; n++) {
  console.log('a[' + n + '] = ' + f(n));
}

답변

파이썬 3 , 80 72 69 바이트

Mr. Xcoder 덕분에 -7 바이트 !

f=lambda n:n and[f(n-1)*2,min({*range(n+1)}-{*map(f,range(n))})][n%2]

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


답변

젤리 , 15 바이트

Jḟ⁸ḢðḤṭṭ
0Ç¡Ḋị@

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


답변

수학 , 56 53 바이트

JungHwan Min 감사합니다 -3 바이트 !

(w={};Do[w~FreeQ~k&&(w=w~Join~{k,2k}),{k,#}];w[[#]])&

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

OEIS 링크에 제공된 Mathematica 표현을 기반으로합니다.


답변

PHP , 64 바이트

for(;$argn-$i++;)if($i&$$e=1)for(;${$e=++$n};);else$e*=2;echo$e;

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

PHP , 77 바이트

for(;$argn-$i++;$r[]=$e)if($i&1)for(;in_array($e=++$n,$r););else$e*=2;echo$e;

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

PHP , 78 바이트

for(;$argn-$i++;)$e=$r[]=$i&1?end(array_diff(range($i,1),$r?:[])):2*$e;echo$e;

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


답변

PHP, 56 바이트

while($$n=$i++<$argn)for($n*=2;$i&$$k&&$n=++$k;);echo$n;

PHP, 75 72 바이트

for($a=range(1,$argn);$i++<$argn;)$a[~-$n=$i&1?min($a):2*$n]=INF;echo$n;

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