Ruby置换(内置)-结果不包含相邻的相同字母

Ruby置换(内置)-结果不包含相邻的相同字母,ruby,permutation,ruby-1.8,Ruby,Permutation,Ruby 1.8,谢谢你昨天的帮助,也谢谢你教我一些新东西 我还有一个关于排列的问题。。。我的算法是有效的,但是我有一个问题,即生成的列表中缺少相同的相邻字符 例如,如果我有字符列表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

谢谢你昨天的帮助,也谢谢你教我一些新东西

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

例如,如果我有字符列表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
请注意缺少的“bb”,此操作将继续,直到程序完成


我肯定我遗漏了什么,只是不确定是什么?

我想你应该使用重复排列而不是排列


它将生成包括“file bb.txt”在内的所有排列。

我认为您希望使用重复排列而不是排列

它将生成包括“file bb.txt”在内的所有排列。[1,2,3]中仅有的6个置换是

123
132
213
231
312
321
那太好了。[1,2,3]中仅有的6个置换是

123
132
213
231
312
321


哇!在这种情况下,我一定误解了置换这个术语,因为我认为使用你的例子,我们也会有112、122等,因为它们也是唯一的。现在我需要找到另一种方法来做我想做的事(哇……我一定是误解了本例中的术语排列,因为我认为使用您的示例,我们也会有112、122等,因为它们也是唯一的。现在我需要找到另一种方法来做我想做的事情::(您可以像这样生成字母表:
[*'a''z'],[*'0''9'],'-'].flatte
。在1.9中,您甚至可以执行
[*?a…?z,?0…?9'-']
。我仍然可以使用置换还是需要使用另一种方法,例如重复置换?您需要的是
重复置换
:-)您可以像这样生成字母表:
[*'a''z'],[*'0''9'],'-'].flatte
。在1.9中,您甚至可以执行
[*?a..z,?0..9',-”]
。我仍然可以使用置换还是需要使用其他方法,例如重复置换?您想要的是一个看起来可以完成任务的
重复置换。:)我现在被困在为什么它不喜欢它。。。测试rb:10:未定义的方法#的#重复_置换(NoMethodError)。我所做的只是用置换代替重复置换??这种方法只在ruby 1.9中可用,您可能正在使用1.8。考虑切换到1.9,这是当前稳定的版本。谢谢。你是对的,我在Ubuntu上使用的是1.8(7)。。。切换到1.9将是一种痛苦,但值得一试。有没有办法在1.8(7)上做到这一点而不切换到1.9呢?这是一个ruby方法,所以你要么升级,要么自己重新实现。顺便说一句,如果您使用rvm管理不同的版本,升级并不是一个巨大的痛苦。嗨,Evgeny,我没有使用rvm,但是我现在正在设置它,所以剩下的就是感谢您的回答和快速响应。:)看起来它能完成任务。:)我现在被困在为什么它不喜欢它。。。测试rb:10:未定义的方法#的#重复_置换(NoMethodError)。我所做的只是用置换代替重复置换??这种方法只在ruby 1.9中可用,您可能正在使用1.8。考虑切换到1.9,这是当前稳定的版本。谢谢。你是对的,我在Ubuntu上使用的是1.8(7)。。。切换到1.9将是一种痛苦,但值得一试。有没有办法在1.8(7)上做到这一点而不切换到1.9呢?这是一个ruby方法,所以你要么升级,要么自己重新实现。顺便说一句,如果您使用rvm管理不同的版本,升级并不是一个巨大的痛苦。嗨,Evgeny,我没有使用rvm,但是我现在正在设置它,所以剩下的就是感谢您的回答和快速响应。:)