ひねりを加えた素数


13

注:これは、この質問に大きく影響を受けています

仕事:

あなたの仕事はn、プログラムの各文字がn所定の位置で繰り返されるときに、thプライムを生成することです。

あなたのプログラムが次のようだとしましょう:

Derp

そこにあるすべての文字が1回繰り返されるため、が出力されるはず2です。

次のように、すべての文字が所定の場所に複製される場合:

DDeerrpp

これにより、2番目の素数が生成され3ます。

仕様:

  • プログラムは入力を受け入れず、それぞれの素数を出力する必要があります。
  • プログラムは、十分な時間とメモリがあれば、すべての素数で機能する必要があります。
  • 先頭と末尾の改行は問題ありません。
  • 出力は、言語のデフォルトのベースである必要があります-デフォルトがない場合は、どのベースでも構いません。

これはなので、バイト単位の最短コードが優先されます。


6
あなたのプログラムは、十分な時間とメモリがあれば、すべての素数で機能しなければなりませんたとえば、Cでintを使用できないということですか?
デニス

回答:


21

ゼリー、13バイト

“Ŀo‘’FQỌµḟ;¹V

オンラインでお試しください!または、最初の10個のプログラムを実行します

バックグラウンド

Jellyには、いくつかの異なるタイプの文字列リテラルがあります。それらはすべてで始まります。リテラルに複数が含まれる場合文字列配列が返され、文字列が互いに分離されます。

例えば、 “abc“def” yields ['abc', 'def']

(いずれかのリテラルの最後の文字に応じて”«»‘’場所を、«現在実装されていない)、1はリテラルの異なる種類の間で選択することができます。ために、我々は、コード・ポイントを取得ゼリーのコード・ページの代わりに、対応するUnicode文字。

たとえば、“abc“def‘ yields [[97, 98, 99], [100, 101, 102]]

最初の3つのプログラムのリテラルは、次のコードポイント配列に対応しています。

“Ŀo‘           -> [199, 111]
““ĿĿoo‘        -> [[], [199, 199, 111, 111]]
“““ĿĿĿooo‘     -> [[], [], [199, 199, 199, 111, 111, 111]]

仕組み(n = 3

“““ĿĿĿooo‘‘‘’’’FFFQQQỌỌỌµµµḟḟḟ;;;¹¹¹VVV  Main link. Implicit argument: 0

“““ĿĿĿooo‘                               Yield the 2D array
                                         [[], [], [199, 199, 199, 111, 111, 111]].
          ‘‘                             Increment twice, yielding
                                         [[], [], [201, 201, 201, 113, 113, 113]].
            ’’’                          Decrement thrice, yielding
                                         [[], [], [198, 198, 198, 110, 110, 110]].
               F                         Flatten, yielding
                                         [198, 198, 198, 110, 110, 110].
                FF                       Twice more. Does nothing.
                  Q                      Unique; yield [198, 110].
                   QQ                    Twice more. Does nothing.
                     Ọ                   Unordinal; convert the Unicode code points
                                         198 and 110 to 'Æ' and 'n'.
                      ỌỌ                 Twice more. Does nothing.
                        µµµ              Begin three monadic chains, all with
                                         argument s := "Æn".
                           ḟ             Filter-false; remove the characters of s
                                         from s, yielding "".
                            ḟḟ           Twice more. Does nothing.
                              ;;;¹       Concatenate with s three times, yielding
                                         "ÆnÆnÆn".
                                  ¹¹     Identity function. Does nothing.
                                    V    Eval the resulting Jelly code, i.e.,
                                         call the next-prime atom thrice, with
                                         initial implicit argument 0.
                                     VV  Eval two more times. This is a no-op
                                         on integers.

1
これは間違いなく説明が必要です...そしてそれがどのようにレイアウトされているかによって、それがこれを行うことができる唯一の言語かもしれません?
バリューインク

6
何...どうやって?それは単純に速すぎます。
clismique

@ValueInk回答を編集しました。
デニス

21

GS2(コミット67fea47)、6 3バイト

dnR

使い方

ほとんどのコマンドと同様に、GS2 dはオーバーロードされています。最初は、スタックに空のリスト(入力またはその欠如)があるためd、その合計を計算します。最初の反復の後、スタックに0があり、dそのパリティ(0も)を計算します。したがって、何度繰り返してdも、結果は常に単一になります 0になります。

次の部分は簡単です。このコマンドnは、スタックの一番上をポップし、次の素数をプッシュします。したがって、kを繰り返すn 倍して計算し、Kを プライム。

最後に、コマンドは単純にstrをスタックの先頭に適用します。これは、数値を文字列表現に変換し、文字列には影響しません。したがって、何度繰り返してもRも、結果はkの文字列表現になります プライム。


2
一体全体!?
-downrep_nation

3
蘇生しないでください
デジタル外傷
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.