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