Tad, проверь на строках длиной по 1 - 2 Mb, минимум. Вот тогда и посмотрим результат, а так это -- пустые слова
Этот топик читают: Гость
Разработчик
Ответов: 26200
Рейтинг: 2137
|
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco, строку длинной в 1-2 мб еще придумать надо.
![]() Подскажи - где такую найти ? ------------ Дoбавленo в 17.13: Леонид писал(а): эту схему я не буду даже скачивать![]() ![]() |
|||
карма: 25 |
|
Разработчик
Ответов: 26200
Рейтинг: 2137
|
|||
Tad писал(а): строку длинной в 1-2 мбВозьми обычный текст такой длины, вот тебе и строка |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco писал(а): Возьми обычный текст такой длиныИ так сделает любой нормальный человек. |
|||
карма: 25 |
|
Разработчик
Ответов: 26200
Рейтинг: 2137
|
|||
Tad писал(а): И так сделает любой нормальный человекЕсть и не нормальные, которые могут искать во всем тексте. Особенно, если это текстовый стрим. Tad, завязывай разводить демагогию на пустом месте, тебе что, делать нечего ![]() |
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
nesco писал(а): откуда ясно, что никто ничего менять не будетэтого от туда не ясно. Существующая реализация posex тоже не оптимальна. |
|||
карма: 27 |
|
Разработчик
Ответов: 26200
Рейтинг: 2137
|
|||
Dilma писал(а): Существующая реализация posex тоже не оптимальнаА у тебя уже есть более оптимальный вариант, поделись решением ![]() |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco писал(а): Для себя -- пожалуйста, сколько угодноВместо кроссворда. ![]() А вообще-то "завязывать разводить демагогию" не стоит. Assasin почему обратил внимание на PosEx ? Ну какая-то она не такая: если ищем с начала, то применяем стандартную Pos() паскаля, а если с какойто позиции, то начинаем перебирать по одной букве (между прочим та же стандартная Pos(), но написанная своими руками - индусский код называется ) и искать - совпало - начинаем сравнивать вторую. И т.д. И мысль Assasin-а - отбросить лишнее и применить стандартную Pos мне больше нравится. Попробуй найти : Сколько раз в каком-то тексте встречается какое-то слово. И придешь именно к алгоритму Assasin, как самому оптимальному. ИМХО. |
|||
карма: 25 |
|
Разработчик
Ответов: 26200
Рейтинг: 2137
|
|||
Tad писал(а): И придешь именно к алгоритму Assasin, как самому оптимальномуСамый неоптимальный вариант, кстати, особенно, сам Pos и тупое копирование куска строки, которое там нафиг не впало. Надо пробовать реализовать алгоритим Бойера-Мура, который считается саммым быстрым алгоритмом общего назначения. Буду пробовать, там посмотрим, что получится, одно только ясно, что такая реализация не сделает меньшим код, но должна сильно увеличить быстродействие поиска в больших текстах |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco писал(а): Буду пробовать, там посмотримnesco писал(а): тебе что, делать нечего ? ![]() ![]() ![]() ![]() А задачка то интересная ![]() Вот тебе и демагогия. ![]() P.S. Assasin говорил, что язык показывать - некультурно. ![]() |
|||
карма: 25 |
|
Разработчик
Ответов: 26200
Рейтинг: 2137
|
|||
Вот что получилось
На данный момент это считается наиболее быстрый универсальный алгоритм. Преимущество его начинает замечаться на длинах подстроки > 6 символов |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Не проходит тест на волшебном слове проверки .
![]() code_17871.txt ------------ Дoбавленo в 10.32: nesco, посьба - выкладывать коды в свернутом виде (или ХХХХ.txt или ХХХХ.sha) ![]() А ведь обещал ! ------------ Дoбавленo в 11.36: Пока по компактности кода я на первом месте (от скромности я не умру ![]()
![]() ![]() |
|||
карма: 25 |
| ||
файлы: 1 | code_17871.txt [3.3KB] [204] |
Разработчик
Ответов: 26200
Рейтинг: 2137
|
|||
Tad писал(а): Не проходит тест на волшебном слове проверки А вообще-то, там небольшая неточность в коде ![]()
Tad писал(а): длинна результирующих кодов, как я уже писал, АЖ ! на 36 байтВ сравнении с чем ![]() Tad писал(а): тоже критерийЧей критерий ![]() И нафиг твоя компактность кому впала, ты что, проги для микропроцессоров пишишь с ограниченной паматью ![]() И напоследок -- Tad писал(а): CopyEnd(s,offset)![]() ------------ Дoбавленo в 12.22: Tad писал(а): посьба - выкладывать коды в свернутом виде (или ХХХХ.txt или ХХХХ.sha)Не слищком уж и большая портянка, зато, править можно, если ошбки найдутся. А файлы ХХХХ.txt или ХХХХ.sha у меня, в Опере, не читаются нормально |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco писал(а): не хорошее решение, сможешь написать без него ? nesco писал(а): В сравнении с чем nesco писал(а): Нет таких слов и не было никогда, об этом везде написано, что это выдуманная проверка на "нечистые" слова.nesco писал(а): И нафиг твоя компактность Аксиома писал(а): Краткость сестра таланта ![]() nesco писал(а): ты что, проги для микропроцессоров пишишь с ограниченной паматью ?![]() ------------ Дoбавленo в 12.51: nesco писал(а): Не слищком уж и большая портянка, зато, править можно, если ошбки найдутся. А файлы ХХХХ.txt или ХХХХ.sha у меня, в Опере, не читаются нормально |
|||
карма: 25 |
|
Разработчик
Ответов: 26200
Рейтинг: 2137
|
|||
Tad, ты последний выложенный код проверил, или как
![]() Как его быстродействие ![]() На твоем супер-пупер слове, результат у меня не в пользу штатного и позиция первого вхождения определяется совершенно правильно. То, что я предложил ни на какие внешние функции не ссылается, ни на Pos, ни на CopyEnd, он чисто -- сам в себе |
|||
карма: 22 |
|