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