Я занимаюсь разработкой игры и обнаружил проблему, которую мне нужно решить, чтобы обработать компоновку компонента, которая напоминает мне проблему упаковки.
Подводя итог, что мне нужно сделать, предположим, чтополучил пространство, похожее на следующее:
+------------+---------+------------+
| 0 | 1 | 2 |
| | | |
| | | |
| | | |
+------------+---------+------------+
| 3 | 4 | 5 |
| | | |
| | | |
+------------+---------+------------+
| 6 | 7 | 8 |
| | | |
| | | |
| | | |
+------------+---------+------------+
, в котором каждая угловая ячейка имеет размер 4x4, а центральная - 3x3 (так что оставшиеся ячейки имеют размер 3x4 и 4x3).Затем у меня есть набор элементов для размещения внутри этих блоков, которые могут варьироваться от 1x1 до 3x3 (я не думаю, что 4x4 нужен, но это ничего не должно изменить).Конечно, эти элементы не могут пересекать линии и должны полностью находиться в одном блоке.
Какой может быть лучший способ их распределения?Предполагая, что я предпочитаю не склеивать их все, если в этом нет необходимости (например, не размещайте два элемента вместе, если вокруг достаточно места для их разделения).Я ищу простой алгоритм, также потому что ситуация довольно ограничена.
Бонусный вопрос: если предположить другие блоки в дополнение к этим 9 (может быть, другие 3-4), как я мог бы расставить приоритеты по сравнению сновые?(Я имею в виду просто не использовать дополнительный блок, пока не будет достигнут порог заполнения) ..
Конечно, я ищу общую идею, без реализации:)