多分一番のキモであるだろう「空いているマスを一気に開く」機能の実装。DEFのおかげで再帰呼び出しで書けましたが、そのわりにはグチャグチャです。