ゲームを開発していて、パッキングの問題に似たコンポーネントのレイアウトを処理するために解決しなければならない問題を見つけました。
何をする必要があるかを要約すると、次のようなスペースがあるとします。
+------------+---------+------------+
| 0 | 1 | 2 |
| | | |
| | | |
| | | |
+------------+---------+------------+
| 3 | 4 | 5 |
| | | |
| | | |
+------------+---------+------------+
| 6 | 7 | 8 |
| | | |
| | | |
| | | |
+------------+---------+------------+
すべての角のセルは 4x4 で、中央のセルは 3x3 です (残りのセルは 3x4 と 4x3 です)。次に、1x1 から 3x3 まで変化するこれらのブロック内に配置する一連の要素があります (4x4 はまだ必要ないと思いますが、何も変更しないはずです)。もちろん、これらの要素は境界線を越えることはできず、完全に 1 つのブロック内に配置する必要があります。
それらを割り当てる最良の方法はどれですか? 必要がない場合は、それらをすべてくっつけたくない場合を想定します (たとえば、2 つの要素を離して配置するのに十分なスペースがある場合は、2 つの要素を一緒に配置しないでください)。状況がかなり限られているため、単純なアルゴリズムを探しています..
おまけの質問: これらの 9 個のブロック (おそらく他の 3 ~ 4 個) に加えて、他のブロックがあると仮定すると、新しいブロックと比較してこれらのブロックを優先するにはどうすればよいでしょうか? (つまり、塗りつぶしのしきい値に達するまで、追加のブロックを使用しないということです)。
もちろん、私は一般的なアイデアを探していますが、実装はありません:)