以不同的方式迭代多个数组

时间:2014-09-04 14:03:51

标签: ruby algorithm

虽然我试图在Ruby中解决这个问题,但我欢迎其他语言的建议,我可以回到Ruby。

我有任何数组:

color = ["red", "green", "blue"]
size = ["small", "medium", "large"]
style = ["loose", "tight"]

我需要为每个可能的组合创建字符串。例如:

"red small loose", "red small tight", "red medium loose", "red medium tight", "red large loose", "red large tight", "green small loose", etc...

我愿意接受任何建议。

4 个答案:

答案 0 :(得分:5)

>> color.product(size, style).map { |strings| strings.join(" ") }
#=> ["red small loose", "red small tight", ..., "blue large tight"]

答案 1 :(得分:0)

如果数组的数量不是太高(低于5),您可以编写嵌套循环。 Semicode:

for x = 0; x < color.size; x ++
    for y = 0; y < color.size; y ++
        for z = 0; z < color.size; z ++
            return color[x] + size[y] + style[z]
            z = z+1
        y = y+1
    x = x+1

虽然我对Ruby一无所知,但这基本上可以工作。

答案 2 :(得分:0)

Ruby为数组提供product方法,或者你可以只使用循环。

color.each do |color|
  size.each do |size|
    style.each do |style|
      puts "#{color} #{size} #{style} "
    end
  end
end

答案 3 :(得分:0)

color.product(size, style)将完成工作