|
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 790
|
||||||
RAD 2009-XE2 Как найти строки, сохраняя их порядок?12.10.2022, 04:42. Показов 3787. Ответов 70
Метки нет (Все метки)
Здравствуйте, возник вопрос как сохранить порядок всех слов найденных в строке если например ищу через pos по файлу, а в файле само собой слова не по порядку идут ?
Просто я использую массив для этого он сохраняет много пустых строк от начала и с конца =(
0
|
||||||
| 12.10.2022, 04:42 | |
|
Ответы с готовыми решениями:
70
Переместить все цифры в конец, а остальные символы в начало строки, сохраняя порядок взаимного расположения
|
|
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 790
|
|||||||
| 19.10.2022, 03:59 [ТС] | |||||||
|
Добавлено через 2 часа 0 минут Наконец то сработало всем огромное спасибо за помощь кто помогал=)
0
|
|||||||
|
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
|
||||||||||||
| 19.10.2022, 10:07 | ||||||||||||
|
в 40 строке желательно сделать цикл до n-1 (так правильно и красивее)
Лучше сортировать не массив ar, а его индексы. Теоретически это может дать малюсенький выигрыш. Впрочем, если в коде присутствует вывод в мемо, то по сравнению в выводом в визуальный компонент и его отображением все эти выигрыши в несколько миллисекунд никому не нужны и ничего на дадут. ну и ещё, вдогонку.. уж извини, но небольшая ложечка дёгтя... Только я вчера увидел ещё один косяк в твоём алгоритме поиска слов. В связи с тем, что ты ищешь вхождение словарных слов в свою строку, ты легко можешь получить ложные срабатывания поиска - когда поиском найдётся словарное слово, входящее как часть другого слова в строке. пример. пусть есть такой словарь слов wordlist.txt
найди следующие слова: лунатик пежиковый абастумани безталантный Уже догадываешься, что при этом произойдёт?
1
|
||||||||||||
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
||
| 19.10.2022, 10:12 | ||
|
Тогда вхождение в более длинное слово будет исключено вроде...
2
|
||
|
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
|
|||||||
| 19.10.2022, 10:15 | |||||||
|
решить эту проблему можно, нужно изменить алгоритм поиска. Либо совсем его переделать, либо, если ты этого не хочешь, можешь добавить разделители слов.
У тебя же только пробелы допускаются в строке поиска? Тогда добавь пробелы при поиске слов. только не забудь и в строку, где ты ищешь слова добавить пробелы в начале и конце строки:
строчка луна,ежик,туман уже не будет работать.Но, похоже, что у Uefi220 как раз только пробелы и используются.
2
|
|||||||
|
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 790
|
|||
| 19.10.2022, 10:17 [ТС] | |||
|
Добавлено через 1 минуту
0
|
|||
|
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
|
||
| 19.10.2022, 10:18 | ||
![]() ну, тогда ладно, можно на проблему возможных коллизий не обращать внимания..
0
|
||
|
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 790
|
||
| 19.10.2022, 10:24 [ТС] | ||
|
0
|
||
|
14 / 11 / 3
Регистрация: 14.08.2022
Сообщений: 157
|
|
| 22.10.2022, 00:44 | |
|
я так и не понял в чем собственно проблема.
что мешает читать каждое слово в буфер а потом сравнивать его с списком? да, скорость падает с увеличением списка, но не до такой степени, как кажется на первый взгляд. А если въехать в алгоритм Мура то все будет намного быстрее. Не ясно только что с этими словами делать? Подсчитать их количество или найти все вхождения в тексте? Или еще определить строку, в смысле абзац, где оно находится.
0
|
|
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
||
| 22.10.2022, 10:32 | ||
|
Но с С++ я не переведу... https://pastebin.com/cRqnPZyC
0
|
||
|
14 / 11 / 3
Регистрация: 14.08.2022
Сообщений: 157
|
||
| 22.10.2022, 13:30 | ||
|
А принцип крайне прост. Все что нужно и словарь и слова превратить в числа и все. Есть такое волшебное слово хеш-сумма. Вначале вычисляется хеш словаря. Потом основной цикл читает строку по буквам и по достижении конца слова (не буква) выдает хеш полученной буквенной последовательности. И тут вспомогательный цикл сравнивает этот хеш, с хешами словаря. На этом принципе построены многие поисковые системы, в том числе и система идентификации по паролю. Алгоритм Ахо-Корасик вообще тихий ужас. Заводить кучу буферов, проталкивать в них данные. вычислять заполнение. потом восстанавливать все...
0
|
||
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
||
| 22.10.2022, 14:06 | ||
|
А вообще есть интересное чтиво со сравнением "The Exact String Matching Problem: a Comprehensive Experimental Evaluation" https://arxiv.org/pdf/1012.2547v1.pdf Но там нет алгоритмов новее 2010 в сравнении. Добавлено через 12 минут https://www.rsdn.org/article/alg/textsearch.xml А вот и бойер мур на паскале
0
|
||
|
14 / 11 / 3
Регистрация: 14.08.2022
Сообщений: 157
|
||
| 22.10.2022, 14:54 | ||
|
таблицы какие-то смещения.... Когда я делал свой алгоритм я не слышал ни про мура ни про прочих. А потом где-то попался поиск на хеш-сумме, но мне почему-то въелся этот мур. Мой алгоритм это интеграл хеш функции. То есть по сути каждый текущий корректный символ является аргументом хеш-функции на каждом шаге. И по мере сложения результатов получаем общую сумму. Тут дело лишь в том, что хеш-функция должна быть простой, быстрой и не допускать коллизий. у меня пока проблем с этим нет. Все работает четко. хеш вычисляется на int64 и ограничение на длину текста с учетом юникода 16 2 гига (поскольку в паскаль нет такого числа без знака.) кроме того есть и ухищрения в виде таблицы, которая, хотя и занимает в базовом варианте 128К а в расширенном 256К (для UTF-16) но зато существенно влияет на скорость чтения символов.
0
|
||
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
|||
| 22.10.2022, 18:28 | |||
|
Хеш (в идеале) даст только одно совпадение без коллизий. А интеграл по своему смыслу приближённое вычисление (ибо компуктер не умеет в бесконечную точность). И символы слов конечны(для каждого алфавита), их не возможно интегрировать... Получается вы считали хеш от алфавита накапливая его сумму для слов? Если так то терялся порядок букв. А чтобы его не потерять нужно учитывать положение символа при вычислении хеша... Будет время почитаю на досуге глубже. Мне кажется это очень вычислительно неоптимально...
0
|
|||
|
14 / 11 / 3
Регистрация: 14.08.2022
Сообщений: 157
|
||
| 22.10.2022, 20:23 | ||
|
Что касается привязки. О какой именно привязке. Вы знаете начало слова вот вам и привязка. дошли до другого слова, опять привязываете. У меня модуль давно написан. я им пользуюсь. а для вас странно. Что такое интеграл вы вообще не в курсе. при чем тут вообще буквы? Поиск идет не по буквам а по бинарным данным. то есть по текущему коду. Я могу читать строку через ord() или поток через числовую переменную. без разницы. эти числа играют роль аргумента. они вычисляются по формуле на каждой итерации. когда достигнут конец слова имеем уникальное число. это и есть хеш.
0
|
||
| 22.10.2022, 21:08 | |||||
|
Не по теме:
Только было это уже лет 19 назад. и поскольку я не математик то позабыл уже.
0
|
|||||
|
14 / 11 / 3
Регистрация: 14.08.2022
Сообщений: 157
|
||
| 22.10.2022, 21:43 | ||
|
Что касается скорости, разницы не заметил. пробовал и с DWord и int64 и вообще, у меня 7-ка. а 8 байтовый int введен с 5 версии.
0
|
||
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
|||
| 22.10.2022, 21:48 | |||
|
На среднем тексте, в байтах/сек или Мб/сек ? читал недавно от яндекса статью по теме у них индексированная база архивированных хешей 500-800 Мб скорость на 1 поток.
0
|
|||
|
57 / 52 / 5
Регистрация: 18.11.2018
Сообщений: 295
|
|
| 22.10.2022, 21:49 | |
|
0
|
|
| 22.10.2022, 21:59 | |
|
Не по теме: Предлагаю растянуть эту тему еще как минимум на десять страниц, вывести в топ по количеству просмотров. Затем присвоить этой теме почетный знак "Почетный полный <Пи-зЦ>"; затем каждой подобной теме, присваивать таким темам оценки от белочки и северного пушистого зверька до полного, и лютого... :)
0
|
|
| 22.10.2022, 21:59 | |
|
В массиве, все элементы которого различны, найти и удалить n наименьших элементов, «поджимая» массив к началу и сохраняя порядок следования C/C++
Как переставить первые два и последние два элемента местами в массиве, сохраняя порядок их следования? Bывести числа от A до B, сохраняя заданный порядок Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|