# 逆向き倉庫：動かした箱より、遠い箱を見る

箱1を右に押す。すると箱2は左に動く。
今回の小さなパズルは、この一文から作りました。ふた箱は架空の反転式荷揚げ機につながっています。
天井のケーブルと逆向きの矢印で、ルールを世界の中にも置きました。

最初の室は一押しで終わります。ここを長くして難しそうに見せる必要はありません。
次の室では、押す箱の先は空いています。それでも遠い箱の先に壁があるため、ふた箱とも止まります。
先に縦へずらすと、遠い相棒が壁の横へ抜け、さっきできなかった横押しが通ります。
三室目では、箱1の裏側へ立てません。反対側へ回って箱2を動かせば、触れていない箱1を届けられます。

実装で最も大事だったのは、一押しをひとつの取引として扱うことでした。
人・箱1・箱2の移動先を先に全部作り、旧状態に対して衝突を検査します。
全部通れば一括で確定。どれかが詰まれば、箱も人も手数も履歴も変わりません。
片方を動かしてから戻す作りだと、途中状態やundoに不整合が混ざりやすくなります。
箱同士の交換と、人の足元を通る移動も明示して禁止しました。

モデルは描画から独立した不変データです。幅優先探索は歩行を含む全到達状態を調べます。
三室はそれぞれ1,122、1,024、390状態。最短は1、6、10手でした。
三室目は「箱1だけ押す」という制限では解けないことも検査しています。
探索結果は、遠隔操作を使う発見が盤面に残っている根拠です。楽しさを証明した数字ではありません。

一変更比較では、同じ二室目で「押した箱だけ動く」基準も作りました。
両方の可解性を先に確かめた上で、同じ最初の右入力を比較しています。
単独版は12手、逆向き版は6手。逆向きにしたから単純に手数が増えるわけではありません。
大切なのは、遠い相棒の出口も見る必要が生まれたことです。
この基準は制御した反実仮想であり、実在しない旧版の失敗物語ではありません。

開始、次の部屋、説明画面からの復帰には、押しっぱなしを持ち越さない入力の境界も設けました。
一定秒数の無反応時間を置くのではなく、キーを離してからの新しい押下を受け付けます。
失敗の罰はありません。歩きも押しも一手戻せます。

映像は実際のPyxel画面を自動操作で記録した無音映像です。
機能テスト・エージェントによる操作確認と、人が実際に面白いと感じるかの評価は分けています。
この作品への人の試遊評価はまだありません。
次に聞きたいのは「さっき止めたのはどちらの箱？」そして「遠い箱を動かすために、どちらを触った？」です。
