023 一筆の庭
Python 3.10+ / Pyxel 2.9.9 / ひとり用・時間制限なし

一本のひもで昼の庭を囲む、３つの小さな線引きパズルです。
日花は輪の中、月花は輪の外で咲きます。必要な本数が咲けば成功。
面積と余ったひもは参考値で、得点への加算や隠し条件はありません。
小さく安全な輪も正当な答えです。２面は５本で進めますが、全６本も試せます。

起動
Windows：このフォルダーを展開して setup.bat を一度実行。以後 play.bat。
Python 3.10以上とWindowsのpyランチャーが必要です。初回はネット接続を使います。
macOS/Linux：sh setup.sh を一度実行し、sh play.sh。
仮想環境を自分で作る場合：python -m pip install -r requirements.txt → python app.py。
このフォルダーだけで起動できます。launch.sh は開発用で、通常は play.sh を使います。
Windows実機・macOS実機は未検証。クラウドLinux実画面で操作を検証しました。
既定文字コードcp932、日本語と空白を含むパス、別の作業フォルダーからの起動を模擬検査済み。

操作
タイトル：左右で庭を選ぶ。SPACEで開始。
始点選択：矢印で白い枠を移動し、SPACEで始点を決定。
描画：矢印１回で１辺。始点に戻ると輪が閉じます。
閉じた輪：開花数と各花の○相当のチェック／×を確認し、SPACEで提出。
Z：最後の１辺を消す。成功後も輪を開いて編集できます。始点だけなら始点を消します。
R：同じ花配置のままひもを全消去。停止中も使えます。
P：説明と一時停止。再度Pで再開。
N：成功後、次の庭へ。３面の後は１面へ戻ります。
ESC：終了。F12：開発用の実画面PNG保存。

矢印の長押しは１回分だけ。離して押すと次の１辺になります。
複数方向を同時に押す操作は無効。操作優先順はR、P、Z、成功時N、SPACE、矢印です。
開始・提出・次の庭・停止・再開・全消去の直後は、操作キーを全部離してから次を受け付けます。
失敗提出ではひもは消えません。時間・残機・試行回数による罰はありません。

線のルール
上下左右の格子辺だけ。同じ辺を二度使わず、始点以外の通過済み点へ戻れません。
自己交差・点で触れる二つの輪・穴のある輪は作れません。最小は１セルを囲む４辺。
盤面端の格子辺も使えます。ひもの上限を超える入力はその場で拒否します。
種はセル中央にあるので、線上の種の扱いに曖昧さはありません。
閉路の辺を壁として盤外からflood-fillし、外から届かないセルが日向です。
線の描画と判定は同じ頂点列を使います。時計回り・反時計回りの結果は同じです。

ファイル
model.py：Pyxelをimportしない不変State、transition、領域・開花判定。
app.py：384×432・30fps。日本語の可読性を優先し初期案192×144から拡張。
solver.py + tools/enumerate.cpp：全単純閉路の予算内列挙と検査。再実行はg++が必要。
solver_results.json：全列挙結果と再現用の頂点列。
experiment.py / experiment_results.json：月花の好みだけを替える一変更比較。
test_model.py / test_ui.py：モデル・入力・全文字境界の自動検査。
NOTE.txt / X_POSTS.txt：未投稿の日本語原稿。
QA.txt：技術・設計・実操作・未検証範囲。
media/garden_automatic_silent.mp4：実Pyxel描画の自動操作、無音、約26秒。
media/runtime_*.png：同じ実描画から保存した画面。
media/native_*.png：クラウドLinuxのキーボード操作後に保存した実画面。
media/comparison_*.png：実験基準と変更版、同じ長方形／L字の実描画。
media/MEDIA_VALIDATION.json：779元フレーム→779動画フレーム、30fps、25.966667秒、音声なし。

検査の再現（開発用）
python -m unittest -v test_model test_ui
python solver.py
python experiment.py
python tools/test_portability.py
python app.py --headless --demo
python tools/encode_video.py
映像の再生成にはPillowとffmpeg/ffprobeが追加で必要です。
--baseline は一変更比較のため月花も中で咲く実験モードです。通常版は引数なし。

確認の範囲
実装・機能検証済み。人による初見の理解や面白さは確認待ちです。
同封動画は自動操作で、人のプレイ動画ではありません。音は実装せず無音です。
モデルの可解性、設計上の選択、人が面白いと感じることは別々に扱います。
