该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-11
要是能把这个印在T恤上就好了
|
|
返回顶楼 | |
发表时间:2011-05-11
最后修改:2011-05-11
----
多想LS的RMB能像代码一样可以ctrl+c,然后不断ctrl+v,那该多好啊、、、 ---- 楼主的文章确实不错,也很膜拜这段代码,但、哎、、、、 |
|
返回顶楼 | |
发表时间:2011-05-12
写的不错。
我也考虑学学Python了,为了看懂它。 |
|
返回顶楼 | |
发表时间:2011-05-13
jjcoder 写道 ----
多想LS的RMB能像代码一样可以ctrl+c,然后不断ctrl+v,那该多好啊、、、 ---- 多好啊 |
|
返回顶楼 | |
发表时间:2011-05-13
非常喜欢这篇文章,感谢楼主。
|
|
返回顶楼 | |
发表时间:2011-05-13
lz不要激动,我还没接触过Python,而且学习一种语言真的很麻烦,正如我对学习英语真的不感兴趣一样。但是看了lz这篇,我觉得每种语言都有其独特的美,我将倾向于发现我所学语言的没,感谢lz的文,感谢lz的启发。。。
|
|
返回顶楼 | |
发表时间:2011-05-16
有没有中文纠错的?
|
|
返回顶楼 | |
发表时间:2011-05-16
引用 这里面有个让我很囧的大笑话,希望你能发现
是Peter回复里'Habe a good summer, happy programming' 那个 'Habe'吗? |
|
返回顶楼 | |
发表时间:2011-05-16
virtualsolo 写道 引用 这里面有个让我很囧的大笑话,希望你能发现
是Peter回复里'Habe a good summer, happy programming' 那个 'Habe'吗? 不是,是我把T-shirt拼成T-s-h-i-t了,what a s-h-i-t spelling error. |
|
返回顶楼 | |
发表时间:2011-05-17
最后修改:2011-05-17
不错哦,我把 lz 代码翻译成了 Ruby 版(1.9.2),细节逻辑稍微修改了下,但结果是一样的:
NWORDS = File.read('big.txt').scan(/\w+/).inject({}) do |dict, word| word.downcase! dict[word] = dict[word].to_i + 1 dict end def edits words words.flat_map do |word| (word.size + 1).times.flat_map do |i| delete = word.dup.tap{|w| w[i] = '' } if word[i] transpose = word.dup.tap{|w| w[i], w[i+1] = w[i+1], w[i] } if word[i+1] replaces = ('a'..'z').map{|c| word.dup.tap{|w| w[i] = c } } if word[i] inserts = ('a'..'z').map{|c| word.dup.tap{|w| w.insert i, c } } [delete, transpose, *replaces, *inserts].compact.uniq end end end def correct word e0 = [word] e1 = edits e0 e2 = edits e1 # 是否用 set 是没有区别的, 创建 set 要多做一些 hash 计算, 干脆不整了。 # 是否去除 NWORDS 中不存在的词也没有区别 ⋯⋯ # 是否在最后加上 word 也没区别,如果 e1, e2 都是不明单词,最后结果依然是 word [*e0, *e1, *e2].max_by {|w| NWORDS[w].to_i } end |
|
返回顶楼 | |