构建给定文本中最常用单词的 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
)中的两个不同的“单词”。
也可以选择 (现在正式更改规范为时已晚) ,梅选择删除所有单字母“ words”(这也可能导致忽略列表的缩短)。
解析给定的 text
(读取通过命令行参数指定的文件或通过管道输入的文件; 假设为 us-ascii
) ,并构建具有以下特征的 word frequency chart
:
width
表示单词的出现次数(频率)(按比例)。附加一个空格并打印单词。bar
+ [space]
+ word
+ [space]
应该始终是 < = 80
字符(确保你考虑到可能的条形码和单词长度的不同: 例如: 第二个最常见的单词可能比第一个长得多,但频率不会有太大的差异)。最大化条宽度在这些约束和比例适当的条(根据频率,他们代表)。举个例子:
示例 可以在这里找到(《爱丽丝漫游奇境记》刘易斯 · 卡罗尔著)的文本。
这一具体案文将产生以下图表:
_________________________________________________________________________ |_________________________________________________________________________| she |_______________________________________________________________| you |____________________________________________________________| said |____________________________________________________| alice |______________________________________________| was |__________________________________________| that |___________________________________| as |_______________________________| her |____________________________| with |____________________________| at |___________________________| s |___________________________| t |_________________________| on |_________________________| all |______________________| this |______________________| for |______________________| had |_____________________| but |____________________| be |____________________| not |___________________| they |__________________| so
供你参考: 这些是上面图表所建立的频率:
[('she', 553), ('you', 481), ('said', 462), ('alice', 403), ('was', 358), ('that ', 330), ('as', 274), ('her', 248), ('with', 227), ('at', 227), ('s', 219), ('t' , 218), ('on', 204), ('all', 200), ('this', 181), ('for', 179), ('had', 178), (' but', 175), ('be', 167), ('not', 166), ('they', 155), ('so', 152)]
第二个示例(检查是否实现了完整的规范) :
将链接的 爱丽丝梦游仙境文件中每次出现的 you
替换为 superlongstringstring
:
________________________________________________________________ |________________________________________________________________| she |_______________________________________________________| superlongstringstring |_____________________________________________________| said |______________________________________________| alice |________________________________________| was |_____________________________________| that |______________________________| as |___________________________| her |_________________________| with |_________________________| at |________________________| s |________________________| t |______________________| on |_____________________| all |___________________| this |___________________| for |___________________| had |__________________| but |_________________| be |_________________| not |________________| they |________________| so
获胜者:
最短的解决方案(按字符数,每种语言)。玩得开心!
编辑 : 迄今为止(2012-02-15)的结果汇总表(最初由用户 Nas Banov 添加) :
Language Relaxed Strict ========= ======= ====== GolfScript 130 143 Perl 185 Windows PowerShell 148 199 Mathematica 199 Ruby 185 205 Unix Toolchain 194 228 Python 183 243 Clojure 282 Scala 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 shell 还有的各种解决方案,这些解决方案混合使用各种工具(如 grep、 tr、 sort、 uniq、 head、 perl、 awk)。