Сколько можно составить новых слов из слова "обороноспособность"? Не менее 74. А из слова "автомобилеразгрузчик"? Не менее 1500! Итак, вот схема для экспериментов с поиском слов в словах (требуется вложенный russian.txt).
Этот топик читают: Гость
Ответов: 1926
Рейтинг: 172
|
|||
карма: 9 |
| ||
файлы: 1 | oboronosposobnost.rar [147.8KB] [701] |
Ответов: 2265
Рейтинг: 676
|
|||
HiAsm писал(а): Element SplitStr not found in current palette |
|||
карма: 11 |
|
Ответов: 1926
Рейтинг: 172
|
|||
Исправил в исходном файле, заменил этот (мой) компонент на эквивалентную схему.
|
|||
карма: 9 |
|
Ответов: 8926
Рейтинг: 823
|
|||
3042, словарик надо поболее найти [flood]Как же мне неприятны крашенные, с разрывом линий, раскиданные на два экрана схемы [/flood]
компактнее.jpg |
|||
карма: 19 |
| ||
файлы: 1 | компактнее.jpg [130KB] [1263] |
Ответов: 1926
Рейтинг: 172
|
|||
Леонид, согласен, да где ж его взять-то?
------------ Дoбавленo в 22.06: [flood]А я наоборот, люблю разрывы, т.к. лучше с ними ориентируюсь На вкус и цвет...[/flood] |
|||
карма: 9 |
|
Ответов: 8926
Рейтинг: 823
|
|||
3042, а интернет на что? первая ссылка по "обратный словарь русского языка" и он на Яндекс-диске https://yadi.sk/d/sA_xJHqZhcJ5d, может и лучше есть
|
|||
карма: 19 |
| ||
Голосовали: | 3042 |
Ответов: 16884
Рейтинг: 1239
|
|||
Леонид писал(а): словарик надо поболее найти 3042 писал(а): Сколько можно составить новых слов из слова "обороноспособность"?А если быть совсем точным, то всего на 7 разных букв. А цепочка из StrCase и Delete вообще отстой - сначала варим барана, а потом снимаем с него шкуру. Отличный пример для начинающих. |
|||
карма: 25 |
|
Ответов: 1926
Рейтинг: 172
|
|||
Tad писал(а): А цепочка из StrCase и Delete вообще отстой - сначала варим барана, а потом снимаем с него шкуру.Такой уж у меня словарь, не стал я его менять, хотя это, конечно, влияет на производительность. Tad писал(а): Точно знаю, что составленные слова могут начинаться на 11 разных букв. Зачем перебирать весь словарь ?хорошая мысль Леонид писал(а): обратный словарь русского языкаА почему именно "обратный"? |
|||
карма: 9 |
|
Ответов: 8926
Рейтинг: 823
|
|||
3042, как правило в "обратных" словарях (сортировка по алфавиту справа) только "голые" слова без толкования
|
|||
карма: 19 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
3042 писал(а): Tad писал(а)А цепочка из StrCase и Delete вообще отстой - сначала варим барана, а потом снимаем с него шкуру. Такой уж у меня словарь, не стал я его менять, хотя это, конечно, влияет на производительность. Удали лишнее - потом Lower. ------------ Дoбавленo в 11.49: Когда-то была подобная задача. Вот сегодня нашёл свой IC и переделал под твою задачу:
И, насколько я помню, компонент ArraySort работает нормально с русскими буквами только с компилятором FPC, а вот с Delphi нет. |
|||
карма: 25 |
|
Ответов: 1926
Рейтинг: 172
|
|||
Tad, У меня после выполнения этого кода получилось получилось "бнопрст", это не 11, а 7 букв. Да и удалять повторы букв нельзя, ведь суть задачи в том, чтобы составить новые слова, используя все имеющиеся буквы с учётом их количества.
|
|||
карма: 9 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
3042 писал(а): это не 11, а 7 букв."бнопрст" - это список начальных букв для чтения слов из словаря, т.е. все составленные слова могут начинаться только на эти буквы и ни на какие другие. Если слово, считанное со словаря, начинается на какую-то другую букву, то не надо его прогонять через цепочку Delete->Lower->Memory->Length->If_else->Copy-> и т.д. А ты гонишь весь словарь. Считанное слово начинается на одну из этих букв? Да - работаем с ним, Нет - без лишних слов (затрат времени на прогон через цепочку) берем следующее и т.д. Как-то так. |
|||
карма: 25 |
|
Ответов: 1926
Рейтинг: 172
|
|||
Tad, у меня как: ключевое слово разбивается на буквы, которые заносятся в список. А затем берётся слово из словаря, и с него начинает выдаваться по одной букве: 1-я, 2-я, 3-я и пр. Каждая из них проходит проверку: входит ли она в набор букв ключевого слова. Как только какая-то буква не входит в набор букв ключевого слова, проверяемое слово словаря отбрасывается. Сначала проверяется именно первая буква! Так что если первая буква не входит в набор букв ключевого слова, то словарное слово сразу отбросится, по сути, что ты и предлагаешь.
Lower нельзя выкинуть, от delete можно избавиться, просто убрав всё лишнее в словаре, Copy тоже останется (им мы будем копировать ту самую первую букву). |
|||
карма: 9 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
3042 писал(а): Lower нельзя выкинутьИли я не доходчиво объясняю ? Tad писал(а): Словарь здесь вообще ни при чем.Удали лишнее - потом Lower. 7о_m.rar Во всяком случае через длинную цепочку обработки я пропускаю на ~5500 слов из словаря меньше.(Для "Обороноспособность") Смотри Caption формы. 1. Кстати, само слово "Обороноспособность" из списка результата исключать нельзя. Оно тоже составлено из тех же букв. Но это дело вкуса. 2. А всего из "Обороноспособность" можно составить 75 слов. (а не 74) |
|||
карма: 25 |
| ||
файлы: 1 | 7о_m.rar [1.7KB] [346] |
Ответов: 1926
Рейтинг: 172
|
|||
Tad писал(а): А я и не предлагал ничего выбрасывать. Я предлагал поменять их местами. Сначала удалить ненужное, а потом уже Lower.Я вот про это: Tad писал(а): то не надо его прогонять через цепочку Delete->Lower->Memory->Length->If_else->Copy-> и т.д.В любом случае, для каждого слова придётся использовать copy, lower, возможно memory. Но цепочка действительно получается меньше. |
|||
карма: 9 |
|