Я хочу сгенерировать все уникальные сетки кроссвордов определенного размера (4x4 - хороший размер). Все возможные головоломки, включая неуникальные головоломки, представлены двоичной строкой с длиной области сетки (16 в случае 4x4), поэтому все возможные головоломки 4x4 представлены двоичными формами всех чисел в диапазоне 0 до 2 ^ 16.
Создать их легко, но мне любопытно, есть ли у кого-нибудь хорошее решение для того, как программно устранить недопустимые и повторяющиеся случаи. Например, все головоломки с одним столбцом или одной строкой функционально идентичны, что исключает 7 из этих 8 случаев. Кроме того, согласно соглашениям кроссвордов, все квадраты должны быть смежными. Я успешно удалил все дублирующиеся структуры, но мое решение заняло несколько минут и, вероятно, не было идеальным. Я в некотором затруднении из-за того, как обнаружить смежность, поэтому, если у кого-то есть идеи по этому поводу, это будет высоко ценится.
Я бы предпочел решения на python, но пишу на любом языке, который вы предпочитаете. Если кто-то захочет, я могу опубликовать свой код на Python для генерации всех сеток и удаления дубликатов, как бы медленно это ни было.