У меня есть хэш информации, которая используется для целевых пользователей в качестве рекламного инструмента, который выглядит следующим образом:Генерация всех возможных перестановок из хэша
{ «geo_locations» => { «страны» => ["US", "GB", "AR"]}, "genders => [1, 2]}
Таким образом, вышеуказанное предназначало бы всем пользователям в этих кодах стран и всех полов. простая версия хэша. Она может включать в себя еще много ключей со своим собственным набором значений.
Что мне нужно способный сделать, - это генерировать несколько хэшей с задней части этого начального хэша, которые проходят через все возможные комбинации хэша. Таким образом, ожидаемый результат из приведенного выше хэша после запуска через метод перестановок будет следующий:
{ "geo_locations" => { "страна" => [ "США"]}, «полы => [1 ]}
{ "geo_locations" => { "страна" => [ "GB"]}, "полы => [1]}
{" geo_locations "=> {" страна "=> [ "АР"]}, "= полы> [1]}
{" geo_locations "=> {" страна "=> [" США "]}" = полы> [2]}
{"geo_locations" => {"countries" => ["GB"]}, "genders => [2]}
{" geo_locations "=> {" countries "=> [" AR "]} , «= полы> [2]}
до сих пор я играл с различными идеями, такими как ходьба через хэш и извлечение каждого значения ключей в плоский массив, а затем применяя метод Array.product, чтобы генерировать все возможные перестановки, но до сих пор я зашел в тупик. Является ли декартовым продуктом даже правильное решение для вышеуказанного? Может быть, есть еще один встроенный рубиновый метод, чтобы позаботиться об этом, о котором я сейчас не знаю!
Массив # продукт походит на правильный путь. – Linuxios
Вы уверены, что хотите перестановки? Похоже, вы ищете комбинации. – sawa
Что делает '1' обнаженным, а' [2] 'и страны заключены в скобки? – sawa