Нахождение продукта переменного числа массивов Ruby

StackOverflow https://stackoverflow.com/questions/3419952

  •  26-09-2019
  •  | 
  •  

Вопрос

Я хочу найти все комбинации отдельных элементов из переменного числа массивов. Как мне это сделать в Руби?

Учитывая два массива, я могу использовать Array.Product, как это:

groups = []
groups[0] = ["hello", "goodbye"]
groups[1] = ["world", "everyone"]

combinations = groups[0].product(groups[1])

puts combinations.inspect 
# [["hello", "world"], ["hello", "everyone"], ["goodbye", "world"], ["goodbye", "everyone"]]

Как этот код может работать, когда группы содержит переменное количество массивов?

Это было полезно?

Решение

groups = [
  %w[hello goodbye],
  %w[world everyone],
  %w[here there]
]

combinations = groups.first.product(*groups.drop(1))

p combinations
# [
#   ["hello", "world", "here"],
#   ["hello", "world", "there"],
#   ["hello", "everyone", "here"],
#   ["hello", "everyone", "there"],
#   ["goodbye", "world", "here"],
#   ["goodbye", "world", "there"],
#   ["goodbye", "everyone", "here"],
#   ["goodbye", "everyone", "there"]
# ]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top