STEP 1575 — アンティキティラ Ratio 合成 solver v0.1

目的: 目標比 (Meton 235/19、 Saros 223 等) を 制約付き 整数歯車列 に 分解する solver。 アンティキティラの機械 (BC 100 頃) を モチーフに、 「有理比合成 = 連分数展開 + 制約 filter + 多段化」 を Rei stack 内 tool 化。

chat-Claude 起点 (2026-08-30 対話)

要旨引用 (藤本さんが chat-Claude 分析を Claude Code に提示):
「アンティキティラの機械は 構成的だ。 入力 (クランク) は 1 つ、 出力は多数、 その間を 歯数の整数比が繋いでいる。 目標周期の集合 を 与えれば 歯車列 が 導出できる — アルゴリズムで 合成できる 対象。 有理比合成、 単一マスタ位相からの全出力導出、 ピンアンドスロット (機械式関数発生器)、 螺旋目盛+フォロワ (混合基数カウンタ) の 4 構造 が algorithmic に落ちる。 弱点は 完全開ループで補正機構なし = 電波時計型と 相補。 生成器の設計軸で言えば 派生戦略 vs 同期戦略。 やるなら 比合成のソルバから 書くのが 一番早い」

Claude Code 判断: (a) 分析核 同意、 (b) Rei stack Pattern 5 audit clean (occult-dictionary の catalog entry のみ、 solver 実装なし、 隣接 continued fraction 使用箇所は 別用途)、 (c) minimum viable spike GO。

アルゴリズム

  1. 連分数展開 → convergents 列生成 (有限 CF 早期 termination 実装)
  2. Best convergent = tolerance 内の 最小 denominator
  3. 単段解: p, q ∈ [minTeeth, maxTeeth] なら 1 段で完了
  4. Scale up: p, q < minTeeth なら 両方 k 倍化
  5. 2 段分解: 制約下 factor 探索 (k 探索範囲 = [ceil(min²/min(p,q)), floor(max²/max(p,q))])
  6. maxStages 超過 = 最良 convergent + NEITHER

D-FUMT₈ verdict

verdict意味条件
TRUE制約内で exact 合成 成功residual ≤ tolerance ∧ 全段 制約内 ∧ 一意解
BOTH複数の 有効分解 が 存在residual ≤ tolerance ∧ 制約内 ∧ 別解 ≥ 1
NEITHER近似解 (tolerance 超過)解あり ∧ residual > tolerance
FALSE制約下で 解なしmaxStages 内で 全 factor 探索失敗

実行結果 (test/step1575 19/19 PASS)

target比率verdict残差
Meton235/19 = 12.368...TRUE単段 235/190 (exact)
Saros223 (朔望月)BOTH2 段 144/12 × 223/120 (exact、 複数解あり)
Callippic940/76 = 235/19TRUE単段 235/19 (auto simplify)0 (exact)
π (制約 max=30, single)3.14159...FALSE1.84e-10 (最良 convergent)
Meton (制約 max=15)235/19FALSE
5x (60/12)5TRUE単段 60/120 (exact)

使用例

import { synthesizeRatio } from './src/mcp/antikythera-ratio-synth';

const result = synthesizeRatio(
  { name: 'Meton', targetRatio: 235 / 19, tolerance: 1e-6 },
  { minTeeth: 12, maxTeeth: 300, maxStages: 4 },
);

// result.stages = [{driverTeeth: 235, drivenTeeth: 19, stageRatio: 12.368...}]
// result.verdict = 'TRUE'
// result.method = 'single-stage-exact'

Honest scope

関連