| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Кроссворд |
| Автор: mr.Anderson 8.4.2009, 19:36 | ||||
| Очень прошу модераторов пока тему никуда не переносить... Суть программы: она должна по заданному списку слов составлять максимально связную кроссвордную сетку. Нумеровать строки и столбцы не надо, просто составить сетку. Это уровень лабораторной считается, поэтому метод решения предложен как полный перебор, хотя что конкретно пересчитывать - непонятно, препод ничего внятного не сказал. Завтра мне эту вещь сдавать, я месяц проломал над задачей голову, но ничего толком сделать не смог. Алгоритм у меня такой:
Вот что у меня написано на текущий момент:
Я очень прошу помочь с реализацией этого алгоритма, я путаюсь, что где хранить, что искать... Пожалуйста, помогите, эта лабораторная очень много решает. |
| Автор: zim22 8.4.2009, 20:16 | ||
| http://www.puzzle-maker.com/CW/ введи туда это:
title: hihihi "Create Puzzle" потом нажми потом клацни на слове "solution" в предложении Click solution to see and print a draft of the solution. круто, да? Добавлено @ 20:21 здесь есть исходники на си. http://pdos.csail.mit.edu/cgi-bin/theme-cword и здесь open source http://linux.wareseeker.com/free-crossword-puzzle-maker/ |
| Автор: mr.Anderson 8.4.2009, 20:32 |
| Круто-то оно круто, и даже работает... Да вот только не разберусь я за 6 часов в таком коде... Блин... |
| Автор: zim22 8.4.2009, 20:35 |
кода нет. оно на стороне сервера работает. исходники на си - то к другому кроссворду *** mr.Anderson, не хочешь смухлевать? взять готовую прогу и скормить её свой список слов. Т.е. твоя программа будет оболочкой для другой *** http://www.ibm.com/developerworks/linux/library/l-genperl3.html используя генетические алгоритмы кроссворд строили *** йес! я нашёл исходники! правда на delphi. но можно на С++ переписать, не проблема. с тебя пицот миллионов долларов! http://www.delphiforfun.org/Programs/CrosswordGen0.htm (там ссылка будет Download source) |
| Автор: mr.Anderson 8.4.2009, 21:38 |
| Мухлеж не прокатит, объяснять-то принцип работы все равно мне придется. За исходники спасибо, пригодятся, хотя как лаба не пойдет, там не консоль, + тоже тонны кода, разбирать нет времени. За линк тоже спасибо. Короче + в репу. ))) Попробую решить сам. Что будет, то будет. |
| Автор: Anikmar 8.4.2009, 22:41 |
А кто эту макимальность будет оценивать? Препод? Какими методами? Мне кажется нужно посчитать кол-во повторений букв во всех словах, затем, начиная с максимального пересекать слова. ЧТо-нибудь получится, наверное... |
| Автор: mr.Anderson 9.4.2009, 04:44 |
| Anikmar, я так пробовал, запутался))) Ща после семичасового кодинга и нуля часов спанья я уже вообще ничего не соображаю почти... Алгоритм-то есть... Нормальный... А вот сделать его - проблемка... Буду как-то выкручиваься завтра... Эм, сегодня то есть уже. |
| Автор: zim22 9.4.2009, 07:46 | ||
поэтому надо учиться программировать в стиле eXtreme Programming. |
| Автор: Anikmar 9.4.2009, 07:48 |
Это что такое? Придти к преподу с бейсбольной битой и попросить по-хорошему написать за себя прогу? |
| Автор: zim22 9.4.2009, 08:36 | ||
я думаю вы знаете, что такое XP, так что не буду утруждать себя объяснениями |
| Автор: Anikmar 9.4.2009, 09:05 | ||
зы. Честно говоря, я только сегодня узнал, что то чем я занимаюсь по-научному называется XP-программирование. |
| Автор: zim22 9.4.2009, 09:35 | ||
спасибо, поднял настроение! |
| Автор: Albor 9.4.2009, 14:05 |
| А почему бы не попробовать поступить проще, например "склеить" последовательно слова, по принципу игры в города, а всё что не "приклеилось" пустить отростками от полученной склейки. Чем не кроссворд? Зато быстро. Упс. Хотя, конечно, в условии сетка. |
| Автор: Anikmar 9.4.2009, 14:52 | ||
Там слов-то десяток. Не склеятся. |
| Автор: Killerman 15.4.2009, 15:54 |
| Я б делал так: для каждого слова искал бы слова с такими же буквами. Потом простым перебором: Ставлю первое слово вертикально, второе с такими же буквами пересекаю горизонатльно, следующее пытаюсь вклинить куда нить, начиная с 1-го столбика по последний вертикально, и перемещаю по всей длинне, а потом горизонтально. и так перебрать все комбинации. Затем следующе слово. Тупо конечно, на 20-ть слов может преребирать сутки, зато результат будет. |