感谢昨天的帮助,也教我一些新的东西。 :)
我还有另一个基于排列的问题...我运用的算法但是我有一个问题,即生成的列表中缺少相同的相邻字符。
例如,如果我有字符列表az,0-9, - 并且假设最大长度为2,那么我应该看到aa,bb,cc,dd,ee,ff等ad adause。
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”,这将一直持续到程序结束。
我确信我错过了什么,只是不确定是什么?
答案 0 :(得分:3)
我认为你想使用repeated_permutation而不是置换。
http://www.ruby-doc.org/core/classes/Array.html#M000289
它将生成所有排列,包括“file-bb.txt”。
答案 1 :(得分:1)
那是what a permutation is。 [1,2,3]的唯一6个排列是
123
132
213
231
312
321