Я пытаюсь построить генератор кроссвордов, и я проваливаюсь.
Я прочитал несколько статей (насколько я мог понять), изучил некоторый код, скачал Qwx
(https://www.quinapalus.com/qxw.html) и Crossword Compiler
(https://www.crossword -compiler.com /) и использовал некоторые онлайн-генераторы.
Многие попытки начинаются с сетки с помеченными ячейками, которые не следует использовать, или с какого-либо другого типа ограничений. Единственное мое ограничение - сетка должна быть прямоугольником. (или квадрат).
Я установил на свой Android приложение кроссвордов, и через несколько секунд оно создало сетку 13x13 с таким набором слов (я их не выбирал): fim democrata ion falsidade oma tripa esquadrao aga cem diretor rosas ousadia notar atear foi omega rmn menta quasis apa finlandes ela literario clinico tosse agata curador encomenda
.
Используя Crossword Compiler
(https://www.crossword -compiler.com / ) в режиме, в котором я могу определить слова, я использовал эти слова, и он предложил несколько решений, но ни одно из них не использовало28 слов.
В моей первой попытке пользователь выбрал набор слов, и программное обеспечение разместило бы их в сетке.
Мой подход:
- упорядочить слова по размеру, по убыванию
- создать подмножество из одного слова
- position it
- создать подмножество из двух слов
- расположить их
- создать подмножество из трех слов
- расположить их
- .. .
Проблема в том, что в наборе, например, 4 слова, и я не могу их расположить, у меня 23 (4! -1) другие возможности, путем изменения порядка слов в наборе (перестановка). Но, если у меня есть 10 слов, есть 3628800 возможностей. Я могу обрабатывать каждый набор отдельно, но даже в этом случае это очень большое число.
Итак, я пришел к выводу, что такой подход не решит проблему во многих ситуациях.
Кто-нибудь может предложить лучший вариант?
Большое спасибо !!