トリニティホールプライムを出力する


38

このMath.SEの質問に基づきます。この回答からコピーされた番号。もともとNumberphileビデオから番号。

あなたの仕事は、次の1350桁の素数を出力することです。

888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

オプションで、出力に改行を含めることができます。

ルール

  • これはなので、入力はありません。
  • プログラムは、標準のコンピューターで1時間以内に終了する必要があります。近い場合は、テスト用に使用します。プログラムが1分以上実行されるか、TIOで終了しない場合は、コンピューターの時間を含めてください。
  • これはであるため、バイト単位の最短コードが優先されます。

3
「元々はナンバーマニアのビデオからの番号」マッキー教授の元からだと思う:P-
地下

何についてこのプライム
sergiol

回答:


31

ゼリー74 71 69 68 66バイト

“©ạ-3ṗÇñ"ỤḍV8żṢ?ḤsMVE[,Ṃƭ"ḞÇsẇʂ(ụFsẠʂẆŀṣ’ḃ19ĖŒṙị⁾81s30m0Z062 ȷ446‘

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

使い方

リテラル“©ạ-3ṗÇñ"ỤḍV8żṢ?ḤsMVE[,Ṃƭ"ḞÇsẇʂ(ụFsẠʂẆŀṣ’は、すべての文字をJellyのコードページのコードポイントに置き換え、結果を(全単射)基数250の数値として解釈し、次の整数を生成します。

103877200905186099028820568168804302565394743652609510039112658230540917082292838565138059974

次に、ḃ19この数値を全単射の基数19 に変換し、次の数字配列を生成します。

16,14,18,12,19,11,3,12,5,10,3,14,4,9,3,15,4,8,3,6,6,4,4,7,3,4,10,3,4,6,3,3,12,3,4,5,3,2,14,3,4,4,3,7,9,4,3,4,3,8,9,4,3,3,3,9,8,4,4,2,3,9,8,5,3,2,3,9,8,6,3,1

ここでĖŒṙ、数字を列挙し、ランレングスデコードを実行して、次の配列を生成します。

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,14,14,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,20,20,20,20,20,20,21,21,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,24,24,25,25,25,26,26,26,26,27,27,27,27,27,27,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,30,30,31,31,31,32,32,32,33,33,33,33,33,33,33,33,33,33,33,33,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,38,38,39,39,39,39,39,39,39,39,39,39,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,43,43,43,44,44,44,44,44,44,44,45,45,45,45,45,45,45,45,45,46,46,46,46,47,47,47,48,48,48,48,49,49,49,50,50,50,50,50,50,50,50,51,51,51,51,51,51,51,51,51,52,52,52,52,53,53,53,54,54,54,55,55,55,56,56,56,56,56,56,56,56,56,57,57,57,57,57,57,57,57,58,58,58,58,59,59,59,59,60,60,61,61,61,62,62,62,62,62,62,62,62,62,63,63,63,63,63,63,63,63,64,64,64,64,64,65,65,65,66,66,67,67,67,68,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,72

次に、ị⁾81文字列81にインデックスを付け、奇数を文字8に、偶数を文字1に置き換えます。その後、s30結果を長さ30のチャンクに分割します。行ごとに1つのチャンクを表示すると、結果は次のようになります。

888888888888888811111111111111
888888888888888888111111111111
888888888888888888811111111111
888111111111111888881111111111
888111111111111118888111111111
888111111111111111888811111111
888111111888888111188881111111
888111188888888881118888111111
888111888888888888111888811111
888118888888888888811188881111
888111111188888888811118881111
888111111118888888881111888111
888111111111888888881111888811
888111111111888888881111188811
888111111111888888881111118881

ここで、m0チャンクの配列をそれ自体の逆のコピーと連結します。その後、Z結果を圧縮し、行と列を入れ替えます。

888888888888888888888888888888
888888888888888888888888888888
888888888888888888888888888888
888111111111111111111111111888
888111111111111111111111111888
888111111811111111118111111888
888111118811111111118811111888
888111188811111111118881111888
888111188811111111118881111888
888111888811111111118888111888
888111888881111111188888111888
888111888888111111888888111888
888111888888888888888888111888
888111888888888888888888111888
888111888888888888888888111888
888811188888888888888881118888
188811188888888888888881118881
188881118888888888888811188881
118888111888888888888111888811
111888811118888888811118888111
111188881111111111111188881111
111118888111111111111888811111
111111888811111111118888111111
111111188881111111188881111111
111111118888811118888811111111
111111111888881188888111111111
111111111118888888811111111111
111111111111888888111111111111
111111111111118811111111111111
111111111111111111111111111111

0は解析できないniladであるため、beforeの結果が(改行なしで)印刷され、戻り値が0に設定されます

62別の解析不可能なniladであるため、before(0)の結果が出力され、戻り値は62に設定されます。

ȷ446もう一つの不可解なniladです。62が出力され、戻り値は10 446に設定されます。

最後に、結果をインクリメントします。プログラムが終了すると、最終結果(10 446 + 1)が出力されます。


クールな説明を追加してください:D
HyperNeutrino

@HyperNeutrino、一部のミラーリングそこに行くか、そのようなものだ(しかし、ゼリーの知識の私の完全な欠如と)出力に基づいて
スティーブン

1
@Stephenまあ私は最初にそれはいくつかの空想的な数字であり、次に「全単射ベースの何か」に変換することを意味します(それが意味するものは何でも、私はそれを理解します)、次に列挙し、次にランレングス、そして[8, 1]...ああ、それは賢い!私はこのトリックを盗んでいますが、気にしないでください:)))そして、そういう奇妙な06210..01のものをすべて追加します。素敵な:)
HyperNeutrino

2
@HyperNeutrino説明を追加しました。
デニス

「グラフィックス」だけに賛成票を投じました。これはかなり甘いです、私はゼリーを理解したい:)
pinkfloydx33

7

SOGL V0.1281 78 75 73 バイト

$!╚Qαūπōθ(└↓Υ8Π⁶!√|ΠΚψ░⅜Υ‛⁷>∙↓ts3]δεΧ‰“8«─'½Κ81¹¹I⌡_¹◄ø∑'¹n╬³0621"η“⌡01⁰∑

ここで試してみてください!

説明:

...“                 push a big number of the RLE lengths of the top part
    8«─              convert from base 10 to base 16 (15 was the max length, and making it base 15 wasn't worth it)
       '½Κ           prepend to the array 48
          81¹        push [8, 1]
             ¹       wrap those two in an array
              I      rotate clockwise, resulting in [[8, 48], [1, 2], [8, 9], [1, 12], ...]
               ⌡_¹   flatten (iterate over, splat current items contents on stack, collect the contents in an array)
                  ◄  run-length decode

ø∑                   join as a string
  '¹n                split into lines of length 15
     ╬³              palindromize horizontally with no overlap
       0621          push 0, 6, 2, and 1
           "η“       push 445
              ⌡      that many times do
               0       push 0
                1    push 1
                 ⁰∑  join the stack together in a string

6

ゼリー、136バイト

“ßṪṭAƭẠvµM⁾ṖOḥ⁻Ɠ×Ṣ~*pṭẒFỵṿ¦4ÇḟọLÑOcKɲ⁶2*Ḣɲ’b45;@€1ẋ/€ø“Œ\⁴rrNỊġ:,xƙŒ#ṠƲQçḷĠ%&⁻ɼiḂŀB<Ȧƈg(Ṇb>TḥḄ|ḃṘƬ#l7ƇØṃ’b94;@€8ẋ/€ðżF;0;6;2;1;0ẋ445¤;1Ḍ

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

説明(短縮番号)

“ßṪṭ...*Ḣɲ’b45;@€1ẋ/€ø“Œ\⁴...ƇØṃ’b94;@€8ẋ/€ðżF;0;6;2;1;0ẋ445¤;1Ḍ  Main link
“ßṪṭ...*Ḣɲ’b45;@€1ẋ/€                                             Run-length encoded 1s
“ßṪṭ...*Ḣɲ’                                                      The base-45 encoding of the list of the run-lengths of 1s
           b45                                                    in base 45
                €                                                 For each element
              ;@                                                  prepend
                 1                                                1
                    €                                             For each sublist
                   /                                              Reduce over
                  ẋ                                               Repeat list (this gets a bunch of lists of 1s)
                     ø“Œ\⁴...ƇØṃ’b94;@€8ẋ/€                       Run-length encoded 8s
                      “Œ\⁴...ƇØṃ’                                 The base-94 encoding of the list of the run-lengths of 8s
                                 b94                              in base 94
                                      €                           For each element
                                    ;@                            prepend
                                       8                          8
                                          €                       For each sublist
                                         /                        Reduce over
                                        ẋ                         Repeat list (this gets a bunch of lists of 8s)
                                           ðżF;0;6;2;1;0ẋ445¤;1Ḍ  With both of the previous lists of lists, construct the final string
                                            ż                     Interleave them
                                             F                    Flatten it
                                              ;0                  Append 0
                                                ;6                Append 6
                                                  ;2              Append 2
                                                    ;1            Append 1
                                                      ;           Append
                                                       0ẋ445¤     (Nilad)
                                                       0          0
                                                        ẋ445      445 times
                                                             ;1   Append 1
                                                               Ḍ  Convert decimal digits to a number

-121バイト“...’、通常の数字の代わりにリテラルを使用するデニスのおかげ


“...’リテラルは大量のバイトを節約します。tio.run/...
デニス・

@Dennis Ohそうだね、もっと読めない。綺麗な!ありがとう!:D
HyperNeutrino

0;6;2;1;非常に冗長です。
魔法のタコUr

@MagicOctopusUrnうん、たぶんかなり短くできた。いつか調べます:P
HyperNeutrino

6

ゼリー 133 84  73バイト

“÷iþṃL7[ḲʂƘⱮ=ƬƤ¬`RẹŀẹY÷n£ị€ıø&ḟ"gPƲ_ÇḊṪ’b⁴48;ĖŒṙḂ×7‘s15m€0F;“¡©£¢‘Ḍ×ȷ446‘

オンラインでお試しください!(フッターは、紋章を生成する寸法で10進数をフォーマットします)。

どうやって?

アームのコートの左側のバイナリ形式のランレングス符号化された形式8sおよび11行前までは、開始0621と反射0621添加し、その後に巻き掛け10 446およびインクリメント。

“...’b⁴48;ĖŒṙḂ×7‘s15m€0F;“¡©£¢‘Ḍ×ȷ446‘ - Link: no arguments
“...’                                  - base 250 number
     b⁴                                - to base 16
       48;                             - prepend a 48
          Ė                            - enumerate [[1,48],[2,12],[3,3],[4,12],[5,3],...
           Œṙ                          - run-length decode (48 1s then 12 2s then ...)
             Ḃ                         - modulo by 2 (vectorises) evens->0 odds->1
              ×7                       - multiply by 7 (vectorises)
                ‘                      - increment (vectorises) - now all 8s and 1s
                 s15                   - split into chunks of length 15
                    m€0                - reflect each chunk
                       F               - flatten
                         “¡©£¢‘        - code-page indices = [0,6,2,1]
                        ;              - concatenate
                               Ḍ       - from decimal list to number
                                 ȷ446  - 10^446
                                ×      - multiply
                                     ‘ - increment


4

プロトン、368バイト

s=(map("8"&(*),[93,6,6,1,1,6,2,2,6,3,3,6,3,3,6,4,4,6,5,5,6,6,6,6,18,6,18,6,18,7,16,4,3,16,3,4,14,4,4,12,4,4,8,4,4,4,4,4,4,4,4,4,5,5,5,5,8,6,2]),map("1"&(*),[24,24,6,10,6,5,10,5,4,10,4,4,10,4,3,10,3,3,8,3,3,6,3,3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,3,3,5,4,4,7,14,9,12,11,10,13,8,15,4,17,2,20,23,26,44]))
q=''.join(s[0][i]+s[1][i]for i:0..len(s[0]))
print(q+'0621'+'0'*445+'1')

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


4

ルビー、180バイト

s=0;"".unpack('H*')[0].split(?f).map{|a|a.chars.map{|c|s^=2**c.to_i(16)};t=("%015b"%s).gsub ?0,?8;$><<t+t.reverse};puts'0621'+?0*445+?1

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

178バイト+ 2バイト-Kn(強制的にASCIIエンコード)

最初の引用符の間にある43個のほとんど印刷できない文字。Hexdump:

00000000: 733d 300a 22ff f012 3456 789a bff5 f6f7  s=0."...4Vx.....
00000010: ff8f 4f3f 012f ff8b fef7 af69 df45 8cf0  ..O?./.....i.E..
00000020: 1237 bf6a f59f 48f2 37f1 6f04 5f3f 12f0  .7.j..H.7.o._?..
00000030: 222e 756e 7061 636b 2827 482a 2729 5b30  ".unpack('H*')[0
00000040: 5d2e 7370 6c69 7428 3f66 292e 6d61 707b  ].split(?f).map{
00000050: 7c61 7c61 2e63 6861 7273 2e6d 6170 7b7c  |a|a.chars.map{|
00000060: 637c 735e 3d32 2a2a 632e 746f 5f69 2831  c|s^=2**c.to_i(1
00000070: 3629 7d3b 743d 2822 2530 3135 6222 2573  6)};t=("%015b"%s
00000080: 292e 6773 7562 203f 302c 3f38 3b24 3e3c  ).gsub ?0,?8;$><
00000090: 3c74 2b74 2e72 6576 6572 7365 7d0a 7075  <t+t.reverse}.pu
000000a0: 7473 2730 3632 3127 2b3f 302a 3434 352b  ts'0621'+?0*445+
000000b0: 3f31                                     ?1

どうやって?

他の皆がランレングスエンコーディングを行っていたので、私は別の何かを試してみたかったです。

プライムのフォーマットされた「画像」バージョンは、2つの部分に分けることができます-8と1の30x30グリッド、およびハードコード化できるほとんどゼロの2番目のセクション。最初の部分に注目すると、それは中央で対称的であるため、左半分を作成できる場合は、各行の半分を逆に印刷するだけです。

1行の半分は15文字です。8をゼロに置き換えると、各行は15ビットの2進数として解釈できます。便利なことに、ほとんどの場合、連続する各行間の編集距離は小さいため、最初の行s888888888888888、ちょうど0になります)を保存し、一連のビット反転操作を適用してs、結果を毎回印刷することでソリューションを実装することにしました。

各行は15ビット長であるため、これらの操作を16進数としてエンコードしました。たとえば、操作がb(または11)の場合、ビット11を反転します。桁。1つ残っているfので()、これらの文字列間の区切り文字として、また「何もしない」値として使用できます。以下の例(質問で参照されている投稿でこれらの行を見ることができます):

Line 3: 000000000000000
Line 4: 000111111111111  <-- flip bits 0 through b
Line 5: 000111111111111  <-- do nothing
Line 6: 000111111011111  <-- flip bit 5

それをすべてまとめるために、エンコード0123456789abしてから分離しf、で何もせずにf、で処理し5ます。この作品は、私たちがやろうとしているので、.split(?f)得られますラインによる操作、それぞれのセットを取得するために後で["0123456789ab", "", "5"]、かつ""無操作できなくなります。

上記の行3と4の違いは、編集の最も長いセットであり、2つの連続する行の間の編集距離は通常0から2です。したがって、このエンコードは合理的に安価であると言えます。改善されます。

エンコードされた文字列全体がfff0123456789abff5f6f7ff8f4f3f012fff8bfef7af69df458cf01237bf6af59f48f237f16f045f3f12f0(86バイト)になり、30x30グリッド全体になります。しかし、まだ完了していません...

16進数字は4ビット(b-> 1100など)で表すことができます。つまり、バイトを使用するのではなく、一度に4ビットずつ文字列をエンコードする場合、文字列の長さを半分に削減できます。それが私がしたことです-hexdumpは43バイトで表される文字列を示しています。その後は、Rubyの気の利いたString#unpack使用してH*(16進文字列として解釈し、最初に上位ニブル)、43バイトの文字列を86バイトバージョンに拡張し、各操作セットをループするだけです。フリップビット-私たちの保存された文字列のs操作c我々が行うs ^ 2**c.to_i(16)対応するビットを反転します。

編集の各セットが完了した後、結果のバイナリを15ビットにパディングし、すべての0を8に戻し、結果とその逆を出力します。前述したように、30x30グリッドの後の数値の部分はハードコーディングできるため、これをとして行いますputs'0621'+?0*445+?1

最終的にエンコードされた文字列はTIOで動作する可能性がないため、TIOバージョンはエスケープを使用しますが、エスケープはまだ機能しますが、より長くなります。


3

Pythonの2760の 523 329 205 196バイト

スティーブンのおかげで-237バイト。ジョナサンフレッチのおかげで-124バイト。

print''.join((ord(j)-34)*'81'[i%2]for i,j in enumerate(":(:((#,#(('$,$'(&%,%&(&%,%&(%&,&%(%'*'%(%(((%(%4%(%4%(%4%)%2%&#%%2%%$&%0%&%&%.%&'&&*&&)&0&+&.&-&,&/&*&1'&'3'$'6*9(<$N"))+'0621'+'0'*445+'1'

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


526バイトの変数を宣言し8、および1と組み合わせ621
スティーブン

ああ。XDを自動化したばかりなので、が表示されませんでした621。ありがとう!
完全に人間

2
リストを圧縮して205バイト。印刷可能なバイトのみを使用する場合はさらにいくつか。
ジョナサンフレッチ

2

CJam、532の 412 340 231 210 209バイト

"。$ MBZp&8OIoLs7Rv / BEqN#1r〜E $ O%6 ^ UO = \ z:(Iw] l \ LQ.g.aWf + {2; on | YP'y $:Lc $ i $ GMCg&mRs#y0 * z` Z、C | Hf6; b / o-0 | FNK5R:OIi} {'`CJ} LOXMSA、&vzl5scm5y0 {om = A _#/ wF"'#fm92bs:A; "6NLkB)h%@ {u`hp_v + YK "'#fm92bYb2f + {[A /(\ s:A;)]}%e〜' 0445 * 1

オンラインで試す

ランレングスエンコーディングはベース92から拡張されました(ベース250はマルチバイト文字につながるため、調整する必要がありました)。また、4341089843357287864910309744850519376ベース92から展開され、バイナリに変換されます。1はランレングスが2桁であることを意味し、0は1桁であることを意味します。たとえば、バイナリ表現の最初の4桁は1101です。これは、最初の4つの実行が[93,8],[24,1],[6,8],[24,1](93 8、24 1など)であるためです。


2

JavaScriptを、454の 450 332 207 204バイト

スティーブンのおかげで-4バイト。ShaggyとDom Hastingsのおかげで-125バイト。

_=>[...`]






,`].map((j,i)=>'81'[i%2].repeat(j.charCodeAt())).join``+0+621+"0".repeat(445)+1

この回答には大量の印刷できないものがあるので、16進ダンプを次に示します。

00000000: 5f3d 3e5b 2e2e 2e60 5d18 0618 0606 010a  _=>[...`].......
00000010: 0106 0605 020a 0205 0604 030a 0304 0604  ................
00000020: 030a 0304 0603 040a 0403 0603 0508 0503  ................
00000030: 0603 0606 0603 0603 1203 0603 1203 0603  ................
00000040: 1203 0703 1003 0401 0303 1003 0302 0403  ................
00000050: 0e03 0403 0403 0c03 0405 0404 0804 0407  ................
00000060: 040e 0409 040c 040b 040a 040a 0408 040f  ................
00000070: 0504 0511 0502 0514 0817 061a 022c 605d  .............,`]
00000080: 2e6d 6170 2828 6a2c 6929 3d3e 2738 3127  .map((j,i)=>'81'
00000090: 5b69 2532 5d2e 7265 7065 6174 286a 2e63  [i%2].repeat(j.c
000000a0: 6861 7243 6f64 6541 7428 2929 292e 6a6f  harCodeAt())).jo
000000b0: 696e 6060 2b30 2b36 3231 2b22 3022 2e72  in``+0+621+"0".r
000000c0: 6570 6561 7428 3434 3529 2b31            epeat(445)+1

f=
_=>[...`]






,`].map((j,i)=>'81'[i%2].repeat(j.charCodeAt())).join``+0+621+"0".repeat(445)+1

document.write(f())


関数から値を返すことは有効だと思います。
スティーブン

ああ、そうですね。HTMLパートもお願いします。:PIはこのことの多くを真剣に知りません。きちんとした正規表現の置き換えのためにJSを選択しました。編集:ありがとう。:D
完全に人間

最後の引用符を否定することができます。それは+'1'すでにaでStringあり、!+'0621'+0+621
ドムヘイスティングス

1
222バイト -最後の1つ、約束します!
シャギー

3
[...`]私はそんなに怒っ作る
ETHproductions

2

JavaScriptの(ES6)、206 205 204 203の 198 197 194バイト

i cri everytimのソリューションに取り組んでいるときにこれに気づき、それが自分で投稿することを保証するのに十分異なると考えました。

これには、]との間の印刷不可能なものが含まれます。その,ため、以下のTIOリンクをたどってUnicodeエスケープで表示します(各\u4桁のシーケンスは1バイトとしてカウントされます)。

_=>`],0621ƽ1`.replace(/\D/g,(x,y)=>"810"[y<122?y&1:2].repeat(x.charCodeAt()))

オンラインで試す


2

MATLAB / Octave319 318バイト

これがこの挑戦の私の最初の試みです。まだ少し大きく、おそらくそれを行うより効率的な方法がありますが、メソッドは単に圧縮するよりも面白いので、とにかく投稿したいと思いました。

for i=reshape('|871%871%8%1 8)1 8%1%8$1!8)1!8$1%8#1"8)1"8#1%8#1"8)1"8#1%8"1#8)1#8"1%8"1$8''1$8"1%8"1%8%1%8"1%8"118"1%8"118"1%8"118"1&8"1/8"1#8 1"8"1/8"1"8!1#8"1-8"1#8"1#8"1+8"1#8$1#8#1''8#1#8&1#8-1#8(1#8+1#8*1#8)1#8,1#8''1#8.1$8#1$801$8!1$831''861%891!8K1 0 6 2 1~0~0~0~0`0 1',2,[]);fprintf(repmat(i(2),1,i(1)-31));end

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

ここで使用される方法は、ソートのRun-Length-Encodingスキームを使用することです。

元の数字から始めて、連続する数字の数を数えます。これらは、カウントの直後に数字が続くように以下の結果に書き込まれます(わかりやすくするためにスペースを区切ります)。

938 241 68 241 68 61 8 101 8 61 68 51 28 101 28 51 68 41 38 101 38 41 68 41 38 101 38 41 68 31 48 101 48 31 68 31 58 81 58 31 68 31 68 61 68 31 68 31 188 31 68 31 188 31 68 31 188 31 78 31 168 31 48 1 38 31 168 31 38 21 48 31 148 31 48 31 48 31 128 31 48 51 48 41 88 41 48 71 48 141 48 91 48 121 48 111 48 101 48 131 48 81 48 151 58 41 58 171 58 21 58 201 88 231 68 261 28 441 0 6 2 1 4450 1

値のいずれかが95より大きい場合、95以下の複数のチャンクに分割します。これは、445 0でのみ発生し、代わりに95 0の4セットと65 0のセットになります。また、すべての要素を3文字にするために、10未満のカウントには0が埋め込まれます。これにより、スペースが削除されます。

938241068241068061018101018061068051028101028051068041038101038041068041038101038041068031048101048031068031058081058031068031068061068031068031188031068031188031068031188031078031168031048011038031168031038021048031148031048031048031128031048051048041088041048071048141048091048121048111048101048131048081048151058041058171058021058201088231068261028441010016012011950950950950650011

この時点で後知恵で、私はそれをすべて統合する前にこのステップを実行できたかもしれませんが、あなたは生きて学びます。各グループのカウント(2桁)を取得するという巧妙な処理を行い、31を追加します。それらはすべて<96であるため、結果の数値は印刷可能な文字のASCII値(32〜126)です。私たちに以下を数えます:

|7%7%% ) %%$!)!$%#")"#%#")"#%"#)#"%"$'$"%"%%%"%"1"%"1"%"1"&"/"# ""/""!#"-"#"#"+"#$##'##&#-#(#+#*#)#,#'#.$#$0$!$3'6%9!K    ~~~~` 

MATLABで少し整形し直してデコードに適したものにし、さらに'文字をエスケープする''(MATLABが文字列リテラルをそこに分割する)と、巧妙な文字列が残ります。

|871%871%8%1 8)1 8%1%8$1!8)1!8$1%8#1"8)1"8#1%8#1"8)1"8#1%8"1#8)1#8"1%8"1$8''1$8"1%8"1%8%1%8"1%8"118"1%8"118"1%8"118"1&8"1/8"1#8 1"8"1/8"1"8!1#8"1-8"1#8"1#8"1+8"1#8$1#8#1''8#1#8&1#8-1#8(1#8+1#8*1#8)1#8,1#8''1#8.1$8#1$801$8!1$831''861%891!8K1 0 6 2 1~0~0~0~0`0 1

これがコードのルートです。コードでは、配列を128ペアの文字を含む2D文字列に変更します。各ペアについて、最初の文字から31が減算され、2番目の文字が何度も表示されます。

結果は元の素数です:

888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

編集:

  • マジックストリングを再配置して、形状変更後に転置を削除できるようにしました。バイトを保存します。

2

05AB1E、76バイト

•ŒÆÿ¹т£Ƶ‘β\,ä¸γλaXë«Š¸þaγG(žÃÇ…»šKþÈ/?`'•20BS20öDg81s∍Ss×J30ôø.∞0D445×621s1J

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


デニスからこれを盗んだ:

888888888888888811111111111111
888888888888888888111111111111
888888888888888888811111111111
888111111111111888881111111111
888111111111111118888111111111
888111111111111111888811111111
888111111888888111188881111111
888111188888888881118888111111
888111888888888888111888811111
888118888888888888811188881111
888111111188888888811118881111
888111111118888888881111888111
888111111111888888881111888811
888111111111888888881111188811
888111111111888888881111118881

常に8と1の間で交互に変わることに注意してください。そのため、各実行の長さをカウントしました(ベース20)。

['G', 'E', 'I', 'C', 'J', 'B', '3', 'C', '5', 'A', '3', 'E', '4', '9', '3', 'F', '4', '8', '3', '6', '6', '4', '4', '7', '3', '4', 'A', '3', '4', '6', '3', '3', 'C', '3', '4', '5', '3', '2', 'E', '3', '4', '4', '3', '7', '9', '4', '3', '4', '3', '8', '9', '4', '3', '3', '3', '9', '8', '4', '4', '2', '3', '9', '8', '5', '3', '2', '3', '9', '8', '6', '3', '1']

それをすべて結合し、10を基数とする整数に変換しました。

3954184379309026812828704944878416720438306456270310298603957651230861078960874182787979106461

さらにbase-255に圧縮しました。

ŒÆÿ¹т£Ƶ‘β\,ä¸γλaXë«Š¸þaγG(žÃÇ…»šKþÈ/?`'

次に、圧縮ビットを作成した後...元の状態に戻す必要があります。

20B                                 # Back to base 20.
   S                                # Each char separate...
    20ö                             # As their base 10 values...
       Dg81s∍                       # Extend '81' to the length of the array.
             Ss×J                   # Push that many 8 or 1's as told by the array.
                 30ôø.∞             # Split by the symmetrical pattern, flip it, mirror.
                       0D445×621s1  # Create the part that doesn't fit into a pattern.
                                  J # Join whole stack together.

最終出力:

88888888888888888888888888888
88888888888888888888888888888
88888888888888888888888888888
88811111111111111111111111888
88811111111111111111111111888
88811111181111111118111111888
88811111881111111118811111888
88811118881111111118881111888
88811118881111111118881111888
88811188881111111118888111888
88811188888111111188888111888
88811188888811111888888111888
88811188888888888888888111888
88811188888888888888888111888
88811188888888888888888111888
88881118888888888888881118888
18881118888888888888881118881
18888111888888888888811188881
11888811188888888888111888811
11188881111888888811118888111
11118888111111111111188881111
11111888811111111111888811111
11111188881111111118888111111
11111118888111111188881111111
11111111888881118888811111111
11111111188888188888111111111
11111111111888888811111111111
11111111111188888111111111111
11111111111111811111111111111
11111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

2

C(gcc)、277バイト

どういうわけか、ひもを短くできると感じています。

#define F(c,n)for(c=0;c<n;c++)
i,j,k;r(d,n){F(k,n)printf("%d",d);}f(){r(8,90);F(i,128)F(j,6)r(("8111i8111i8915i8=1=i8?1Mi8?1Mi8@1mi8P1oi8p1pi8pppi8pppi8pppi@opPm?opPMOmp@Omip8@iRpR8a41a4Q81i21@1m11O1O11mR@11id811Qp2111p1111="[i]-49>>j)&1?8:1,1);r(1,42);printf("0621%0446d",1);}

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


1

Perl 5、307バイト

$d=1;print((map{($d^=9)x$_}(93,24,6,24,6,6,1,10,1,6,6,5,2,10,2,5,6,4,3,10,3,4,6,4,3,10,3,4,6,3,4,10,4,3,6,3,5,8,5,3,6,3,6,6,6,3,6,3,18,3,6,3,18,3,6,3,18,3,7,3,16,3,4,1,3,3,16,3,3,2,4,3,14,3,4,3,4,3,12,3,4,5,4,4,8,4,4,7,4,14,4,9,4,12,4,11,4,10,4,13,4,8,4,15,5,4,5,17,5,2,5,20,8,23,6,26,2,44)),0,621,0 x445,1)

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


1

バブルガム、88バイト

00000000: edc9 310a 0250 10c4 d02b fdb1 90dc ff64  ..1..P...+.....d
00000010: 96c1 80a2 8885 60aa d97d 7cb3 3de8 75c5  ......`..}|.=.u.
00000020: 37ab 820a 51ee 9537 942a 55c4 aaec 76b4  7...Q..7.*U...v.
00000030: cfb5 1cdc 33dd 908b ac1c 74a0 894e 03c8  ....3.....t..N..
00000040: 11cc 99ab 9c1d c661 32c5 bad6 8aad 96d2  .......a2.......
00000050: b95e 76fe fd6e bb01                      .^v..n..

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


1

ルビー、194バイト

$><<?8+"~:(:((#,#(('$,$'(&%,%&(&%,%&(%&,&%(%'*'%(%(((%(%4%(%4%(%4%)%2%&#%%2%%$&%0%&%&%.%&'&&*&&)&0&+&.&-&,&/&*&1'&'3'$'6*9(<$N".bytes.reduce(""){|s,x|s+(s[-1]==?8??1:?8)*(x-34)}+"0621"+?0*445+?1

上部はRLEエンコードされ、残りは単純にハードコードされています。

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


1

コトリン、339バイト

val s="8J188J1888138<13881887148<14871886158<15861886158<15861885168<16851885178:178518851888188518851D8518851D8518851D8519851B85168315851B85158416851@85168516851>85168716861:861689168@168;168>168=168<168?168:168A1786178C1784178F1:8I188L148^130363231ǯ031"
fun x()=(0..s.length-1 step 2).map{i->(1..(s[i].toInt()-50)).map{print(s[i+1])}}

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


1

CJam(108 81バイト)

"u{èl>`#ö^½³ó!;kMðSÀËndEyvY3ÉÊÅBà#®"256bFbee{)*~}%"81"f=15/_Wf%zT6Y446,:!1

オンラインデモ

文字エンコードが上記を妨げる場合、ここではxxdエンコードされます。

0000000: 2275 1e7b e86c 3e60  8d23 80f6 5ebd b3f3  "u.{.l>`.#..^...
0000010: 213b 968d 6b4d f053  c0cb 6e64 1c45 7976  !;..kM.S..nd.Eyv
0000020: 5933 c9ca 8dc5 42e0  23ae 2232 3536 6246  Y3....B.#."256bF
0000030: 6265 657b 292a 7e7d  2522 3831 2266 3d31  bee{)*~}%"81"f=1
0000040: 352f 5f57 6625 7a54  3659 3434 362c 3a21  5/_Wf%zT6Y446,:!
0000050: 31                                        1

8秒と1秒の最初の実行は、左半分だけに分割され、実行長は交互の実行の長さとしてエンコードされます。24を超えるランは、0のランで区切られた最大24のランに分割されるため、長さをベース25エンコードし、次にベース256エンコードしてそれらを圧縮できます。


1

JavaScript(ES2017)、287バイト

_=>"00000000000000000027wr2027wr2027a9ko261b7c23jerc23jerc1yjm0o1y8coo1y2ou01xx5q01xx5q01xx5q00yykxc9ull699d4au9dk75xffo1v2fgptj4fh8jrj3hhwvgfhmlev3hour5rhq24n3hqytj3hr4hdrhr8ykfhra0hr".replace(/.{6}/g,n=>parseInt(n,36).toString(2).replace(/0/g,8).padStart(30,8))+0+621+"0".repeat(445)+1

@icrieverytimの答えにわずかに異なるアプローチを使用します。-10に感謝をバイト@Shaggy使用の提案replaceの代わりにmatch

f=
_=>"00000000000000000027wr2027wr2027a9ko261b7c23jerc23jerc1yjm0o1y8coo1y2ou01xx5q01xx5q01xx5q00yykxc9ull699d4au9dk75xffo1v2fgptj4fh8jrj3hhwvgfhmlev3hour5rhq24n3hqytj3hr4hdrhr8ykfhra0hr".replace(/.{6}/g,n=>parseInt(n,36).toString(2).replace(/0/g,8).padStart(30,8))+0+621+"0".repeat(445)+1
;
p.innerHTML=f()
pre{word-wrap:break-word;white-space:normal}
<pre id=p></pre>





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