问题描述
||
感谢您昨天的帮助,也感谢您教给我一些新的知识。 :)
我还有一个基于置换的问题...我使用的算法有效,但是我遇到的问题是,生成的列表中缺少相同的相邻字符。
例如,如果我有一个字符列表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 \”,此操作会一直持续到程序完成。
我确定我缺少什么,只是不确定什么?
解决方法
我认为您想使用repeated_permutation而不是置换。
http://www.ruby-doc.org/core/classes/Array.html#M000289
它将生成所有排列,包括\“ file-bb.txt \”。
, 这就是排列。 [1,2,3]的仅6个排列是
123
132
213
231
312
321