1, 2, 3, 14… 아니면 15입니까?


32

아일랜드 록 밴드 U2 의 잘 알려진 노래 는 가수 보노 (Bono)가 스페인어로 "1, 2, 3, 14"( " uno, dos, tres, catorce ")로 시작합니다.

있습니다 다양한 이론 그 숫자의 의미에 관해서는. 분명히 공식적인 설명 은 " 우리는 그날 밤 너무 많이 마셨다 "입니다. 그러나보다 흥미로운 가설이 있습니다. Bono는 OEIS의 정수 시퀀스를 말합니다.

A107083 :

k그런 정수 10^k + 31는 소수입니다.
1, 2, 3, 14, 18, 44, 54, ...

인터뷰에서, "왜 14"라는 피할 수없는 질문을했을 때, 보노는 그가 그 숫자에 조금 피곤하다고 인정했다. 기자는 대신 "15"를 제안했고 그날 밤 콘서트에서 가사는 실제로 "1, 2, 3, 15"로 변경되었습니다. (이야기는 읽을 수 있습니다 여기에 스페인어로). 기자가 영감을 얻은 것 같습니다.

A221860 :

지수 kprime(k) - k의 힘 2, prime(k)은 IS k번째 수상.
1, 2, 3, 15, 39, 2119, 4189897, ...

도전

같은 언어로 두 개의 프로그램을 작성하십시오. 첫 번째는 A107083 의 첫 번째 항 또는 첫 번째 항을 입력 n하여 출력 해야합니다 . 마찬가지로, 두 번째는 A221860 의 첫 번째 항 또는 첫 번째 항을 출력해야합니다 .nnnn

점수 는 IS 합계길이 (바이트) 두 프로그램의 플러스 광장Levenshtein 거리 두 프로그램의 바이트 표현 사이.

각 문자가 1 바이트에 해당하도록 문자 인코딩을 사용하는 경우이 스크립트 를 사용하여 레 벤슈 테인 거리를 측정 할 수 있습니다.

예를 들어, 두 프로그램이 abcdefghand bcdEEfg이면 점수는 8 + 7 + 4^2 = 31입니다.

최저 점수가 이깁니다.

중재 규칙

  • 출력은 각 시퀀스에 대해 독립적 으로 1기반 또는 0기반 일 수 있습니다 (따라서 프로그램 중 하나가 1기반이고 다른 하나가 0기반 인 경우에 허용됨 ).

  • 각 프로그램은 다른 프로그램과 일관성을 유지하면서도 독립적으로- n번째 용어 또는 첫 번째 용어 를 출력 할 수 있습니다 n.

  • 프로그램 또는 기능은 각 시퀀스에 대해 독립적으로 허용됩니다.

  • 입력 및 출력 수단과 형식은 평소처럼 유연합니다 . 표준 허점은 금지되어 있습니다.

답변:


20

젤리 , 16 + 16 + 1² = 33

A107083

⁵*+31ÆḍÆNB>/
1Ç#

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

A221860

⁵*+31ÆạÆNB>/
1Ç#

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

작동 원리

1Ç#           Main link. Argument: n

1             Set the return value to 1.
 Ç#           Call the helper link with arguments k, k + 1, k + 2, ... until n of
              them return a truthy value. Return the array of n matches.


⁵*+31ÆḍÆNB>/  Helper link. Argument: k

⁵*            Yield 10**k.
  +31         Yield 10**k + 31.
     Æḍ       Count the proper divisors of 10**k + 31.
              This yields c = 1 if 10**k + 31 is prime, an integer c > 1 otherwise.
       ÆN     Yield the c-th prime.
              This yields q = 2 if 10**k + 31 is prime, a prime q > 2 otherwise.
         B    Binary; yield the array of q's digits in base 2.
          >/  Reduce by "greater than".
              This yields 1 if and only if the binary digits match the regex /10*/,
              i.e., iff q is a power of 2, i.e., iff 10**k + 31 is prime.


⁵*+31ÆạÆNB>/  Helper link. Argument: k

     Æ        Unrecognized token.
              The token, as well as all links to its left, are ignored.
       ÆN     Yield p, the k-th prime.
      ạ       Take the absolute difference of k and p, i.e., p - k.
         B    Binary; yield the array of (p - k)'s digits in base 2.
          >/  Reduce by "greater than".
              This yields 1 if and only if the binary digits match the regex /10*/,
              i.e., iff p - k is a power of 2.


4

젤리 , 12 + 12 + 8² = 88 바이트

1, 2, 3, 14

ÆN_µæḟ2=
1Ç#

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

1, 2, 3, 15

10*+31ÆP
1Ç#

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


1) 첫 번째 n 용어가 아닌 n 번째 용어를 출력해야합니다. 2) 이봐, 우리의 스 니펫 중 하나는 거의 동일합니다! 3) 어 .. 10너무 오래 느낀다.
Outgolfer Erik

1) n 번째 항을 출력하는 대신 각 프로그램은 첫 번째 n 항을 독립적으로 출력 할 수 있습니다.
Leaky Nun

흠, 그래서 내 대답은 더 작은 점수를 갖습니다.
Outgolfer Erik

@EriktheOutgolfer 죄송 혼란에 대해, 나는 통합 한 그 (이전에 있었다 전용 "추가 규칙"에서) 더 큰 선명도의 본문에
루이스 Mendo


3

MATL , 17 + 17 + 7² = 83

1, 2, 3, 14, ... (17 바이트)

0G:"`Q11qy^31+Zp~

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

1, 2, 3, 15, ... (17 바이트)

0G:"`QtYqy-Bzq~p~

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

둘 다 비슷한 0G:"`Q조건을 사용하여 조건이 충족 될 때 카운터가 실행되고 반환되도록 n합니다. 실제 프로그램은 매우 간단합니다. 이 15변형에는 ~p~Levenshtein 거리를 최소화하기 위해 필러 ( )가 포함되어 있지만 14프로그램은 다른 프로그램과 더 잘 일치시키기 11qy보다는 오히려 사용합니다 t10w.

공유 부분 :

0      % Push counter (initially zero)
 G:"   % Loop `n` times
    `  % Do .... while true
     Q % Increment counter

최고 프로그램 :

11q         % Push 10
   y        % Duplicate counter
    ^       % Power
     31+    % Add 31
        Zp  % isprime
          ~ % If not, implicitly continue to next iteration. 
            % Else, implicit display of counter.

하단 프로그램 :

tYq         % Nth prime based on counter
   y-       % Duplicate counter, subtract from nth prime.
     Bzq    % Number of ones in binary presentation, minus one (only zero for powers of two).
        ~p~ % Filler, effectively a NOP.
            % If not zero, implicitly continue to next iteration
            % Else, implicitl display of counter.

1

05AB1E (레거시) , 10 + 11 + 6 2 = 84 69 57 바이트

1, 2, 3, 14, ... (A107083)

ε>а32<+p

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

1, 2, 3, 15, ... (A221860)

ε>Ð<ØαD<&_

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

½counter_variableµcounter_variable에이

설명:

Î            # Push 0 and the input
 µ           # While the counter_variable is not equal to the input yet:
  >          #  Increase the top by 1
   Ð         #  Triplicate it (which is our `k`)
    °32<+    #  Take 10 to the power `k`, and add 31
         p   #  Check if this is a prime
             #  (implicit: if it is a prime, increase the counter_variable by 1)
             # (implicitly output the top of the stack after the while-loop)

Î            # Push 0 and the input
 µ           # While the counter_variable is not equal to the input yet:
  >          #  Increase the top by 1
   Ð         #  Triplicate it (which is out `k`)
           #  Get the 0-indexed k'th prime
      α      #  Get the absolute difference of this prime with the copied `k`
       D<&   #  Calculate `k` Bitwise-AND `k-1`
          _  #  And check if this is 0 (which means it's a power of 2)
             #  (implicit: if it is 0, increase the counter_variable by 1)
             # (implicitly output the top of the stack after the while-loop)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.