みさご解体新書

棒倒し法

実行例

実行結果を見る

ソースコード

TypeScript

app.ts

解説/アルゴリズム

サイズが奇数 × 奇数の二次元配列を用意する。

配列の外側はすべて壁で埋め、内部は 1 マスおきに壁を配置していく。

3 行目に配置した内部の壁があるが、それを一つずつ倒す、つまり上下左右いずれか一つに壁を作る。

この際、すでに置かれている壁のところには作らないように注意する。

5 行目も同じように倒していくが、上に倒してはいけない、という制約も付け加える。

7 行目、9 行目、11 行目…と内部に配置した壁の行を 5 行目と同じように上以外の方向に壁を倒せば迷路の完成となる。