あなたは「アレシボ・メッセージ」に着想を得た、宇宙向けの2進ビット列メッセージを設計・生成する科学者です。
目的は「地球って最高だよ」という価値を、数学的に普遍で解釈可能な形で提示することです。
以下の厳密な要件に従って、最終的に **0 と 1 だけ** からなるビット列を出力してください。
【設計方針】
- メッセージは、受信側が復元しやすいように「全ビット数 = p × q(p, q は異なる素数)」となる長さにし、p 行×q 列のグリッドに再配置できるようにする。
- セクション順(論理構造)は次の通り:
S0: 同期用プレアンブル(例:素数長のバーカー符号に準ずる高/低の並び)
S1: 数の体系(1〜10の二進表現を短い区切りビットで並べる)
S2: 主要元素の原子番号(H=1, C=6, N=7, O=8, P=15 を二進で)
S3: DNAの二重らせんの抽象表現(左右対称/周期のパターンを数ビット単位で示す)
S4: 人間の図式と平均身長(身長は「波長λを1単位」とする相対値の二進化)
S5: 太陽系と地球の位置(太陽+惑星列、地球位置を強調)
S6: 送信装置(電波望遠鏡/アンテナ)の簡略パターン
S7: 友好のしるし(対称性を持つ簡素な図形)
- 各セクションは「短い固定ヘッダ(2〜4ビットのセクションID)」→「本体ビット列」の順で構成。
- 区切りには 00 を用いる(ただし先頭のS0直後と末尾には追加しない)。
- 「S0の末尾」と「全体末尾」に偶数パリティ1ビットを付与する(パリティ対象=直前の内容のみ)。
- 全体ビット列の総ビット数が p×q に **厳密一致** すること。
【出力形式(厳守)】
JSONのみを出力し、日本語は使わない。プロパティは次の順序とする:
{
"grid": { "rows": <prime_p>, "cols": <prime_q> },
"sections": [
{ "id": "S0", "name": "preamble", "bits": "<0/1列>" },
{ "id": "S1", "name": "numbers", "bits": "<0/1列>" },
{ "id": "S2", "name": "atoms", "bits": "<0/1列>" },
{ "id": "S3", "name": "dna", "bits": "<0/1列>" },
{ "id": "S4", "name": "human", "bits": "<0/1列>" },
{ "id": "S5", "name": "solarsys", "bits": "<0/1列>" },
{ "id": "S6", "name": "antenna", "bits": "<0/1列>" },
{ "id": "S7", "name": "friend", "bits": "<0/1列>" }
],
"concat_bits": "<S0+00+S1+00+...+S7 を連結した最終 0/1 列>",
"length": <concat_bits のビット数(整数)>,
"checks": {
"is_prime_rows": true,
"is_prime_cols": true,
"length_equals_rows_times_cols": true,
"parity_S0_ok": true,
"parity_total_ok": true
}
}
【検証ルール】
- "concat_bits" の長さ = grid.rows × grid.cols であること。
- rows, cols は素数で、5〜199の範囲から選ぶ(短すぎ/長すぎ防止のため)。
- "sections[*].bits" は 0/1 のみ。空白や改行なし。
- パリティ検証が失敗する場合は自動で再生成し、OKになるまで繰り返す。
【出力上の注意】
- JSON以外の文字(説明文、コメント、余計なキー)を出さない。
- 先頭や末尾にバッククォートやMarkdownを付けない。
以上に基づき、論理的で美しいビット列メッセージを1つ生成してください。