EXCELワークシート関数で不完全な迷路を作る

 ドルアーガの塔みたいに柱1本に対し壁1枚を置くような迷路を作る、というところからスタートした思い付きです。最近の新しい関数を使うと割と簡潔にいい線までいきますが、きちんとしたものを作るのはやはり難しいのであります。

 まずはC1セルに次のように入力します。

=CHOOSE(MOD(ROW(),2)+MOD(COLUMN(),2)+1,RANDBETWEEN(1,4),IF(OR(C4=1,B3=2,C2=3,D3=4),-1,0),0)

f:id:accs2014:20190118155646p:plain:w600
 補足です。
 行番号、列番号がともに偶数番(D4など)のセルは「柱」として、そこから生じる壁の向きをRANDBETWEEN関数で定めます(1なら左、など)。
 行番号、列番号がともに奇数番(E5など)のセルは通常の通路として0を記します。
 それ以外のセルは壁になり得るセルとして、周囲の「柱」の値によって0(通路)か-1(壁)を記します。


 そして0以外のセルを塗りつぶす条件付き書式を設定します。
f:id:accs2014:20190118155643p:plain:w600


 あとはドラッグして完成です;-o-)
f:id:accs2014:20190118155636p:plain:w600


 せっかくですのでさらにドラッグして拡大。
f:id:accs2014:20190118155631p:plain:w600
 さてお気づきのとおり、この迷路には「周回路が発生する(外周に届かない壁が発生する)」「密室が発生する」という、迷路としての大きな欠陥があります。
 しかし作成方法の性質上(とっかかりが簡単なのと引き換えに)大域的な制約をかけるのがド難しいため解決は困難です。手動で直す前提なら少しは役に立つかもしれません;-o-)