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

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

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

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

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

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

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

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

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

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

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

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

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
к
 
 
 
 
 
 
 
 
 
 
 
 
о
 
 
 
 
 
 
 
 
 
 
 
 
й
 
 
 
 
 
 
 
м
у
л
 
 
о
 
 
 
 
 
 
 
 
 
е
н
о
т
 
 
 
 
 
 
 
 
 
м
 
 
 
 
 
 
 
 
 
 
 
м
у
с
т
а
н
г
 
 
 
 
 
 
 
р
 
у
 
 
и
 
 
 
 
 
 
 
 
 
к
 
 
п
 
 
 
 
 
 
 
 
 
а
 
 
п
 
 
 
 
 
 
 
 
 
н
 
с
о
м
 
 
 
 
 
 
 
 
 
 
 
п
 
 
 
 
 
 
 
 
 
 
к
р
о
т
 
 
 
 
 
 
 
 
 
 
 
т
 
 
 
 
 
 
 
 
 
 
 
п
а
н
д
а
 
 
 
 
 
 
 
 
 
м
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Слов: 10 Пересечений: 9 Ширина: 11 Высота: 16 Прощадь: 176
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
к
 
 
 
 
 
 
 
 
 
 
 
 
р
 
 
 
 
 
 
 
м
у
л
 
 
о
 
 
 
 
 
 
 
 
 
е
н
о
т
 
 
 
 
 
 
 
 
 
м
 
 
 
 
 
 
 
 
 
 
 
м
у
с
т
а
н
г
 
 
 
 
 
 
 
р
 
у
 
 
и
 
 
 
 
 
 
 
 
 
к
 
 
п
 
 
 
 
 
 
 
 
 
а
 
 
п
 
 
 
 
 
 
 
 
 
н
 
с
о
м
 
 
 
 
 
 
 
 
 
 
 
п
 
 
 
 
 
 
 
 
 
 
 
к
о
й
о
т
 
 
 
 
 
 
 
 
 
т
 
 
 
 
 
 
 
 
 
 
 
п
а
н
д
а
 
 
 
 
 
 
 
 
 
м
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Слов: 10 Пересечений: 9 Ширина: 11 Высота: 15 Прощадь: 165
 
 
 
 
 
 
 
 
 
 
 
 
 
 
м
у
л
 
 
 
 
 
 
 
 
 
 
 
 
е
н
о
т
 
 
 
 
 
 
 
 
 
м
 
 
 
 
 
 
 
 
 
 
 
м
у
с
т
а
н
г
 
 
 
 
 
 
 
р
 
у
 
 
и
 
 
 
 
 
 
 
 
 
к
 
 
п
 
 
 
 
 
 
 
 
 
а
 
 
п
 
 
к
 
 
 
 
 
 
н
 
с
о
м
 
р
 
 
 
 
 
 
 
 
 
п
 
 
о
 
 
 
 
 
 
 
 
к
о
й
о
т
 
 
 
 
 
 
 
 
 
т
 
 
 
 
 
 
 
 
 
 
 
п
а
н
д
а
 
 
 
 
 
 
 
 
 
м
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Слов: 10 Пересечений: 9 Ширина: 11 Высота: 13 Прощадь: 143
 
 
 
 
 
 
 
 
 
 
 
 
л
 
 
 
 
 
 
 
 
 
 
е
 
 
 
 
 
 
 
 
 
 
м
у
с
т
а
н
г
 
 
 
 
у
 
 
у
 
 
и
 
 
 
 
р
 
 
к
 
 
п
 
 
 
 
 
 
 
а
 
 
п
 
 
 
 
 
 
 
н
 
с
о
м
 
 
 
 
 
 
 
 
 
п
 
 
 
 
 
 
 
 
к
р
о
т
 
 
 
 
 
 
 
о
 
т
 
 
 
 
 
 
п
 
й
 
а
 
 
 
 
 
 
а
 
о
 
м
у
л
 
 
 
е
н
о
т
 
 
 
 
 
 
 
 
д
 
 
 
 
 
 
 
 
 
 
а
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Слов: 10 Пересечений: 9 Ширина: 9 Высота: 15 Прощадь: 135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
м
у
с
т
а
н
г
 
 
 
 
 
 
 
 
 
у
 
 
и
 
 
 
 
 
 
 
 
 
к
 
 
п
а
н
д
а
 
 
 
 
 
а
 
 
п
 
 
 
 
 
 
 
 
 
н
 
с
о
м
 
 
 
 
 
 
 
 
 
 
 
п
 
 
 
 
 
 
 
 
 
 
 
 
о
 
 
 
 
 
 
 
 
 
 
м
 
т
 
 
 
 
 
 
 
 
 
 
у
 
а
 
к
 
 
 
 
 
 
 
 
л
е
м
у
р
 
 
 
 
 
 
 
 
 
н
 
 
о
 
 
 
 
 
 
 
 
к
о
й
о
т
 
 
 
 
 
 
 
 
 
т
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Слов: 10 Пересечений: 10 Ширина: 11 Высота: 13 Прощадь: 143

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

 

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

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



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