Доброе утро уважаемые форумчане. Возникла такая задача.
Есть текстовый файл (несколько десятков тысяч слов), в котором необходимо подсчитать и вывести слова и частоту их повторения. Ну скажем Top 100 самых часто повторяемых слов.
С моими знаниями в AutoIt, я бы брал последовательно каждое слово и делал цикл на весь файл в поисках повторений, но это наверное слишком долго. может есть какое то более изящное решение проблемы ?
Только мне кажется, что эта функция в примере от madmasles подходит для быстрого определения количества групп уникальных элементов практически в любом массиве (одномерном) и вполне достойна для включения в Array.au3? :laugh:
OffTopic:
Ребята, при всем уважении, скрипт на Perl работает на порядок быстрее (0,5 секунд против 6 секунд). На c# или python время будет около секунды. Т.е. если у вас не 1,5 мегабайт, а 1,5 гигабайта нужно распарсить, то лучше использовать языки, оптимизированные под обработку текста.
Чтобы не быть голословным, запустил оба скрипта в скайте:
http://smotr.im/8zYW
{x,} Repeat the previous character, set or group at least x times.
Но самое главное - это, конечно же, фокус с Assign и Eval.
Прямое нагибание интерпретатора. :laugh:
Скрипт, я конечно же переписал.
Не с целью посоревноваться с madmasles, а чтобы понять как это работает (хотя и добился скорости большей процентов на 10-15). :-[
OffTopic: Suppir, шел бы ты тусоваться в песочнице по перлу.
Вот это я сейчас IT-шникам скажу: "поставьте мне Perl"... Так мне ж завтра начнут задачи какие-то подкидывать - наваять фигню какю-то. Нафиг оно мне надо?!
:beach:
madmasles,
А с твоим скриптом я помучился... Пока не дошло что Assign в теле функци приравнивается к локальной переменной и из основного скрипта она не видна.
:wall_brake:
По перлу нет песочниц. Язык исчезающий - остались только динозавры. О регулярных выражениях читай книгу Джеффри Фридла.
Кстати, чтобы ты знал, в autoit, python, ruby, php, c#, d, c++2011, java и т.д. используются регулярные выражения Perl (PCRE-подобные).
vaf,
[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос! Вверху или внизу темы нажмите на ссылку такого вида: