倉庫番ラボ - パズルゲーム分析

荷物を押す向き

udlrの形式

倉庫番の解答を記録する方法は様々ありますが、一般的にudlrのテキスト形式が使われています。
この方法はラビ君が歩いた上下左右をudlrの文字で記述する方法です。

歩く向きだけを表す形式もありますが、広く普及しているのは、荷物を押さない1歩を小文字のudlrで表し、荷物を押す1歩を大文字のUDLRで表して区別する方法です。
このサイトにおいてのudlr形式、udlrデータのような記述は荷押しを区別する形式です。

解答をudlr形式で出力する環境がない方は下記アプリケーションを入手してください。
下記ホームページでは倉庫番の編集プレイ以外のソフトも公開しています。

向きを調べる

荷物を押す回数のページでは移動の回数に着目しましたが、ここからは荷物が動いた向きを考慮に加えて、倉庫番の解答がどのように構成されているのか、udlrデータを活用して考察していきます。

画像a0301 右図の解答をudlr形式で表すと次のようになります。
 例1:dRRRurDD 例2:rDDldRRR

この2つは歩数と荷押し回数が最も少ない解答ですが、この考察では荷物を押さない小文字は無視して、荷物を押す大文字だけを拾い上げて次のように集計します。
 (U0, D2, L0, R3)

このまとめ方をすると、2つの例に共通するだけでなく、右図のDとRだけの解答ならどの順路でも値が合致します。このサイトでは、この集計の値を『成分』と呼ぶことにして、例1例2のように、その面の最も数が少ない成分を『最小成分』とします。

成分の特徴

上図の解答は、途中で上や左に荷物を押すと、成分の合計が最小より大きくなります。その際にUが増えると同数のDが増え、Lが増えると同数のRが増えます。この値の増え方は、上図が単純な構造の面だからそうなるのではなく、どのような面でも成分の増減は必ずUDとLRが対になります。

UDの対とLRの対は、荷物が元の位置に戻る動作を意味しています。
つまり、どんな解答でも、荷物の移動は最小成分の順路を内部的に再現していて、一時的に順路を外れることがあっても、完了までの間に順路に戻る動作をしています。

画像a0302 右の図の最小成分は(U2, D1, L0, R1)と(U1, D0, L1, R2)の2種類があります。これは、左上のエリアが、縦に使っても横に使っても、全く同じ役割を果たす構造になっているからです。

この構造がある面も、2つの成分の差を見ると(U+1, D+1, L-1, R-1)のように、UDとLRの差は等しく、各対のプラスマイナスが逆になります。
尚、これと同様の構造がない面の最小成分は1種類しかありません。

本当にUDとLRが常に同数の差になるのか、上記の構造がない面は最小成分が1種類なのか、成分の実験のツールで試してみることができます。