使用多个阵列创建计数

问题描述:

我试图按0-9和a-z的顺序创建一个数字和字母列表。我有一个数组数组 value_array = ['0','1','2','3','4','5','6','7','8', ''','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’]使用多个阵列创建计数

和阵列用于组合的列表中,为了是,这些数字可以产生用于字符的x个,让我们说三

list_array = []

和一个用于当前字母和数字组合的数组(我将把i n要它推到列表阵列之前的字符串]

current_combo [“0”,“0”,“0”]

如何获取值数组数为当前的组合阵列,我可以创建像“ ['0','0','1'] ['0','0','2'] ['0','0','3'] ['0','0','4'] ['0','0','5'] ['0','0','6'] .. .. .. ['a','z','1'] .. .. 并最后到['z','z','z']?

这是我的代码到目前为止。对不起,如果它真的很疯狂。我是一个菜鸟在此:

exponent = test.count('?') 


puts 36 ** exponent 

possible_characters = ['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'] 

list = [] 

combo = [] 
end_combo = [] 

exponent.times do |e| 
    combo << '0' 
    end_combo << 'z' 
end 

puts combo.to_s 

while combo != end_combo 



end 
+2

参见http://*.com/questions/ 5212884/ruby​​-generate-all-two-letter-words – 2011-03-23 21:16:28

xs = ("0".."9").to_a + ("a".."z").to_a 
xs.product(xs, xs) 
# [["0", "0", "0"], ["0", "0", "1"], ..., ["z", "z", "y"], ["z", "z", "z"]] 

至于姆拉登指出,使用Ruby 1.9那就更简单了:

(("0".."9").to_a + ("a".."z").to_a).repeated_permutation(3) 
+2

ohh。我喜欢Ruby – fl00r 2011-03-23 20:56:32

+1

其实在1.9.2中创建'xs'数组更容易:'[*?0..?9,*?a ..?z]'。 – 2011-03-24 10:53:10

value_array.repeated_permutation(n).to_a 
+2

我认为OP想要一个笛卡尔产品,而不是一个置换。 – tokland 2011-03-23 19:42:38

+2

1.9.2有'repeated_permutation'这应该做的伎俩:http://www.ruby-doc.org/core/classes/Array.html#M000289 – 2011-03-23 21:06:37

+0

@tokland @Mladen你说得对。固定。 – sawa 2011-03-24 00:01:44