Комбинаторика | |
---|---|
Вячеслав Клепинин Сообщений: 1597 Откуда: Санкт-Петербург Дата регистрации: 26.03.2004 |
Что-то тихо стало в этом топике. Поэтому предлагаю задачку по комбинаторике.
Идея - получить все возможные сочетания слов, с учётом указанных словоформ для каждого слова в словосочетании. Каждое слово в словосочетании (все слова - имена существительные) имеет неизменяемую (базовую) часть и перечень возможных окончаний, записываемых через символ "|", например: Строительн|ая|ую|ой компани|я|ю|ей|и Количество слов в словосочетании не ограничено. Нужно получить массив, содержащий все возможные комбинации словоформ - но без перестановки слов: 1. Строительная компания 2. Строительная компанию 3. Строительная компанией 4. Строительная компании 5. Строительную компания 6. Строительную компанию 7. Строительную компанией 8. Строительную компании 9. Строительной компания 10. Строительной компанию 11. Строительной компанией 12. Строительной компании Если кто поможет с алгоритмом, тому - будет большое спасибо! Ну а ежели кто даст код - то моя благодарность будет безгранична! Исправлено 4 раз(а). Последнее : Вячеслав Клепинин, 04.10.07 14:59 |
Re: Комбинаторика | |
---|---|
PaulWist Сообщений: 14621 Дата регистрации: 01.04.2004 |
Слава, что-то не понятно помимо имен существительных ты так же изменяешь окончание у прилагательного и это вроде противоречит постановки задачи
Цитата: А так на первый взгляд для имени существителього надо иметь все окончания, ну и дальше дело техники, другое дело если надо составить осмыссленные сочетания, тогда это действительно задачка. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Комбинаторика | |
---|---|
Вячеслав Клепинин Сообщений: 1597 Откуда: Санкт-Петербург Дата регистрации: 26.03.2004 |
Паша, да, это моя опечатка. Не только существительные.
Но я застрял именно для случая, когда слов в словосочетании несколько (и заранее неизвестно, сколько). |
Re: Комбинаторика | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
ИМХО
1. Кол-во слов в словосочетании (GETWORDCOUNT()) 2. Разбить словосочетание на слова 3. Кол-во окончаний для слова ((GETWORDCOUNT())) 4. И комбинируем, через вложенные циклы, например, а можно и через SELECTы ------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: Комбинаторика | |
---|---|
Вячеслав Клепинин Сообщений: 1597 Откуда: Санкт-Петербург Дата регистрации: 26.03.2004 |
Саша, а вот про пункт 4 можно поподробнее?
Первые три пункта я уже давно выполнял, а потом "застрял" - именно на четвёртом. Вот мой код:
Поле pn содержит порядковый номер слова в словосочетании. Исправлено 1 раз(а). Последнее : Вячеслав Клепинин, 04.10.07 16:25 |
Re: Комбинаторика | |
---|---|
ssa Автор Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
------------------ Лень - это неосознанная мудрость. |
Re: Комбинаторика | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Извиняюсь, писал на шестерке, так что функция word_num собственная.
|
Re: Комбинаторика | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
И от меня (писал в 9-ке стилем 7-ки)
------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: Комбинаторика | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
Слав, а мож padeg.dll лучше?
------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: Комбинаторика | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
Дык в 6-ке в foxtools.fll эти ф-ции есть
------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: Комбинаторика | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Да, есть вроде, но у меня она немного другая - сразу массив создает, на мой взгляд удобнее.
|
Re: Комбинаторика | |
---|---|
Вячеслав Клепинин Сообщений: 1597 Откуда: Санкт-Петербург Дата регистрации: 26.03.2004 |
Про padeg.dll - у меня её нету...
В общем, решение нашёл вот такое, с использованием рекурсии. Позволяет указывать от одного до произвольного количества слов, каждое из которых может иметь, а может и не иметь словоформ.
Нужно ещё немного доработать напильником, так как результат мне нужен именно в массиве, а не в курсоре. Но, главное, не сложно и работает правильно! Всем спасибо! |
Re: Комбинаторика | |
---|---|
ssa Автор Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
------------------ Лень - это неосознанная мудрость. |
© 2000-2024 Fox Club  |