096 からくり島の航路　1.0.1

一便を短いカード列に変えると、船が自分で海を回ります。
帰ってきた船が未調査の島の絵を机に届ける、自動化と探索の小品です。

起動
Windows: Python 3を用意し、setup.batを１回、以後play.bat。
Linux/macOS: sh setup.sh、その後sh play.sh。
通常起動の依存はPyxel 2.9.9＋標準ライブラリのみです。
Windows/macOS実機、人の試遊、クラウド音声の実聴は未確認。本作は無音仕様。

操作
表紙: 1～3 海域、B 末尾反復／末尾停止の比較、Space/Enter 開始。
Space １日。Enter 自動再生・停止（末尾停止なら無料で同じ列を再開）。
P 停止。説明・報告・編集・確認中は日付を進めません。
H 説明、Tab 調査報告。Cを訪ねてHへ帰ると報告が届きます。
Hに停泊中のMで手動モードへ。← → カード、Spaceで一枚実行。
航行中は選択カードを実行せず航行だけ進めます。Mの切替もHだけ。
E 命令編集（Hの日境界だけ）。← → 候補カード、↑ ↓ 編集枠。
Z 末尾追加、Space 選択枠を置換、Backspace 選択枠を削除。
Enter 列を保存、Esc 編集取消。１～６枚、費用・日数０。
X 直前の１日、航路エラー、または命令編集を戻す。
R 同海域、1～3 別海域、Q 表紙、Esc 終了（確認あり）。
S 保存、L 読込は停止中。F12 PNG画面保存。
キーは一度離して次の操作へ。同時押しと画面を跨ぐ押し残しは無効です。

一日の順序
既存の航行を１日進める → 停泊ならカード１枚 → 島の補給 → 報告と依頼判定。
出港は１日を使い、移動残日数を設定。その日に到着しません。
距離１なら翌日到着。到着日に次カードはまだ実行しません。
積む・降ろす・待つは１日。空積み・空降ろしも理由を表示して１日です。
積み荷上限２、島在庫上限４。島への降ろしは空きまで戻します。
Hで降ろすと倉庫へ。Hで積む操作では倉庫から積み直しません。
補給直前に積んでも、その日の補給分を遡って取れません。
隣接しない行先では日も次枠も進めず停止。XでHの編集時点へ戻せます。
命令変更時は次枠を先頭へ戻します。海の途中では変更できません。

目標と未知情報
全海域共通で24日以内に倉庫６個＋Cの報告１件。
24日目も達成可。25日目以降は観察のみ。既に達成した記録は残ります。
期限で船や資材を失いません。Xで日を戻し、組み直せます。
Cの距離・在庫・補給周期・景色は、帰港前は範囲または未確認と表示。
Cへの航行表示も内部の残日数を隠します。ループ収益を未知値から計算しません。
船倉の個数は自分の船の観測値です。島の在庫総数とは別です。
Cに初訪問して船が記録し、H到着時に報告。訪問だけでは依頼未達。
固定海域A/B/Cで乱数なし。実距離を発見後に変えません。

海域と確認した計画（解き方を見たくない場合はここまで）
A: HA=1、HB=1、AC=1。初期在庫4/2/4、補給周期3/2/0。
B: HA=1、HB=2、HC=1。初期在庫2/4/2、補給周期2/2/3。
C: HA=1、AB=1、AC=1、HC=2。初期在庫1/4/3、周期2/3/2。
０は補給なし。往復可能。未知辺の画面表示は事前範囲のみ。
既知A往復「Aへ・積む・Hへ・降ろす」は６日で２個。
Aの調査便「Aへ・Cへ・積む・Aへ・Hへ・降ろす」は10日。
BのC直行便は６日、CのC直行便は８日。
調査を先にする／A往復２回を先にする、どちらもA22/B18/C20日で達成。
最適解の主張ではありません。手動と自動の同じカード列で物理結果を照合済み。

保存と検証
save.jsonは作品ID・版・海域・状態・履歴・設定をUTF-8で保存。
一時ファイルから置換。不正範囲・未知版は説明し元ファイルを保持します。
python -m unittest -v test_model test_ui
python experiments.py
python tools/test_portability.py
policy_results.json: ６計画、手動/自動の６一致例。
comparison_results.json: 末尾反復だけを変えた６つの共通カード列。
停止版の再開は日を使わず、同じ24日・６個＋報告目標を達成。
モデル試験は面白さの証明ではありません。QA.txtで確認範囲を区別します。

記録と素材
media/native_日時/はエージェントのLinux機能操作、automatic_日時/は自動動画。
起動時のソースコピーとSHA、意味入力・論理日・結果を保存。ログには検証用の内部値も含みます。
ネイティブF12と操作ログを保持。自動動画は実際のPyxel描画、音声なし。
自作の図形/ドット絵、Noto CJK由来の同梱字形。
assets/NOTO-LICENSE.txt、assets/PYXEL-LICENSE.txtに全文。
制作補助の字形生成・動画変換だけPillow/ffmpegを利用。通常起動に不要。

1.0.1: 比較版の説明画面を末尾停止・Enter無料再開の説明に修正。ルール変更なし。
通常反復版の画面と動画は同一描画を別途照合。元の実録とソースは保持しています。
