-2

哈希引用的数组引用的(0 个或更多级别的哈希引用)的哈希。请注意,叶节点上方的级别将始终是数组引用,即使它们只有一个元素。

我需要通过保留哈希引用的顺序(按插入顺序)来获取 VALUE 的总和(在数组引用的数组中)。

例子 :

1)

(
   A => {
           A1 => [
                { VALUE => 10 },
                { VALUE => 20 }
            ],
           B1 => [ 
                { VALUE => 30 } 
           ],
        },
   B => {
            A1 => [ 
                { VALUE => 10 } 
            ],
            B1 => [ 
                { VALUE => 5  } 
            ],
        },
   C => {
            A1 => [ 
                { VALUE => 100 } 
            ],
        },
)

The required output of the above structure will be - 

(
    [A, A1, 30],
    [A, B1, 30], 
    [B, A1, 10],
    [B, B1, 5],
    .
    .
    .
    .
)

2)

(
    A => [
            { VALUE => 10 },
            { VALUE => 20 }
        ],
    B => [ 
            { VALUE => 30 } 
        ],
)       

The required output of the above structure will be - 

(
    [A, 30],
    [B, 30]
)
4

1 回答 1

1

您需要编写一个函数来遍历您的哈希结构并计算必要的总和。对于散列中的每个键,它需要做出这样的决定:

  • 如果这个key的值是一个list ref,那么VALUE对这个list中的hash中的元素求和,返回[key, sum]

  • 如果这个散列的值是一个散列引用,那么递归到那个散列。如果我们从中得到一个列表,请将其附加到我们当前的输出并继续。

  • 在顶层(深度 0),打印出返回的每个列表。

仍有许多细节需要解决,但这应该能让你走上正确的道路。

于 2013-12-11T22:45:54.800 回答