【发布时间】:2011-09-26 02:22:56
【问题描述】:
我有什么
a = [1,2,3,4]
=> [1, 2, 3, 4]
b = a.combination(2).to_a
=> [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
b.each_slice(2).to_a
=> [[[1, 2], [1, 3]], [[1, 4], [2, 3]], [[2, 4], [3, 4]]]
我想要实现的是一个独特的组合
=> [[[1, 2], [3, 4]], [[1, 4], [2, 3]], [[1, 3], [2, 4]]]
我尝试过置换、展平等。但找不到神奇的 ruby 代码!
编辑:
上面的答案是这样的
b = a.combination(2).to_a
=> [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
更准确地说。
来自
a = [1,2,3,4,5,6]
如何获得
=> [[[1, 2], [3, 4], [5, 6]], [[1, 3], [2, 5], [4, 6]], [[1, 4], [2, 6], [3, 5]], [[1, 5], [2, 4], [3, 6]], [[1, 6], [2, 3], [4, 5]]]
这是 5 个 uniq 值数组 (1,2,3,4,5,6):
[1, 2], [3, 4], [5, 6]
[1, 3], [2, 5], [4, 6]
[1, 4], [2, 6], [3, 5]
[1, 5], [2, 4], [3, 6]
[1, 6], [2, 3], [4, 5]
您似乎已经改变了问题。最初你想要一个数组数组,每个数组都有一对数组。现在你想要三胞胎吗?
是的,因为 [1,2,3,4] 的第一个示例太简单了,而且答案不适合更复杂的数组,例如 [1,2,3,4,5,6] 和所以一个。
【问题讨论】:
-
这个问题非常模糊。
-
你似乎改变了问题。最初你想要一个数组数组,每个数组都有一对数组。现在你想要三胞胎吗?
标签: ruby arrays combinations slice uniq