私はグリッド ユニバースで作業しています。オブジェクトは 2 次元マトリックスの整数位置にのみ存在します。
いくつかの用語:
正方形 - 個別の場所。各正方形には int x 座標と int y 座標があり、x と y のペアが同じ 2 つの正方形はありません。
隣接: 正方形 X は、x 座標または y 座標のいずれかの差の大きさが 1 以下の場合、別の正方形 Y に隣接しています。 、W、および NW 方向が隣接しています。
Legend:
'?' - Unknown Traversibility
'X' - Non Traversable Square
'O' - Building (Non Traversable)
' ' - Traversable Square
問題:
次の一般的な状況を考えます。
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? O O ? ? ?
? ? ? O O ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
ビルダーが 4 つの建物の 1 つに隣接している場合、既存の 4 つの建物の少なくとも 1 つにも隣接する共通の隣接する正方形を共有するように 2 つの建物を建設したいと考えています。この共通の隣接する正方形はブロックされていません。 .
基本的な有効なソリューション:
X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X X X X
X X X O O X X X X X X O O X X X X X X O O X X X
X X X O O X X X X X X O O X X X X X O O O X X X
X X X O X X X O X X X X
O O X X X O X X X X X X X X
X X X X X X X X X X X
現在、4 つの建物に隣接するすべての通過可能な正方形を反復処理し、隣接する 3 つの通過可能な正方形を持つ正方形を探しますが、これにより次のような状況が発生することがあります。
X X X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X O X X X X X O X
X X X O O X X X X X O O O X X X O O O X X
X X X O O X X X X X O O X X X X O O X X
X X X X X X X X X X X X X X
X X X O O X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X
アルゴリズムを改良する方法について何か考えはありますか?
編集:別の失敗したケースを追加しました。
編集:これらの条件が満たされる可能性のある構成がないかどうかも知りたいです。実行可能な解決策が保証されているわけではありません。これを成功させる方法がない場合は試したくないです。