このトピックのタイトルがわかりにくいかもしれませんが、一言で説明する方法がわかりませんでした。より明確にしようとします。ブール値の 2 次元配列があり、すべての値はその特定の位置 (またはブロック) が生きているかどうかを示します。
例を挙げてみましょう:
1 1 1 1 1 1 1 1
1 1 1
1
1 1 1
この配列には 16 個の「生きている」ブロックが含まれており、ブロックの状態を 1 から 0 に変更して、いくつかのブロックを「殺す」ことができます。グループの例:
1 1 0 1
1 1 0 1
0 1 0 1
1 1 1 1
0 のグループは 1 のグループのいずれも切断していないため、この形状はまだ「そのまま」ですが、この場合は次のようになります。
1 1 0 1
1 1 0 1
0 0 0 1
1 1 1 1
今、私はすべての 1 をまとめていた唯一のビットを殺しました。形状は 2 つの小さなグループに分割されました! 最後に殺されたビットの隣人をチェックしようとしましたが、形状の他の可能な接続について確信が持てません。経路探索アルゴリズムも試しましたが、この操作は非常に高速である必要があり、経路探索は複雑すぎます。どうすればこれを達成できますか?