Ruby 求所有集合中分组的有效最大值
我有一个2D数组,希望生成一个3D数组,该数组将显示所有集合的最有效分组。例如:Ruby 求所有集合中分组的有效最大值,ruby,multidimensional-array,intersection,Ruby,Multidimensional Array,Intersection,我有一个2D数组,希望生成一个3D数组,该数组将显示所有集合的最有效分组。例如: [[1, 2], [1, 2, 3, 4], [3, 4], [1, 2, 5]] 结果: [[[1, 2]], [[1, 2], [3, 4]], [[3, 4]], [[1, 2], [5]]] 我想我需要做一个嵌套循环,并确定交叉点和差异,以生成3D阵列。然而,似乎它可以更优雅地解决它,尽管我对注入有点陌生,不确定如何实现它来解决这个问题。这是在Ruby中完成的 感谢您的帮助。谢
[[1, 2],
[1, 2, 3, 4],
[3, 4],
[1, 2, 5]]
结果:
[[[1, 2]],
[[1, 2], [3, 4]],
[[3, 4]],
[[1, 2], [5]]]
我想我需要做一个嵌套循环,并确定交叉点和差异,以生成3D阵列。然而,似乎它可以更优雅地解决它,尽管我对注入有点陌生,不确定如何实现它来解决这个问题。这是在Ruby中完成的
感谢您的帮助。谢谢
--更新--
通过有效分组,我的意思是通过找到最大的重复集,找到在结果中生成最少集合的最佳组合 另一个例子:
[[1, 2, 3, 4],
[1, 4],
[1, 3, 4],
[1, 2, 3, 4, 5],
[2, 5]]
可能结果(共8套):
这是一个很好的结果,但第一组可以优化
更好的结果(共7套):
两个结果共包含5个唯一集。较好结果中的集合为(1,2,3,4)、(1,4)、(3)、(5)和(2,5)。较好结果中的集合总数为7,而可能结果中的集合总数为8。我们需要最少数量的集合。您肯定应该解释“最有效的分组”的含义。同时,如果只需要将数组拆分为两个元素块,只需将
map
和每个片段组合起来即可:
arr.map{|a| a.each_slice(2).to_a}
# => [[[1, 2]], [[1, 2], [3, 4]], [[3, 4]], [[1, 2], [5]]]
首先,你应该用伪代码找出你想做的事情的算法(现在阻碍你的不是Ruby)。然后用这些ruby灵长类来实现它
我认为您需要详细说明“有效分组”。为什么((1,2,3,4))、((1,4))、((1,3,4))、((1,2,3,4,5))、((2,5))在您的第二个示例中不是最好的?它总共只有5组,所以不到7组。我更新了这个问题,以帮助澄清“最有效的分组”。它并不总是2元素块。
[[[1, 2, 3, 4]],
[[1, 4]],
[[1, 4], [3]],
[[1, 2, 3, 4], [5]],
[[2, 5]]]
arr.map{|a| a.each_slice(2).to_a}
# => [[[1, 2]], [[1, 2], [3, 4]], [[3, 4]], [[1, 2], [5]]]