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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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



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