在 ruby 1.9.3 中,我正在尝试编写一个程序,该程序将从任意字符集中找到所有具有n个字符的单词。例如,如果给定字符 [ b, a, h, s, v, i, e, y, k, s, a ] 和 n = 5,我需要找到所有 5 个字母的单词只使用这些字符。使用来自http://wordlist.sourceforge.net/的 2of4brif.txt 单词列表(也包括英国单词和拼写),我尝试了以下代码:
a = %w[b a h s v i e y k s a]
a.permutation(5).map(&:join).each do |x|
File.open('2of4brif.txt').each_line do |line|
puts line if line.match(/^[#{x}]+$/)
end
end
这什么都不做(没有错误消息,没有输出,好像被冻结了一样)。我还尝试了基于以下线程的变体:
我尝试过的每一个变化都导致:
1)冷冻;
2)打印列表中包含 5 个字符排列的所有单词(我假设这就是它正在做的事情;我没有检查所有数千个打印的单词);或者
3) 打印在列表中的单词中找到的所有 5 个字符的排列(同样,我假设这就是它正在做的事情)。
同样,我不是在寻找包含5 个字符排列的单词,而是在寻找本身就是完整单词的 5 个字符排列,因此只有在文本文件中的一行是与排列完美匹配。
我究竟做错了什么?提前致谢!