親愛なるstackoverflowers。
したがって、特定の x と y の値がそこにタイルがあるか (1) ないか (0) を表すグリッドがあるとします。
例えば、
100110100010
100100111110
111110000000
000010000000
また、既知の形状 A、B、C がいくつかあります。たとえば、
(A) (B) (C)
1 1 1
111, 111, 11
私が達成しようとしているのは、グリッド上のどの 1 がどの形状に属しているかを識別することです。すべての 1 を使い切る必要があります。形状の正確な数はわかっていますが、回転 (ミラーリングなし) が許可されているため、回転したバージョンを追加して、いくつかの形状がグリッドに見つからないと考えた方がよいと思います。
したがって、予想される結果は次のようになります (正確に 1xA、2xB、2xC であることがわかっています)。
A00CC0B000C0
A00C00BBBCC0
AABBB0000000
0000B0000000
一致する可能性のあるものが複数ある場合は、すべてのタイルが独自の形状に割り当てられる限り、どれでも適しています。
さらに、タイルが存在するかどうかを調べること (「発見」) はコストのかかる操作です (ただし、結果はキャッシュされ、タイルはどこにも表示されません)。可能な限り「発見」の数。(最適でなくても構いません。形状を識別するだけで十分です)。
明らかに、既知の形状のセットは変更される可能性があります (ただし、実装時までに判明し、一定のままであるため、特定のタイル セットのコードを調整したり、いくつかの検索戦略を開発したりすることが可能です)。大きく(〜5〜6)、グリッドも非常に小さい(〜15x15)。
ありがとう!