У меня есть 2D-массив, и я хочу создать 3D-массив, который будет показывать наиболее эффективные группировки для всех наборов.Пример:
[[1, 2],
[1, 2, 3, 4],
[3, 4],
[1, 2, 5]]
Результат:
[[[1, 2]],
[[1, 2], [3, 4]],
[[3, 4]],
[[1, 2], [5]]]
Я думаю, что мне нужно было бы сделать вложенный цикл и определить пересечение и различия для генерации трехмерного массива.Тем не менее, inject (&: &) кажется, что это может решить эту проблему более элегантно, хотя я немного новичок в внедрении и не знаю, как реализовать это для этой проблемы.Это должно быть сделано в Ruby.
Любая помощь приветствуется.Спасибо!
- Обновление - Под эффективными группировками я подразумеваю найти лучшую комбинацию, которая генерирует наименьшее количество общих наборов в результате, найдя самые большие дублирующие наборы.
Другой пример:
[[1, 2, 3, 4],
[1, 4],
[1, 3, 4],
[1, 2, 3, 4, 5],
[2, 5]]
Возможный результат (всего 8)наборы):
[[[1, 3, 4], [2]],
[[1, 4]],
[[1, 4], [3]],
[[1, 3, 4], [2, 5]],
[[2, 5]]]
Это хороший результат, но первый набор можно оптимизировать.
Лучший результат (всего 7 наборов):
[[[1, 2, 3, 4]],
[[1, 4]],
[[1, 4], [3]],
[[1, 2, 3, 4], [5]],
[[2, 5]]]
Обарезультаты содержат в общей сложности 5 уникальных наборов.Множества в лучшем результате: (1, 2, 3, 4), (1, 4), (3), (5) и (2, 5).Общее количество сетов в лучшем результате составляет 7, а не 8 в возможном результате.Мы хотим наименьшее количество комплектов.