|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.03.2010, 00:41 | #1 |
Пользователь
Регистрация: 22.03.2009
Сообщений: 58
|
Рандомизация текста
Здравствуйте, возникла ситуация в которой хотелось бы написать алгоритм на Delphi, который генерирует уникальный текст на основе заданного шаблона для выборки, например:
Код:
Код:
Код:
|
21.03.2010, 01:45 | #2 |
Форумчанин
Регистрация: 04.11.2007
Сообщений: 117
|
Массив строк и
random(x);
Перед тем, как выложить код, я его всегда проверяю.
Если помог - тыкни на на весы слева, под аватарой. |
21.03.2010, 02:25 | #3 |
Форумчанин
Регистрация: 02.04.2009
Сообщений: 235
|
Зашибись у тебя задачка. Это же надо быть таким мазохистом. Хотя по сути программисты- мазохисты своего мозга )))
И че прямо по данному шаблону надо все сделать или возможны другие варианты построения предложений. Просто таких предложений можно сделать уйму. Как осмысленных так и вообще не связанных предложений по смыслу
Всё гениальное - просто!
|
21.03.2010, 06:34 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
HoLToFF, вполне реально. прямо по предложенному шаблону.
Надеюсь, внутри вариантов подварианты недопустимы?.. А так, простейший алгоритм — читаем из входного потока(файла) и, пока не встретили открывающую фигурную скобку, всё выводим в выходной поток(файл). Как только встретили открывающую фигурную скобку - ничего не выводим, всё читаем в память (если программа пишется на Delphi, я бы предложил использовать TStringList, просто возни чуть меньше, но можно и просто массив строк заполнять), разбивая по разделителю |, читаем до тех пор, пока не встретили закрывающую фиг.скобку. Как только встретили - сразу генерим случ. число от 1 до Кол-ваСчитанныхВариантов, и в выходной поток(файл) выводим случайный вариант, продолжаем выполнять... всё абсолютно просто, я бы такую программку минут за 25 написал... p.s. обратите внимание, в исходном шаблоне у Вас ошибка структуры: лишняя закрывающая фиг.скобка после трудности} |
21.03.2010, 08:22 | #5 |
Пользователь
Регистрация: 22.03.2009
Сообщений: 58
|
Serge_Bliznykov, спасибо за совет, но к сожалению, это не лишняя закрывающая скобка, а как раз вложенный подвариант, что очень усложняет задачу. Алгоритм без вложенности я себе четко представлял.
|
21.03.2010, 08:44 | #6 |
Форумчанин
Регистрация: 19.09.2009
Сообщений: 166
|
Ну тогда применяй динамическое программирование, так как неизвестно сколько там будет вложенных подвариантов, ну и рекурсивную процедуру анализа текста, которая сначала считывает у память то, что после знака { , затем если в данном тексте вновь встречается знак { она вызывает сама себя и все повторяется сначал. В итоге у вас будет множество массивов строк или как вам удобней в память запихать, сами уж смотрите, и после чего рандомно выбираете из предложенных вариантов. Идея думаю ясна )
|
21.03.2010, 11:36 | #7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Deamonig полностью, на 100%, согласен. либо динамически создавать структуры (поверьте, это несложно), либо, великолепнейшее решение через рекурсию - функцию, которая возвращает случайное значение одного из вариантов, заключённых в фигурные скобки. |
|
21.03.2010, 13:40 | #8 |
Пользователь
Регистрация: 22.03.2009
Сообщений: 58
|
Реализовал через рекурсию, всем спасибо за помощь
|
19.10.2010, 00:05 | #9 |
Новичок
Джуниор
Регистрация: 19.10.2010
Сообщений: 1
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Форматирование текста | Tomoyo | HTML и CSS | 2 | 18.07.2013 19:33 |
Генератор текста, Анализатор текста, График, С++ | darel | Помощь студентам | 0 | 14.03.2010 20:15 |
Псевдо случайные числа (Рандомизация) | Demien | Общие вопросы Delphi | 7 | 16.07.2009 03:58 |
Рандомизация (BDelphi) | VadEr | Помощь студентам | 3 | 24.03.2009 16:06 |
Вставка текста | Pedro | Общие вопросы Delphi | 4 | 27.01.2008 10:27 |