Areciboメッセージを出力する


38

アレシボメッセージは、地球外の知性がそれを受信して​​解読することを期待して、球状星団M13に送信された人類と地球に関する基本情報を伝える1974年の星間電波メッセージです...

数値1,679が選択されたのは、73行23列の長方形に配置される半素数(2つの素数の積)であるためです。23行73列の代替配置では、理解できない文字セットが生成されます(他のすべてのX / Y形式と同様)。

アレシボメッセージ

これは、個別の部分を強調するために色が追加されたメッセージです。実際のバイナリ伝送には色情報は含まれていません。

ソース:ウィキペディア


あなたの仕事は、画像に示されている正確な23x73配列でAreciboメッセージを出力することです。これらの出力形式はいずれも受け入れられます。

  • 1つの文字に1つの文字を使用し、ゼロに別の文字を使用するテキスト(行の分離に通常のルールを使用)
  • 2つの異なる値の2D配列
  • 2つの異なる色の23x73画像
  • 2つの異なる値を持つ1679項目の連続したストリーム(つまり、上記の形式のいずれかですが、フラット)。
  • 1679ビットの整数。ソリューションでビットとバイトの順序(エンディアン)を示します。

便宜上、コピーアンドペースト可能なバージョンを次に示します(テキスト形式での出力例もあります)。

00000010101010000000000
00101000001010000000100
10001000100010010110010
10101010101010100100100
00000000000000000000000
00000000000011000000000
00000000001101000000000
00000000001101000000000
00000000010101000000000
00000000011111000000000
00000000000000000000000
11000011100011000011000
10000000000000110010000
11010001100011000011010
11111011111011111011111
00000000000000000000000
00010000000000000000010
00000000000000000000000
00001000000000000000001
11111000000000000011111
00000000000000000000000
11000011000011100011000
10000000100000000010000
11010000110001110011010
11111011111011111011111
00000000000000000000000
00010000001100000000010
00000000001100000000000
00001000001100000000001
11111000001100000011111
00000000001100000000000
00100000000100000000100
00010000001100000001000
00001100001100000010000
00000011000100001100000
00000000001100110000000
00000011000100001100000
00001100001100000010000
00010000001000000001000
00100000001100000000100
01000000001100000000100
01000000000100000001000
00100000001000000010000
00010000000000001100000
00001100000000110000000
00100011101011000000000
00100000001000000000000
00100000111110000000000
00100001011101001011011
00000010011100100111111
10111000011100000110111
00000000010100000111011
00100000010100000111111
00100000010100000110000
00100000110110000000000
00000000000000000000000
00111000001000000000000
00111010100010101010101
00111000000000101010100
00000000000000101000000
00000000111110000000000
00000011111111100000000
00001110000000111000000
00011000000000001100000
00110100000000010110000
01100110000000110011000
01000101000001010001000
01000100100010010001000
00000100010100010000000
00000100001000010000000
00000100000000010000000
00000001001010000000000
01111001111101001111000

何らかの理由でご使用の言語にAreciboメッセージの組み込み機能がある場合、その組み込み機能を使用しないでください。

がんばろう!

更新:05AB1Eの回答は、元のメッセージよりも短い最初の回答だったため、受け入れました。それで新しいソリューションを思いとどまらせないでください。

更新2019-09-09:受け入れられた回答は、以前の05AB1Eの回答を廃止するため、新しい05AB1Eの回答に移動しました。以前の更新と同じポイントがあります。新しいソリューションは引き続き歓迎します。


9
:言語はアレシボメッセージのために建てられ、私はこの世界cのすべてを見てきたことを、すべて確実に、伝えることができている場合
ルイス・フェリペ・デ・イエスムニョス

6
Mathematica(IIRC)にはLenaのイメージが組み込まれているので、Ariceboメッセージも含まれていても驚かないでしょう。
ビーフスター

@RobertS。いいえ、テキスト以外の有効な形式があるためです。
ビーフスター

4
元の形式の精神では、フラットな結果/出力を許可する必要があります。1679ビットのポイントは、正確な行と列の数が信号長から推測できることです。
アダム

4
@LuisfelipeDejesusMunoz Mathematicaは組み込み持つ絵でヤギを決定するためのアレシボメッセージの組み込みが本当にどちらか私は驚かないように、その言語は、宇宙の組み込みコマンドの上に構築されてい.. ..>>。
ケビンCruijssen

回答:


2

05AB1E、182バイト

•sv¯ö¨₁ÿ.ÛïžôΔ¨γ_Ígv…=Bм„Ð.(ܦi´…ε±G½0^/₃öRÛž¼¤"āêL!ˆ6‘Gā܇ðв₁÷Ã7€₂䬂Cć¨g¾†@÷[_-68¯a∍iG*6ÆîÆ;>éjζãÎÂ+ºžnî¼ć'(ÝÞΔ‹∞ÉݹÕ5λ₆*a|§oÄmôæ¨;—:hž¥ð¢ocË'¨%¡4Ćáß©ìća;FÁ?iˆèεƒʒ•Ž6–FD4‰`3ÊD?i-

オンラインでお試しください!(質問で許可されているように、10と01を使用します)。

オンラインでお試しください!(5バイト長く、00と11の場合、読みやすくするために改行が追加されました)。

コードの大部分は255を基数とする整数定数Nで、残りは75%/ 25%のハードコーディングされた確率を使用する非対称数値システムデコーダーです(0の実際の頻度は76.35%で、75%に近いため、ペイロードで1.2ビットしか節約できませんが、素晴らしく丸い75%でデコーダーで数バイトを節約できます)。

Ž6–F                  # repeat the following 1679 times:
    D                 #  duplicate N
     4‰`              #  divmod 4: pushes N / 4, N % 4 on the stack
        3Ê            #  is N % 4 != 3 ? (boolean 1 or 0)
          D?          #  print a copy
            i-        #  if it's 1, subtract: N = N - (N / 4)
                      #  (otherwise, N = N / 4, since that's the top of the stack)

定数を生成したANSエンコーダは次のとおりです。オンラインで試してください!

Î                          # start from N = 0
 Rv         ]              # for each bit in the reversed input:
   4*                      #  N *= 4
     yi                    #  if the bit is 1:
       3+                  #   N += 3
         ë                 #  else:
          3÷               #   N /= 3 (integer division)
             ₅B'•.ø        # compress N as base-255

以前の05AB1Eの回答を廃止するのは良い仕事です!
ビーフスター

13

05AB1E215の 210 200バイト

Magic Octopus Urnのおかげで15バイト節約

•cOž¤4é57ñΛ\Ö₃BαöĀíL½₅üBdoÙRθLγ¨G×Tćú$G(˜ƒ¦!€R»SDrµCnJ†d∊ζ·<8‡T@|‹ï=BζćósxG\ÙÎ$¿o₁5/ÔŸÇBûXé-”a::Ž]°∊y;ζ]MÜβ‘иL”β{üÃÇíäc€÷›ÎU=}¨иaŸdY`»¾ÚUβ:ô©¦β†₅DGŠβ3Jêθ,äá!ícqšVÖ›lÈΣ¯pε €êʃDpÙ/¬Žλ8:ãÿ3=€.Þć•3BY¾4×:

オンラインでお試しください! または追加のフォーマットを使用して

0000置き換えられたBase-255エンコードされた3進文字列2


@MagicOctopusUrn:ありがとう!それは210にさえなります:)
エミグナ

あなたが交換する場合、それはさらに良い実際だ000029つの以上のバイトで。- pastebin.com/aZ6tHxjx 201のために
マジックタコ壺

@MagicOctopusUrn:はい、私もそれを見つけて、投稿しようとしていました:)
Emigna

2
クール!Areciboメッセージは210バイト(23 * 73/8 = 209.875)なので、ソリューション(現在200バイト)はメッセージ自体よりも短くなっています!
JL

私は先に進み、これを受け入れられた答えにしました。なぜなら、それはメッセージ自体よりも短い最初のものだったからです。
ビーフスター

11

Java、688 678 590 379 361バイト

文字列を返します。

n->new java.math.BigInteger("in95mzupnpa2r0khpoepyql6ioqyn413avucdtfay6indx4wh9dehe3sn18klobtf4z9g9q17umqmwpegr2khb5eqinn7azl4jpfp2a8eui0xfrx5qwrou6gd65jh4ge3ls14k5lu7qrvmg6942ms29u5rb8fa6yrdhfoh5zoi9bdi7uh5ig0u0ff9kounth8sh357x7qox4m3oqviqsbrvakonbka4ahp21bgzi5v1akzzuqoncszhpabbru9q1uo2g11zr73iuyiqr5ikr69zn7cdv7e1lhd6ese9",36).toString(3).replace("2","0000")

生ストリームを返すことで-10バイト(古い答え)
-base 10数値を使用して-88バイト(@ceilingcatに感謝!)
-base-36エンコードBigIntegerを使用して-211バイト(@JilingJokerに感謝) !)
別のエンコードされた整数を使用して-18バイト(ありがとう@JollyJoker)

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

説明:

n->new java.math.BigInteger("base36 string",36) // Decode the base-36 integer.
   .toString(3)                                 // Re-encode as ternary
   .replace("2","0000")                         // Replace 2 with "0000"
                                                // Implicit return

1
コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
アダムリア

9

ゼリー、213バイト

“H²ɓ¶Ṡḷ€ẹ]ƒf*ḳḢ&ƁṇOḥ{ḄṫwỊ+oLạʋߢH9¢¹÷ỴɗÇ⁶ƲƙæḊẋ3³=1!VƇƁ'D⁺3Ỵɱ©⁵%fȯez#ƈjƒżṆo.ZF⁶ċṢ⁶ọṛb9Ȯƒd?ƁUĠt4ẇ,ḞġƒµƭfʠƁP§÷øȤŻPɲẋ(¢ß¢(⁽3¶ṙėɗy@ṁYȮL~e⁷ƤĊ§nỊṅµṠ°@7ẠB>Ġ⁻İ}uy¡½:esOpḢt}qS©HÞṬĖṛṇḣ9÷;ESḢ,Ẉ^ṙpƲ©tṃwçnẒṆ¡⁻Jıƒị£-&Ɱ*ẋʂżoȯÑḢɼ’

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

ハフマンコーディングを試してみましたが、余分なコードがデータサイズの改善を上回りました。そのため、これは単に目的の出力のbase-250エンコードバージョンです。出力は整数で構成され、全単射基底2としてデコードされると、1と2の1Dリストが生成されます。ルールの変更を指摘してくれた@Emignaに感謝します。

オンラインで試してください-さらにデコードして出力を実証してください!

より一般的なバイナリエンコーディングが望ましい場合、反転バイナリメッセージの整数表現をエンコードするものがあります。整数の最上位ビットは、メッセージの始まりを表します。


7

Brainfuck、2360 2008 1938バイト

-[>+<-----]>---......+.-.+.-.+.-.+.-............+.-.+.-.....+.-.+.-.......+.-.<++++[->.+.-..<]>+.-.+..-.<+++++++++[->.+.-<]>..+.-..+.-<++++++[->......<]>.+.<++[->.-...................+..-.+<]>.-..................+.-.+.-.+.-..................+.....-<++++++++[->....<]>+..-....+...-...+..-....+..-...+.-.............+..-..+.-....+..-.+.-...+..-...+..-....+..-.+<++++[->.-.+....<]>.-<+++++[->.....<]>.+.-.................+.-............................+.-.................+......-.............+.....-.......................+..-....+..-....+...-...+..-...+.-.......+.-.........+.-....+..-.+.-....+..-...+...-..+..-.+.-.+.....-.+.....-.+.....-.+.....-..........................+.-......+..-.........+.-...........+..-...............+.-.....+..-..........+......-.....+..-......+.....-..........+..-.....<+++[->........+.-<]>.....+.-......+..-.......+.-.......+..-....+..-......+.-..........+..-...+.-....+..-...............+..-..+..-.............+..-...+.-....+..-.........+..-....+..-......+.-.......+.-......+.-........+.-.....+.-<++[->.......+..-........+.-...+.-.<]>........+.-.......+.-<++++[->.....+.-..<]>..........+..-.........+..-........+..-.........+.-...+...-.+.-.+..-...........+.-.......+.-..............+.-.....+.....-............+.-....+.-.+...-.+.-..+.-.+..-.+..-......+.-..+...-..+.-..+.......-.+...-....+...-.....+..-.+...-.........+.-.+.-.....+...-.+..-..+.-......+.-.+.-.....+......-..+.-......+.-.+.-.....+..-......+.-.....+..-.+..-<+++++++[->.....<]>+...-.....+.-..............+...-.+.-.+.-..<++++++[->.+.-<]>..+...-.........+.-.+.-.+.-.+.-................+.-.+.-..............+.....-................+.........-............+...-.......+...-.<++[->........+..-...<]>....+..-.+.-.........+.-.+..-<++[->.....+..-..+..-..<]>..+.-...+.-.+.-.....+.-.+.-...+.-..<+++[->..+.-...+.-<]>........+.-...+.-.+.-...+.-............+.-....+.-.<++[->...+.-.........<]>+.-..............+.-..+.-.+.-...........+....-..+.....-.+.-..+....-...

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

私はおそらくこれをもうすぐさらにゴルフするでしょう。


5

Deadfish〜1115 1088 1084バイト

oooooo{i}ooo{d}iod{o}{i}c{d}ooiodoiodoooooiodoiodoooooooiodoo{i}c{ii}is{iiii}doooio{{{d}}}oioodooiodo{i}coooooooo{d}o{{i}}oo{{d}i}c{d}{oo}ooo{i}c{d}{o}ooioodooooooooo{i}c{d}{o}ioodoiodooooooooo{i}c{d}{o}ioodoiodooooooooo{i}c{d}oooooooooiodoiodoiodooooooooo{i}c{d}oooooooooiooooodooooooooo{i}c{d}{oo}ooo{i}c{d}ioodooooiooodoooioodooooioodooo{i}c{d}iod{o}oooioodooiodoooo{i}c{d}ioodoiodoooioodoooioodooooioodoiodo{i}c{d}iooooodoiooooodoiooooodoioooood{i}c{d}{oo}ooo{i}c{d}oooiod{o}oooooooiodo{i}c{d}{oo}ooo{i}c{d}ooooiod{o}oooooooiod{i}c{d}ioooood{o}oooioooood{i}c{d}{oo}ooo{i}c{d}ioodooooioodooooiooodoooioodooo{i}c{d}iodoooooooiodoooooooooiodoooo{i}c{d}ioodoiodooooioodoooiooodooioodoiodo{i}c{d}iooooodoiooooodoiooooodoioooood{i}c{d}{oo}ooo{i}c{d}oooiodooooooioodoooooooooiodo{i}c{d}{o}iood{o}o{i}c{d}ooooiodoooooiood{o}iod{i}c{d}iooooodoooooioodooooooioooood{i}c{d}{o}iood{o}o{i}c{d}ooiodooooooooiodooooooooiodoo{i}c{d}oooiodooooooioodoooooooiodooo{i}c{d}ooooioodooooioodooooooiodoooo{i}c{d}ooooooioodoooiodooooioodooooo{i}c{d}{o}ioodooioodooooooo{i}c{d}ooooooioodoooiodooooioodooooo

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

誰かがこれ以上ゴルフをする忍耐を持っているならば、私は事前に敬礼します。:P

-27バイト(該当する場所に10秒と100秒を印刷)。
行3に3つの1000と1つの1001を印刷して-4バイト


4

Piet、1763コーデル

0と1のストリームを出力します(改行なし)。

コーデルサイズ1:

codelサイズ1のAreciboメッセージプログラム

Codelサイズ4、見やすくするため:

codelサイズ4のAreciboメッセージプログラム

説明

  • まず、-1のセンチネル値をスタックにプッシュします。
  • 次に、ランレングスエンコーディングを使用して、Areciboメッセージを逆順にプッシュします(スタックであるため)。
  • 最後に、2つのループを交互に繰り返します。1つはゼロを出力し、もう1つはゼロを出力します。
    • ループカウンタは現在のスタック値であり、ゼロに達するまでデクリメントされます。ゼロになると破棄され、他のループに切り替えます。
    • zeroes-loopとones-loopの間で、センチネル値を確認し、見つかった場合は終了します。

ノート

プログラムは、左上から中央に向かって時計回りにらせん状の経路をたどります。ほぼ対角線に続く散在する黒いブロックがフロー制御です。NPietトレースを次に示します。

私はこのチャレンジが始まった日からこれに取り組んでいますが、メッセージに「書かれた」メッセージを入れるには少し時間がかかりました!最初に最終ループとセンチネル値を記述し、次に中央から外側に向かってメッセージを作成しました。(Pietは常に左上から実行を開始するので、余分な空白を避けるために画像をシャッフルして回転させる必要があると予想していましたが、完全に収まります!)

楽しい事実:Pietのランレングスエンコーディングは(それ自体では)スペースを節約しません。これは、かかるN一色のcodels値をプッシュするn個のスタック上、またはNスタックに多く1Sをプッシュするために、異なる色のcodels。どちらの方法でも同じ数のコーデルです。しかし、RLEが提供する大きな数値は、算術トリックを使用して(たとえば、9を押す代わりに、3を押して、複製して、乗算する)、コーデルの数を減らし、利用可能な空白を埋めるための面白い形のブロックを使用できることを意味します。

Pietエントリのスコアをカウントする方法がわかりませんでした。すべてのコーデルをカウントするように見えるものと、アクティブに使用されているもののみを明示的にカウントするものが見つかりました。私はそれらをすべて数えました。白いコーデルを無視することは(プログラムが決して移動しないものであっても)、より典型的なプログラミング言語の空白を無視することに似ています。

ああ、私はちょうど(投稿してから2時間後)これに取り組んでいる最後の時間を無駄にしていることに気付きました。ほぼ完全に白い最後の行と列を切り取りたかったので、黒いフロー制御ブロックを含め、物事をシャッフルしました。しかし、画像の端は黒と同じように機能します!覚えていれば、DPやCCの複雑さに戸惑うほど多くの時間を費やす必要はなかったでしょう...


3

C#(Visual C#Interactive Compiler)366 332 329 319バイト

int i;foreach(var g in"*ЀʂЄ࢈ҲપԤ␀␀␀؀ȀȀȀ؀␀␀సؘࠀƐഘؚ྾ߟ␀␀Ā␀␀ྀ␀␀రܘࠈഌΚ྾ߟ␀␀ă␀ྃ␀ȁăÃ1`ƀ1`ÃĂȃЃЁȂĀ`ÀƀȺ؀Ȃ␀ȏЀȗɛ'Ŀஇ7;ȅ?ȅ0ȍЀ␀␀΂␀ΨՕ΀Ŕ␀ŀЀ?܀àǀƀ`̀°٠Ƙѐʈш҈EB@Ѐޟɸ")Write(Convert.ToString(g,2).PadLeft(12-i++%2,'0'));

のすべてのインスタンスをテストする\0ために置き換えます。

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

C#(Visual C#Interactive Compiler)、305バイト、210文字

_=>"*ЀʂЄ࢈ҲપԤ␀␀␀؀ȀȀȀ؀␀␀సؘࠀƐഘؚ྾ߟ␀␀Ā␀␀ྀ␀␀రܘࠈഌΚ྾ߟ␀␀ă␀ྃ␀ȁăÃ1`ƀ1`ÃĂȃЃЁȂĀ`ÀƀȺ؀Ȃ␀ȏЀȗɛ'Ŀஇ7;ȅ?ȅ0ȍЀ␀␀΂␀ΨՕ΀Ŕ␀ŀЀ?܀àǀƀ`̀°٠Ƙѐʈш҈EB@Ѐޟɸ".Select((g,i)=>Convert.ToString(g,2).PadLeft(12-i%2,'0'))

上記と同じ、と交換し\0テストします。として出力しIEnumerable<string>ます。

オンラインで試してみてください(Jo King提供)



私は信じている++では12-i++%2(私はそれを削除したときに、少なくとも、それは私のために働いていた)NOPである
誰か

@someoneそれらは、私が削除するのを忘れていた古い答えからのコピーペーストです
無知の

2

Perl 6、368バイト

.say for :36('FJXOE0PDDNF5Y5EHGB8M9SWMXQOXIKIT9F6ZKWWDEACHCBGXL1N2H60CN0CJ4EMKF7D6MODSKYJVNR4SFTDR6NSM421LQ67B6MWF0G5BQATFOJJJBQ0UFQM64T0MWSQN41C4S5D1QR5KJM2L9UTYMMKUBBQWY45YCMRGO8ZRGTQH7LXMZBUASLCTKX30IH0AYKYEPHO8HFHX8GAY5WM38YOSUX0HABYSH2PPBLRDRZIN5ANAQ3V8PLOZ6EHC0UI95EVJVYD1820T6J14HGX85NWFQET2NWOMSNUT0JW4LHMY90X094TEE9KXJXSNN6YPERFQW').base(2).substr(1).comb(23)

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

長い文字列は、単一の36進数(先頭のゼロを保持するために1ビットの接頭辞が1つ付いた)としてのメッセージであり、一度にバイナリに変換されて23ビットずつ印刷されます。


とを使用>>.say&{S/.//}てバイトを節約できます。代わりに別のベースを使用することを考えましたか?
ジョーキング

はい、ベース65536 / Unicodeを使用しようとしましたが、メッセージはいくつかの禁止されたサロゲートコードポイントに遭遇します。各コードポイントに固定オフセットを追加することでそれを回避することができましたが、驚くべきことに、生成された文字列のいくつかがEmacsを数回クラッシュさせました。問題の解決には、私がコミットする余裕がないほど時間がかかりました。後で問題を再検討するでしょう。
ショーン

複数のバイト文字を入力しても意味がありません。バイト数が増えるためです。上からのヒントを実装し、ベース122を使用して(キャリッジリターンを回避するため)289バイト
Jo King

2

Wolfram言語(Mathematica)、383バイト

StringPartition[Uncompress@"1:eJylVNsRwjAM44s92KBaBTZgAUZhZXqtHUuOWrgjfSRRHFlO4tyer/vjfb1clq0gHirZLRjby986hppcT5p+L3BmgJ3t4Ul4GsNyG++7YbaXLh0ZTPhXa4Sn+X/s9Qfk3Hx2cOaSIuNYaVu5laschvgzSqAjHeZBhilKgKBDEhw0upJRg+HOK4MyNC29sfbc3RV0VPDqeLiRTsG1ulExq1IitpunOa7asnYM9siDZ6eidUCkEzBOUbCkGIig4aTyUGBYWAX6W6aXIWGGI/HlhmsqzSU0QTZjkMVpaX5sBsm1OGKVg1qdjKP0EdyqZBRLhukn8DLBQav6kccgz8OKfgBzjj6Z",23]

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


2

Node.js、333バイト

1,679文字のバイナリ文字列を返します。

_=>Buffer(")SI)=.);1K?>>>2333A3,93/I3>3)g33)AEAAI)5JQZJTddda3)*3*33+3,e)*e3)//0/1+)1C/7Cgggg3395)9)A3IY)h*IH),39+)995*)AA-)59Y)*O3Z,)//*)91**)A*-)Y+1)I11+)I1)/)5)Y*0?)+)I)-0Y)1@;_*7<gaE/a)Q7[*9HM+IY16I33)a1)*^.><I+S3.38I)*hY)7)a)Y)A,9*A5Y/A:9=9K:1I-=9)19I)9*329)GH<").map(x=>s+=(x-51&&x-41).toString(2).padStart(x-51?6:12,0),s='')&&s

オンラインでお試しください!(フォーマットされた出力付き)


JavaScript(ES8)、413バイト

1,679文字のバイナリ文字列を返します。

_=>atob('AsKoAFBQEiIlwpVVUk!!ABwo!DQ!Gg!V!Aw7g!!GHGHCi!yGjHChsK+w7vDr8K!!Q!Q!!g!/DgAHDs!AGGHDhiAgCGhjwprDu8Ovwr4!ABAw4AQAcK!MKDAD8GB8OAD!QCAQQMBAYYEAMQwABwpgAMQwBwoYEBAgEEBgEQDAIwoAgIMKAwoDCgMKABgDDgDAEdcKACAgAEHwAIXTCtgTDpMO+w6HDgcK4AsKDwrIFB8OkCgwINg!!A4IAB1FVTDoArCo!U!/CgAB/w4ADwoDDoAwAYDQBYMOMBmEUFEIkSMKARR!woQgAQB!MKUAHnDtA'.split`!`.join`AA`).replace(/[\s\S]/g,c=>c.charCodeAt().toString(2).padStart(8,0))

オンラインでお試しください!(フォーマットされた出力付き)


2

バブルガム、275 236バイト

00000000: e006 8e00 e45d 0018 6988 6507 a228 f86f  .....]..i.e..(.o
00000010: f042 c62f d4d7 b99e 38bc 56c4 52e8 2630  .B./....8.V.R.&0
00000020: 8aaa 7252 d47d 5ef4 c96a 511f 6842 423f  ..rR.}^..jQ.hBB?
00000030: 4532 ca9f 22d3 1633 e0c4 665a d5dc 4e68  E2.."..3..fZ..Nh
00000040: 7b09 76ae 3c7e f9d4 fa4a 05e0 4163 c580  {.v.<~...J..Ac..
00000050: c585 a383 2396 4ca9 1f48 a4b9 744e 37c8  ....#.L..H..tN7.
00000060: 68c5 af23 645d 59a7 542a e6d1 23b9 3aba  h..#d]Y.T*..#.:.
00000070: f0e6 2738 dfd5 b0a3 c6a3 60bf c5b6 5ae6  ..'8......`...Z.
00000080: 7893 30a8 ae04 edf9 298b b777 4d56 285b  x.0.....)..wMV([
00000090: cb74 07cc 7a7b a399 3dc7 c6e7 b693 e715  .t..z{..=.......
000000a0: d908 876e 001f 7408 3c6a 5fcd 37cb 02c4  ...n..t.<j_.7...
000000b0: 93de 33c2 a11e 5bac cd12 d99a fac3 e0fa  ..3...[.........
000000c0: 5268 94f7 d640 0f73 cede f79d 821f 39d1  Rh...@.s......9.
000000d0: dc49 ff06 6962 6c31 dc29 a077 01c3 7690  .I..ibl1.).w..v.
000000e0: 85ef bbec 31d7 5c7f f9fc 8c00            ....1.\.....

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


2

bash + GNUツール、351バイト

base64 -d<<<H4sIAPnNrVwCA6WUCRLDIAwDv8T+/3NNG4wvkTBTcisGSyA8xrcxj9Ds02F+Z7yuf3hnPyz0vYEGz+FG3IKBs+x3oL2PSh0TM/PnaGamft9nPUCew3uCp5RBWdRKGz+qNJn8qRKkkNaTBgeVIFXWOdi8VCaIeUnsfHo6TXpaFa3H5olf6J5MuIHLoEi0uKcRFCvEXG4xseglKzZg7kpYJSLMA3M7wXKR+/L2WiK0kvg+TDASLp6Co1KEVIlVmFzhCktRhBBDdSZYU1xKHrmDUllcWpNR/YNW2QNcHtF0rSySb0MXk/SDUgEwG5gfLvQDxuEdDo8GAAA=|gunzip

TIO


私が私の投稿する前にあなたのbashの投稿を見ませんでした-非常に小さい!
Noodle9

2

MathGolf223 220バイト

'06*"x·<×J× Ç×►B×ê\"@$↕!◙è0♥f░×→0×♠p└☺α?×└•×◙×P♣p¬è:×►∟××××←♦♠♣≥â☻┘A☺▄αp⌂r☻[║►×>◘×♦♦└:☻↑`×♥@@@@►►@♦↑ ☻♀◘☻♦☻☻├×å↑×╠×Ç!♠ 0♀◘↑◘☻♦◘×♠α♥â▼ÇA×└×◘` ×××▀≈}═14♦►►π0♀××°×α•×►×××☻×◘××└≈}_├↑♪↓×─0♫♥×××|××*××♪×Ç♠×└×××× ⌐¬╩↕◄○((×T☺"$à+

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

説明

'0                push single character "0"
  6*              repeat 6 times
    "..."         push the magic string
         $        convert to ordinal
          à       convert to binary string
           +      pop a, b : push(a+b) (add the 6 zeroes)
                  below is the footer
            L/    divide into groups of 23 characters
              n   join array with newlines into string

L/nフッターに移動できるため、実際には220バイトになります。05AB1E / Javaの回答を移植することで、このバイトをさらに節約できます(この圧縮整数を使用して、base-3に変換し、すべて2のsを0000sに置き換えます)。
ケビンクルーッセン

@KevinCruijssenいいね!もっと文字列置換関数があればいいのですが、それは今のところMathGolfの一部ではありません。
maxb

桁ごとのマップ2♫░╞どうですか?編集:気にしないでください。base-3に変換するためのBase Conversionビルトイン(バイナリ/ 16進数を除く)がありませんか?
ケビンクルーッセン

@KevinCruijssen基本変換を変更する方法について少し考えました。確かに、バイナリ文字列を10進数に変換するためのコマンドと、バイナリ配列を10進数に変換するためのコマンドは必要ありません。そうすれば、別のベース変換コマンドを組み込むことができます(そして、その考えは常に言語の一般的なベース変換を持つことでした)。
maxb

+もちろん、フッターに移動することもできます
Jo King

1

Perl 5、460バイト

printf"%023b",oct"0x$_"for qw/15400 141404 4444b2 555524 0 600 1a00 1a00 2a00 3e00 0 61c618 400190 68c61a 7df7df 0 80002 0 40001 7c001f 0 618718 404010 68639a 7df7df 0 81802 1800 41801 7c181f 1800 100804 81808 61810 18860 1980 18860 61810 81008 101804 201804 200808 101010 80060 60180 11d600 101000 107c00 10ba5b 1393f 5c3837 283b 10283f 102830 106c00 0 1c1000 1d4555 1c0154 140 7c00 1ff00 701c0 c0060 1a00b0 330198 228288 224488 22880 21080 20080 9400 3cfa78/

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


1

Python 2、336バイト

print bin(int('gVQAKCgJERLKqqkgAAAAAMAABoAADQAAKgAAfAAAAAMOMMQAGQ0Yw19998AAAAgAAgAAABAAB+AA+AAADDDjEBAENDHNffffAAAAIGAIAMAAQYAfgwPgBgAIBAIIGAgMMCAGIYAAzAAYhgDDAgIEAggMAiAYBEAQEEBAQEADAGAYAjrABAQACD4AELpbAnJ/cODcAUHZAoPyBQYEGwAAAAAcEAA6iqpwBVAACgAHwAA/4AHAcAYAMBoAsGYDMIoKIRIkQCKIAEIQAIAgAEoAPPp4'.decode('base64').encode('hex'),16))[3:]

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

バイトの文字列を出力します


1

Java(OpenJDK 8)、364バイト

n->new java.math.BigInteger("in95mzupnpa2r0khpoepyql6ioqyn413avucdtfay6indx4wh9dehe3sn18klobtf4z9g9q17umqmwpegr2khb5eqinn7azl4jpfp2a8eui0xfrx5qwrou6gd65jh4ge3ls14k5lu7qrvmg6942ms29u5rb8fa6yrdhfoh5zoi9bdi7uh5ig0u0ff9kounth8sh357x7qox4m3oqviqsbrvakonbka4ahp21bgzi5v1akzzuqoncszhpabbru9q1uo2g11zr73iuyiqr5ikr69zn7cdv7e1lhd6ese9",36).toString(3).replaceAll("2","0000")

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

説明:最初はn->new java.math.BigInteger(str,36).toString(2)、基数36の数値を2進数に変換するだけでしたが、先行ゼロには9つの余分な文字が必要でした。その後、いくつかのゼロを2としてエンコードするランレングスのアイデアを得ました。4つのゼロの長さは、基数36の長さを最小にするようです。n->new java.math.BigInteger(str,36).toString(3).replaceAll("2","0000")

@KevinCruijssenによる先行ゼロバグ修正については、この回答の下の説明を参照してください。


いいね Javaにとっては驚くほど短い!
エリックドゥミニル

1

[Python 2]、345バイト

s=''
for c in")pG/K(K*j$h%kk$ppjGE&I6S6S5[5eCv~vw0x&z$wgqcde$e=G4G?G4eG0e:vv~w*G,gn$wy$uuuuG=G)I,G.I2G(I-eG(I)e-I0G+G+G(G)I*G*vI)G-w'I2y0w'I,vI)G*G)G+G(G*I+W+I+W,G*G(G*G*G*G/I,I+I,iq.G*G1G(e/g$c%sG)m%md~$M(},K(cO)K(eO)K(I)G(aE$M(G1c$hpoI,pG3K1e3eU/M*M,I.I*S,Q(y*y'hG(ng&j$j$G+hW/g'G/G,G1k.d$e$mN":c=ord(c)-35;s+=[bin(c-35)[2:],'0'*c][c<35]
print s

0の文字列の長さを、chr(31)から始まるバイトとしてエンコードしました。次に、残りの10101を、chr(70)からchr(126)までの2進数としてエンコードしました。適合しないバイナリ文字列は、小さなチャンクに分割されました。

編集:326バイトに縮小。ありがとう、ジョー・キング

編集:コード生成プログラムのバグを修正

編集:最終編集


大きな文字列をo変数に保存する必要はありません。
xnor

1

Zsh、577バイト

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

S=fxxxxibxxdxxfyzzzyx1yxxxxxxxxyyywl2ij1xxhj1xxhixxxhi5iw2d3c2d2cxl2bxc2az2c2d2ax4x4x4x5wcxpxwdxp15m5w2d2d3c2cxfxhxc1xxc2c2y1xx4x4x4x5wc1f2ixj2kd1e2j15e2f5j2kb1h1hyc1f2gzd2d2fzaf2c1d2ej2b2gf2c1d2ed2d2f1dc1f1hzb1g2hya1h2hya1i1gzb1g1g1dc1l2ed2h2gbz2xx2ibzd1lbzb5jb1dx2xyx1x2fy2yy6x3d3e2a3ixxd2x2b1fxxd6b1fxxd2db1e2a2jwb3e1lb2xxzxxxxx1b3ixxxynxxeh5jf9hd3g3fc2k2eb2a1ix2da2b2g2b2cazxxdxzzazyzyzzezxz1ge1d1d1ge1i1ggyxxia3y4xy3z
for X in ${(s::)S};{case $X in
[a-w])V=$[##$X-96];printf 0%.s {1..$V};;[1-9])V=$[##$X-48];printf 1%.s {1..$V};;[x-z])V=$[##$X-119];printf $[10**$V];;esac}

カスタムエンコーディングロジックを使用。文字列Sは421文字で、もう少し圧縮される可能性があります。文字a-wは繰り返される0sを表します。数字1-9は繰り返されるを表し1ます。文字x y z10 100 1000それぞれ表します。

たぶん、バイトペアエンコーディングまたはAscii85を試してみるべきだったでしょう。


0

Bash702 697バイト

xxd -r -p<<X|xz -dc
fd377a585a000004e6d6b4460200210116000000742fe5a3e006d7010c5d
0018698865079cf6752c9e9a501a87a798b4844f9fcfdaaf87733b9d8239
48c816d860a938767f6cb81299f3e8a638effe3068c0e096a8949c81d706
7dff3ec44e5df185b3a48e5b5857724386e8c37cfbd5c856b12614ee78ec
c41df4db3aea71fd3a8fa474905609f78eb3fd66e246557965e4ab6dfd67
efbd9202f542ded9cf98a6401ee2d23afb2f544bd2442c6f428fd612397c
f2c6ec50847ddccc5832185e487712e5a7676b97058d7e485d5a3536166a
44ab3c689c93073cdda73b5306a83c4cd268e79db238bfa2d08ac912a578
75020bc7828342d5a62ce367aff7fd89290336128d119fa4272da2b2a79f
5973c71935af054f2d91c1bd3ea4847a3502d6dc8c975114dacf8a4de600
622d80986dbb0cd00001a802d80d00001b16e2a7b1c467fb020000000004
595a
X

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


0

ルビー、362バイト

puts"5r0afnfm8wyke8tfy1pwt7xnuaxyh3wodfp7bhsdufyw0xbdp1pumrz2xir652tuc0ss9oec8yad9vefivd66j126wybhefgk2lv38uqqiur11u26q275jk3h2ucithd59awpaenqpqi1pszh52179zw0ddqtbrvo6kyrrgv8c34pqrp83j8estjp63v29t4hqp9yg2hhzjlq1e9zqx6gh20n9lsttimz3nbq060ritrphxaru7quwmv3oujhd9xjddpbacq4bnpf270znhgto59yn0980itylf95pxw9x7rvkvi7mfql1sx46puo8rg4dq0".to_i(36).to_s(2).rjust(1679,?0)

整数36で書かれています。たとえば、zlibまたはで整数を圧縮するより効率的な方法が確実にありbase64ます。

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


350のバイト君の場合:to_sの代わりにフォーマットするため(1)使用の"%B"、(2)プリペンド* 6 0ではなくRJUSTを呼ぶの?
GB

0

[C ++(VC ++)(gccでもテスト済み)]、585バイト

#define l(x,y)for(int x=0;x<y;x++)
void f(){const char*a="02A800505012Y595Y240U180YD0Y1A0Y540YF80V61C618800321A3186BEFBEF80X10Y40W20YFC001F0X1861C620200868639AFBEFBE0W40C0100180Z83003F0607C00C001008041030101860400C430Z19800310C018604040804101804403008802020808080800600C030047580080800107C002174B604E4FEE1C1B80283B20507E40A0C08360U3820Z751554E00AA0Z140ZF80Z7FC00380E00C0060340160CC06611414422448804510Z8420010040Z940079F4F0";int x=1679;l(i,365){int d=a[i],c=0;d-=(d>47&d<58)?48:((d>64&d<71)?55:0);if(d>70&d<91)c=91-d,d=a[i-1];for(c;c>=0;c--)l(j,4){if(x--)cout<<(int)((d&(8>>j))>0);}}}

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

改変されていないバージョン(ただし、1679番目の要素の後に休憩がなく、1680番目まで続きます):

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    const char arecibo[]="02A800505012Y595Y240U180YD0Y1A0Y540YF80V61C618800321A3186BEFBEF80X10Y40W20YFC001F0X1861C620200868639AFBEFBE0W40C0100180Z83003F0607C00C001008041030101860400C430Z19800310C018604040804101804403008802020808080800600C030047580080800107C002174B604E4FEE1C1B80283B20507E40A0C08360U3820Z751554E00AA0Z140ZF80Z7FC00380E00C0060340160CC06611414422448804510Z8420010040Z940079F4F0";
    int i = 0,j;
    while (i<sizeof(arecibo)-1)
    {   
        char digit = arecibo[i];
        int count=0;
        if (digit >= '0' & digit <= '9')
        {
            digit -= '0';
        }
        else if (digit>='A'& digit<='F')
        {
            digit -=  'A'-10;
        }
        else if (digit > 'F'&digit<='Z')
        {
            //digit does not contain any valid hex digit in this case
            count = 'Z' - digit+1; //digit = Z means repeat 2 more times...
            digit = arecibo[i - 1];
        }
        for (count; count >= 0; count--)
        {
            for (j = 0; j<4; j++)
            {
                cout << (int)(((digit)&(8 >> j))>0);
            }
        }
        i++;
    }
    return 0;
}

説明として:1つの長い行に与えられた73行のサンプル出力を連結しました。ビット順序がmsbfirstである16進数でエンコードしました(このプログラムhttps://github.com/Marc-Bender/longBinaryStreamToHex/releases/download/addedErrorCode-4/longBinaryStreamToHex.exeを使用)。その出力を約70短縮しました。 16進数の数字「G」〜「Z」を記号として使用して、最後の数字を一定の回数繰り返す(Z = 2回以上、Y = 3回…)残りはCode-Golfersにとって比較的自己説明的である。プリプロセッサを乱用してループを短くし,たり、オペレーターなどを乱用したりします。

出力形式は、1679個の0/1値の連続ストリームです。


誰かがconstに尋ねる前に、VC ++との互換性のために(主な開発作業は何で行われたか)
der bender

私はあなたが...あなたのヘッダ部分に含まピッチングすることによってより多くのがあっても短いことができると思い@ceilingcat
ベンダーデア・


0

Perl 6、348バイト

{"000000"~:36<5r0afnfm8wyke8tfy1pwt7xnuaxyh3wodfp7bhsdufyw0xbdp1pumrz2xir652tuc0ss9oec8yad9vefivd66j126wybhefgk2lv38uqqiur11u26q275jk3h2ucithd59awpaenqpqi1pszh52179zw0ddqtbrvo6kyrrgv8c34pqrp83j8estjp63v29t4hqp9yg2hhzjlq1e9zqx6gh20n9lsttimz3nbq060ritrphxaru7quwmv3oujhd9xjddpbacq4bnpf270znhgto59yn0980itylf95pxw9x7rvkvi7mfql1sx46puo8rg4dq0>.base(2)}

Benjamin UrquhartのJavaソリューションに基づいています

0文字と1文字のストレートストリームを使用します。以下のリンクには、出力をわかりやすくするためのコードがいくつかあります。

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


0

Tcl、366バイト

binary scan [binary decode base64 QBUACgpIRKSpqkoCAAAAgAEAsAAAWAAAKgAAHwAAAGA4hhEATFiMYX3f9wEAAAgAIAAAAAQA8AOADwAAGIZjBAQQFsZZ3/d9AAAAAgMIgAEAwQD8YOADMAAIECAIDAgYBgIwwgCAGQCMMIBhICAQIAgYIAIMEAEEBAEBAQFgAAMMIK4BEBAACD4AhC5tICd/h4MdQMFNoOAnUDAQbAAAAAAcBACuqCoHUAUAKADwAQD+A8ABBzAABiyABjNghigoQiQSAaIIACEEgAACACkAni8P] b* z
puts [join [regexp -all -inline .{23} $z] \n]

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


0

C ++(Gnu多精度ライブラリを使用)、359バイト

これにより、文字列が1行で出力されます。0には「1」、1には「0」を使用します:/

埋め込まれた文字列をベース62として読み取り、ベース2として出力します。

g++ -g arecibo.cpp -lgmp -lgmpxxコンパイルとリンクに使用

#include<gmpxx.h>
main(){mpz_out_str(stdout,2,class_mpz("vuXXKBYAu1hPsJPbFSf49akyFd0bjJbMIV3upYndU8kYFPsXcpRUK6c9qnzLfORxkxGL7ZfoSwgSxFbCrydjHL603QcxexopAzoYAcAyEiENJJU2vQA2zM8NDbeY6nHgL8rfFoPJaclwxx6TeKeOEknEQHzp7C4la3o8xijBQLOVweFZ1CI9dXy2VQhgnuwF5FeW5mQ909pRMxhn6G3RJ1QEtkS7oGMZYHM03fh4fj391IoYLGVv3iUVuTrV2ghz9CUa9hfGYrdhGoVE2w1inYalYl",62).get_mpz_t());}

私が交換されるまで、私は仕事にこれを得ることができなかったclass_mpzmpz_class
ceilingcat

0

Perl 6、276バイト

:122[q{3tD!gLF['u#.K>'uCG8cvJZ[on1Z<D!	`Fhqq-_V'"qQn+n0h\:b,vXjo&1TMFaW;wvX;eUS
(ueelNSu,y93\kjGI&?UU/38 :ndi4Y5cyC+ME\g7LWaS;QLjtD^L+aVd(XW%gy\8'Eqk-+f72S5J?(r5!m^5px T[Z'3&jd0lZ'/x%#(}.ords].base(2)~~S/.//.say

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

一連の1679の0と1として出力します。の.comb(23)>>前にsay追加することで、異なる行に配置できます。

説明:

:122["...".ords]                     # Convert the string from base 122
                .base(2)             # To base 2
                        ~~S/.//      # Remove the leading 1
                               .say  # And print

出力を1679ビット整数として代わりに使用するか、ビット表現を逆にすることで、おそらくバイトを節約できます。


0

C ++(gcc)、748バイト

#define l(X,Y)if(z[i]==#X[0])z.replace(i,1,#Y);
void f(){std::string z = {"ab1eeedala1ebeeheal1mmma1fa1g1eeeeeeea1a1alddhgdbcdgdacedgdacedgdeeedgdndgddhgqiafbcag1dbfa1blceafafbcegcinnnlddhgmddegddhgb1ddelcidbnlddhgqqiafag1hedeblcebcaf1acegcinnnlddhgmhcdegdacdagb1bfda1lcibfhcildacdaga1d1d1almhcheagbqch1blhcmbqgdacachghcmbqgbqch1blmh1d1aga1hfd1aledcd1aledeheaga1heheblmdbqgbcdchga1af1efdga1hedbla1bndala1b1f1ea1fflh1aia1acccl1f1bibff1ldeebf1fla1h1ebfccla1h1ebfbla1bffdalddhgaibedblaieemeeeeelaideeeealdh1ehldcidalhcccidlbihf1hlafdafbgacedefblfachfacagemebeemagema1ma1magbememhgbeb1b1hgbedehghea1edalfcacieacca0"};for(int i=0;i<1751;i++){l(q,cb)l(n,fi)l(m,ae)l(i,c1)l(h,ba)l(g,0l)l(f,0c)l(e,01)l(d,bb)l(c,11)l(b,aa)l(a,00)l(l,\n)printf("%c",z[i]);}}

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

最も使用される部分文字列を、それが価値がなくなるまで新しい文字で置き換えることにより



0

Python 3、331バイト

exit(''.join(bin(i)[3:]for i in b'`UP@JB`IDQKJjjd`@@@@@L@@Ah@@CP@@J`@@_@@@@@LNLLP@FPtXpu}}}|@@@@`@@`@@@A@@A~@@~@@@CCCcDA@DMCGM____@@@@HF@H@L@@PX@_`pO`A`@HA@HHF@`LLB@FHX@@s@@Xa`CC@`HD@``L@b@XAD@PDDA@PD@C@F@X@ck@A@P@BCx@DKi[@gI\x7f\\NC\\@TGY@hOrAPXDFp@@@@@\\D@@zbjipAU@@B`@Gp@@\x7fx@G@\\@X@LAh@lFXCLHhJHQHdPBJH@DHP@H@`@Dh@OOix')[1:])

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

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