在Ruby中生成所有可能的字符串排列

时间:2014-03-05 21:29:08

标签: ruby string ruby-on-rails-3 permutation combinatorics

我有一个长字符串,其中每个字符都有指定数量的选项。举个简短​​的例子,假设我有一个4个字符的字符串。第一个字符可以是数字1-6,第二个字符可以是1-5或a-e,第三个字符只能是a或b,第四个字符可以是0-9或a-z。如何使用Ruby(RoR)实际生成我的字符串的所有可能排列的列表或数组?空格也可用于任何角色。

所以字符串的一个例子可能是:

1aaz
21b0
21 0
1 a1

1 个答案:

答案 0 :(得分:4)

这是一个简单的解决方案:

strform = [%w(1 2 3 4 5 6), %w(1 2 3 4 5 a b c d e), %w(a b), %w(0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z)]
strform[0].product(*strform[1..-1]).map(&:join)