Составляем кроссворды

Разгребал старые книги в шкафу. Нашел экземпляр Чарльза Уэзерелла «Этюды для программистов». 1982 г, друзья! Одна из задач мне понравилась настолько, что я решил её запрограммировать в свободное время.

Называется она «Крисс-Кросс или эвристическое составление головоломки». Автор позаимствовал этюд из еще более древней книжки — Армбрастера Ф. «Компьютерные кроссворды», 1974 г.

Кроссворд  по вашим словам

Вы вводите слова, а программа их компонует в кроссворд. Применений этому может быть масса. Возможно, вы учитель, и хотите разнообразить учебный процесс, дав детям решать кроссворд. Тогда тут вы можете попробовать его составить.

Кроме кроссворда, где нужно угадывать слова, есть, оказывается, более простая задача — крисс-кросс. Тут слова угадывать не надо, так как список слов сразу дан и нужно заполнить им заданную сетку. А сетку как раз и рисует программа.

В книге в качестве примера был нарисован кроссворд из десятка слов, названий разных животных. Можете их попробовать ввести. Или более простые компоновки, к примеру: камень, ножницы, бумага.

Кроме поиска решения, эта задача предполагает оптимизацию решения. Я поиграл с разными вариантами, остановившись на таком критерии — наиболее оптимальным считается решение с большим числом перекрестий и/или меньшей площадью.

Я вывожу не более пяти найденных компоновок кроссвордов. Поиск ограничен во времени, т.к. выполняется на стороне сервера.

Сборщик кроссворда

Введите слова для создания кроссворда. Разделяйте слова запятыми, пробелами, переносом строки, в общем так, как вам удобно.

Варианты кроссвордов

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
м
 
 
 
 
 
 
 
 
 
 
 
 
 
 
у
 
 
 
 
 
 
 
к
 
 
 
 
 
 
л
е
м
у
р
 
 
с
о
м
 
 
 
 
 
 
н
 
 
 
 
 
 
й
 
г
и
п
п
о
п
о
т
а
м
 
 
 
о
 
 
 
а
 
 
 
т
 
 
у
 
 
 
т
у
к
а
н
 
 
 
 
 
 
с
 
 
 
 
 
р
 
д
 
 
 
 
 
 
т
 
 
 
 
 
о
 
а
 
 
 
 
 
 
а
 
 
 
 
 
т
 
 
 
 
 
 
 
 
н
 
 
 
 
 
 
 
 
 
 
 
 
 
 
г
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Слов: 10 Пересечений: 9 Ширина: 13 Высота: 11 Прощадь: 143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
м
 
 
 
 
 
к
 
 
 
 
 
л
е
м
у
р
 
 
 
с
о
м
 
 
 
 
 
 
 
с
 
 
 
 
 
й
 
г
и
п
п
о
п
о
т
а
м
 
 
 
о
 
 
 
а
 
 
 
 
а
 
у
 
 
 
т
у
к
а
н
 
 
 
 
н
 
л
 
 
 
 
 
р
 
д
 
 
 
 
г
 
 
 
 
 
 
 
о
 
а
 
 
 
 
 
 
 
 
 
е
н
о
т
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Слов: 10 Пересечений: 9 Ширина: 13 Высота: 9 Прощадь: 117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
м
 
 
 
 
 
 
 
 
 
 
 
 
 
 
у
 
 
 
 
 
 
 
 
 
 
 
 
 
 
л
е
м
у
р
 
к
 
 
 
 
 
 
 
 
 
 
у
 
 
с
о
м
 
 
 
 
 
 
 
 
 
с
 
 
 
й
 
 
 
п
 
 
 
е
н
о
т
 
 
 
о
 
 
 
а
 
 
 
 
 
 
а
 
 
 
т
у
к
а
н
 
 
 
 
 
 
н
 
 
 
 
 
р
 
д
 
 
 
 
 
 
г
и
п
п
о
п
о
т
а
м
 
 
 
 
 
 
 
 
 
 
 
т
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Слов: 10 Пересечений: 10 Ширина: 13 Высота: 10 Прощадь: 130
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
м
 
 
 
к
 
 
 
 
 
 
 
 
 
 
 
у
 
 
с
о
м
 
 
 
 
 
 
 
л
 
 
с
 
 
 
й
 
 
 
п
 
 
 
 
е
н
о
т
 
 
 
о
 
 
 
а
 
 
 
 
м
 
 
а
 
 
 
т
у
к
а
н
 
 
 
м
у
л
 
н
 
 
 
 
 
р
 
д
 
 
 
 
р
 
 
г
и
п
п
о
п
о
т
а
м
 
 
 
 
 
 
 
 
 
 
 
 
т
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Слов: 10 Пересечений: 10 Ширина: 14 Высота: 8 Прощадь: 112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
м
 
 
 
к
 
 
 
 
 
 
 
 
 
м
у
л
 
с
о
м
 
 
 
 
 
 
л
 
 
с
 
 
 
й
 
 
 
п
 
 
 
е
н
о
т
 
 
 
о
 
 
 
а
 
 
 
м
 
 
а
 
 
 
т
у
к
а
н
 
 
 
у
 
 
н
 
 
 
 
 
р
 
д
 
 
 
р
 
 
г
и
п
п
о
п
о
т
а
м
 
 
 
 
 
 
 
 
 
 
 
т
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Слов: 10 Пересечений: 10 Ширина: 13 Высота: 8 Прощадь: 104

Написать комментарий

 

Комментарии к «Составляем кроссворды»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: