Соревнование:
Построить таблицу ASCII наиболее часто используемых слов в данном тексте.
Правила:
- Принимайте
a-z
иA-Z
(буквенные символы) как часть слова. - Игнорировать корпус (
She
==she
для нашей цели). - Не обращайте внимания на следующие слова (я знаю довольно произвольно):
the, and, of, to, a, i, it, in, or, is
Пояснение: учитывая
don't
: это будет восприниматься как 2 разных «слова» в диапазонахa-z
иA-Z
: (don
иt
).По желанию (сейчас уже слишком поздно для формального изменения спецификаций) вы можете отказаться от всех однобуквенных «слов» (это может также привести к сокращению списка игнорирования).
Проанализируйте данные text
(прочитайте файл, указанный с помощью аргументов командной строки или переданный по конвейеру; предположите us-ascii
) и создайте нам a word frequency chart
со следующими характеристиками:
- Отобразите диаграмму (см. Также пример ниже) для 22 наиболее распространенных слов (упорядоченных по убыванию частоты).
- Столбец
width
представляет количество вхождений (частоту) слова (пропорционально). Добавьте один пробел и напечатайте слово. - Убедитесь, что эти строки (плюс пробел-слово-пробел) всегда подходят :
bar
+[space]
+word
+[space]
должно быть всегда <=80
символов (убедитесь, что вы учитываете возможные различия длины строки и слова: например: второе наиболее распространенное слово может быть намного длиннее, чем первое пока не сильно отличается по частоте). Увеличьте ширину полосы в пределах этих ограничений и масштабируйте полосы соответственно (согласно частотам, которые они представляют).
Пример:
Текст для примера можно найти здесь ( Приключения Алисы в стране чудес, Льюис Кэрролл ).
Этот конкретный текст даст следующую диаграмму:
_________________________________________________________________________ | _________________________________________________________________________ | она | _______________________________________________________________ | ты | ____________________________________________________________ | сказал | ____________________________________________________ | Алиса | ______________________________________________ | был | __________________________________________ | который | ___________________________________ | так как | _______________________________ | ей | ____________________________ | с участием | ____________________________ | в | ___________________________ | s | ___________________________ | T | _________________________ | на | _________________________ | все | ______________________ | этот | ______________________ | для | ______________________ | было | _____________________ | но | ____________________ | быть | ____________________ | не | ___________________ | Oни | __________________ | так
К вашему сведению: это частоты, на которых построен график выше:
[(«она», 553), («ты», 481), («сказал», 462), («Алиса», 403), («был», 358), («тот ', 330), (' as ', 274), (' her ', 248), (' with ', 227), (' at ', 227), (' s ', 219), (' t ' , 218), ('on', 204), ('all', 200), ('this', 181), ('for', 179), ('had', 178), (' но «, 175), (« быть », 167), (« не », 166), (« они », 155), (« так », 152)]
Второй пример (чтобы проверить, реализовали ли вы полную спецификацию):
Замените каждый вхождение you
в связанном файле Алиса в стране чудес с superlongstringstring
:
________________________________________________________________ | ________________________________________________________________ | она | _______________________________________________________ | superlongstringstring | _____________________________________________________ | сказал | ______________________________________________ | Алиса | ________________________________________ | был | _____________________________________ | который | ______________________________ | так как | ___________________________ | ей | _________________________ | с участием | _________________________ | в | ________________________ | s | ________________________ | T | ______________________ | на | _____________________ | все | ___________________ | этот | ___________________ | для | ___________________ | было | __________________ | но | _________________ | быть | _________________ | не | ________________ | Oни | ________________ | так
Победитель:
Кратчайшее решение (по количеству символов, по языку). Радоваться, веселиться!
Редактировать : Таблица с подведением итогов (2012-02-15) (первоначально добавлено пользователем Nas Banov):
Язык Relaxed Строгий ========= ======= ====== GolfScript 130 143 Perl 185 Windows PowerShell 148 199 Mathematica 199 Рубин 185 205 Unix Toolchain 194 228 Python 183 243 Clojure 282 Скала 311 Haskell 333 Awk 336 R 298 Javascript 304 354 Groovy 321 Matlab 404 C # 422 Smalltalk 386 PHP 450 F # 452 TSQL 483 507
Числа представляют длину кратчайшего решения на конкретном языке. «Строгий» относится к решению, которое полностью реализует спецификацию (рисует |____|
столбцы, закрывает первый столбец сверху ____
строкой, учитывает возможность длинных слов с высокой частотой и т. Д.). «Расслабленный» означает, что некоторые свободы были взяты, чтобы сократить до решения.
Только решения короче 500 символов включены. Список языков отсортирован по длине «строгого» решения. «Unix Toolchain» используется для обозначения различных решений, использующих традиционную * nix оболочку плюс набор инструментов (таких как grep, tr, sort, uniq, head, perl, awk).
s
и t
представлены.