1、2、3、14…または15ですか?


32

アイルランドのロックバンドU2の有名なは、歌手ボノがスペイン語で「1、2、3、14」(「uno、dos、tres、catorce」)と言うことから始まります。

これらの数字の重要性については、さまざまな 理論があります。どうやら公式説明は「あの夜、私たちは飲みすぎた」ということです。しかし、もっと興味深い仮説があります:Bonoは、OEISからの整数シーケンスを参照しています。

A107083

素数であるkような整数10^k + 31
12314184454、...

インタビューで、避けられない質問「なぜ14」を尋ねられたとき、ボノは彼がその数字に少し疲れていることを認めました。ジャーナリストは代わりに「15」を提案し、その夜のコンサートで歌詞は実際「1、2、3、15」に変更されました。(物語はスペイン語でここで読むことができます)。おそらくジャーナリストはインスピレーションを受けました

A221860

インデックスkかかるprime(k) - kの電力で2prime(k)あるk番目の素数。
123153921194189897、...

チャレンジ

同じ言語で2つのプログラムを作成します。最初は入力nを取り、A107083n-th項、または最初の項を出力する必要があります。同様に、2 番目はA221860の-th項、または最初の項を出力する必要があります。nnn

スコアがある合計長さをバイト単位で二つのプログラムの、プラス正方形レーベンシュタイン距離二つのプログラムのバイト表現の間。

各文字が1バイトに対応するように文字エンコードが使用される場合、このスクリプトを使用してレーベンシュタイン距離を測定できます。

たとえば、2つのプログラムがabcdefghとのbcdEEfg場合、スコアは8 + 7 + 4^2 = 31です。

最低スコアが勝ちます。

追加規則

  • 出力は、シーケンスごとに独立して1-basedまたは0-basedにすることができます(したがって、プログラムの一方が1-basedで、もう一方が0-basedの場合に許可されます)。

  • 各プログラムは、一貫して、しかし互いに独立して、n-th項または最初の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)ちょっと、スニペットの1つはほとんど同じです!3)うーん...それ10は非常に長く感じます。
エリックアウトゴルファー

1)n番目の項を出力する代わりに、各プログラムは最初のn項を個別に出力できます。
リーキー修道女

ええと、そうすれば私の答えのスコアは小さくなります。
エリックアウトゴルファー

@EriktheOutgolfer混乱して申し訳ありませんが、より明確にするために本文にそれを組み込みました(以前は「追加規則」のみでした)
ルイスメンドー


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~ながら、レーベンシュタイン距離を最小にする)を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<&_

オンラインでお試しください。

両方とも1ベース n番目の値。

それがないので、05AB1Eのレガシーバージョンを使用する½増加counter_variableスタックのトップがtruthyである場合1によって暗黙の各反復後に)µ-loopsは(つつcounter_variableに等しくありませんaまだ、してください...)。

説明:

Î            # 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.