使用多个数组创建计数

时间:2011-03-23 19:16:48

标签: ruby arrays

我正在尝试按照0-9和a-z的顺序创建一个数字和字母列表。

我有一系列值 value_array = ['0','1','2','3','4','5','6','7','8','9','a','b' ,'光盘', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', '0', 'P','Q ”, 'R', 'S', 'T', 'U', 'v', 'W', 'X', 'Y', 'Z']

和一个组合列表的数组,按顺序,这些数字可以产生x个字符,让我们说三个

list_array = []

以及当前字母和数字组合的数组(在将其推送到列表数组之前我会变成一个字符串,]

current_combo ['0','0','0']

如何让值数组计算当前的组合数组,以便我可以创建像“ [ '0', '0', '1'] [ '0', '0', '2'] [ '0', '0', '3'] [ '0', '0', '4'] [ '0', '0', '5'] [ '0', '0', '6'] .. .. .. [ '一个', '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 个答案:

答案 0 :(得分:7)

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"]]

正如Mladen所说,使用Ruby 1.9,它更容易:

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

答案 1 :(得分:2)

  value_array.repeated_permutation(n).to_a