Я работаю над идеей игры на основе плитки в Javascript. Это математическая игра-головоломка, в которой игроки перемещаются по плиткам с номерами на них, и цель состоит в том, чтобы соединить группы плиток, которые имеют сумму определенного числа целей, например 5 или 7 или 9.
Тем не менее, я застрял на алгоритме для обнаружения этих групп сумм. Я знаю, как сделать алгоритм заливки флудом с использованием рекурсии для обнаружения группы соседних плиток, как в той же игре . Но я не знаю, как перебрать все возможные перестановки возможных групп, и как лучше всего подойти к этому?
Поскольку проблема в том, что соседние листы образуют группу, но внутри этой группыплитки есть много возможностей для подгрупп. См. Пример плиток ниже
Tile letters Contains numbers
+---+---+---+ +---+---+---+
| A | B | C | | 1 | 5 | 2 |
+---+---+---+ +---+---+---+
| D | E | . | | 2 | 1 | . |
+---+---+---+ +---+---+---+
| F | . | . | | 4 | . | . |
+---+---+---+ +---+---+---+
Таким образом, группа - это все плитки A, хотя F, и подгруппой могут быть A, B и E (1 + 5 + 1), но также A, D и F (1+ 2 + 4). Но A, C и F не являются возможной группой, потому что эти плитки не смежны.
Как систематически пройти и оценить все возможные перестановки? Есть ли алгоритм для чего-то вроде этого? Или кто-нибудь может объяснить, как подойти к этой проблеме?