好的,重新开始,为我的冗长和结构不合理的原始帖子道歉。
我的问题基本上是这样的:是否可以取一个数组并将其分成三个相等的部分,将每个部分发送到一个散列,其中有三个键值对,如下所述?
示例输入:数组数组,如:
orig_array = [[13, 11, 19, 17, 12, 5, 3], [3, 9, 2, 20], [5, 21, 15, 4],
[18, 14, 16, 10], [6, 1, 8, 7], [15, 4, 17, 6], [3, 19, 13, 14], [9, 21, 12, 7],
[20, 11, 2, 18], [8, 10, 1, 16], [10, 6, 21, 17], [15, 11, 14, 19], [13, 2, 9, 18],
[5, 12, 16, 7], [20, 4, 1,8]]
所需输出:一个散列,其中每个键是一个以1开头并向上计数的数字,每个值是数组的三分之一,如:
hash = { 1=>[[array of arrays containing first 1/3rd elements from orig_array]],
2=>[[array of arrays containing next 1/3rd elements from orig_array]]
3=>[[array of arrays containing next 1/3rd remaining elements from orig_array]]}
要清楚,这是课堂练习的一部分。这个练习不是要找到一种方法来划分像这样的数组,我只是觉得这样做可能是一个潜在解决方案的一部分,我正在寻找指导。谢谢!
答案 0 :(得分:4)
def unique_group_of_three(array)
multiple = array.size / 3
return "Your collection is too small" if multiple < 5
multiples = [multiple, multiple *2]
array = array.shuffle
{
:first => array[0...multiple].uniq,
:second => array[multiple...multiples[1]].uniq,
:third => array[multiples[1]..-1]].uniq
}
end