0

谢谢你昨天的帮助,也感谢你教会了我一些新东西。:)

我有另一个基于排列的问题......我的算法有效但是我有一个问题,即生成的列表中缺少相同的相邻字符。

例如,如果我有字符列表 az,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”,这会一直持续到程序完成。

我确定我错过了什么,只是不确定是什么?

4

2 回答 2

3

我认为您想使用重复排列而不是排列。

http://www.ruby-doc.org/core/classes/Array.html#M000289

它将生成所有排列,包括“file-bb.txt”。

于 2011-05-31T14:50:52.323 回答
1

就是排列。[1,2,3] 仅有的 6 个排列是

123
132
213
231
312
321
于 2011-05-31T14:50:52.930 回答