【发布时间】:2011-05-31 22:50:52
【问题描述】:
感谢您昨天的帮助,也感谢您教会了我一些新东西。 :)
我有另一个基于排列的问题...我的算法有效,但是我遇到的问题是生成的列表中缺少相同的相邻字符。
例如,如果我有字符列表 a-z、0-9、- 并且假设最大长度为 2,那么我应该会看到 aa、bb、cc、dd、ee、ff 等等。
length = 1
alphabet = [('a'..'z').to_a, ('0'..'9').to_a, ('-').to_a].flatten
prefix = 'file-'
suffix = '.txt'
while length < 3
alphabet.permutation(length).each do |x|
@name = prefix+x.join('').to_s+suffix
puts @name
end
length += 1
end
但是,我只看到以下内容:
file-ba.txt
file-bc.txt
注意缺少的“bb”,这会一直持续到程序完成。
我确定我遗漏了什么,只是不确定是什么?
【问题讨论】:
-
您可以像这样生成您的字母表:
[[*'a'..'z'], [*'0'..'9'], '-'].flatten。在 1.9 中,您甚至可以使用[*?a..?z, ?0..?9, '-']。 -
我还能使用permutation还是需要使用repeat_permutation等其他方法?
-
你想要的是
repeated_permutation。 :-)
标签: ruby permutation ruby-1.8