簡體   English   中英

Ruby:將數組數組轉換為具有3個鍵值對的哈希

[英]Ruby: Turn an array of arrays into a hash with 3 key value pairs

Ok重新開始,對我冗長且結構欠佳的原始帖子表示歉意。

我的問題基本上是這樣的:是否可以將一個數組組成一個數組並將其分為三個相等的部分,然后將每個部分發送到一個散列,該散列中包含三個鍵值對,如下所述?

輸入樣例:數組的數組,如:

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]]}

需要明確的是,這是課堂練習的一部分。 練習不是要找到一種方法來分割像這樣的數組,我只是覺得這樣做可能是一個潛在解決方案的一部分,並且正在尋找指導。 謝謝!

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM