Декартово произведение от га sh значений в ruby - PullRequest
0 голосов
/ 28 апреля 2020

Учитывая, что у нас есть структура ha sh, подобная этой {: s => [1, 2, 3],: c => ["r", "g", "b"]}, как можно мы рассчитываем декартово произведение ключевых значений в этом сценарии. Количество пар ключ-значение в га sh имеют динамический характер c и могут варьироваться. Любая помощь будет высоко ценится .....

1 Ответ

2 голосов
/ 28 апреля 2020
   h = { a: [1, 2, 3], b: [:d, :e, :f], c: ["g", "h", "i"] }

   first, *rest = h.values
   first.product(*rest)
     #=> [[1, :d, "g"], [1, :d, "h"], [1, :d, "i"], [1, :e, "g"],
     #    [1, :e, "h"], [1, :e, "i"], [1, :f, "g"], [1, :f, "h"],
     #    [1, :f, "i"], [2, :d, "g"], [2, :d, "h"], [2, :d, "i"],
     #    [2, :e, "g"], [2, :e, "h"], [2, :e, "i"], [2, :f, "g"],
     #    [2, :f, "h"], [2, :f, "i"], [3, :d, "g"], [3, :d, "h"],
     #    [3, :d, "i"], [3, :e, "g"], [3, :e, "h"], [3, :e, "i"],
     #    [3, :f, "g"], [3, :f, "h"], [3, :f, "i"]]

См. Массив # product .

В качестве альтернативы можно написать:

values = h.values
values.shift.product(*values)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...