gpt4 book ai didi

ruby - 将数组的数组转换为数组和哈希的组合

转载 作者:数据小太阳 更新时间:2023-10-29 08:35:54 24 4
gpt4 key购买 nike

我一直在尝试将数组的数组转换为数组和哈希的组合。让我解释一下我想要实现的目标:

输入:

[['a'], ['b'], ['a', 'b', 'c'], ['a', 'b', 'd']]

预期输出:

[:a => [{:b => [:c, :d]}], :b]

到目前为止我想出的是:

def converter(array)
tree_hash = {}

array.each do |path|
path.each_with_index.inject(tree_hash) do |node, (step, index)|
step = step.to_sym

if index < path.size - 1
node[step] ||= {}
else
node[step] = nil
end
end
end

tree_hash
end

它给了我以下结果:

converter([['a'], ['b'], ['a', 'b', 'c'], ['a', 'b', 'd']])
=> {:a=>{:b=>{:c=>nil, :d=>nil}}, :b=>nil}

任何人都可以提出一些建议,以便我可以解决这个问题。这个问题有什么名字吗,直接图/间接图/图论?我愿意学习和提高我在图和树方面的知识。

如果你能帮助我解决这个问题或者给我一些如何解决这个问题的指导,我将不胜感激。

谢谢。

最佳答案

def group_by_prefix(elements)
elements.group_by(&:first).map do |prefix, elements|
remainders = elements.map { |element| element.drop(1) }.reject(&:empty?)

if remainders.empty?
prefix.to_sym
else
{prefix.to_sym => group_by_prefix(remainders)}
end
end
end

foo = [['a'], ['b'], ['a', 'b', 'c'], ['a', 'b', 'd']]
group_by_prefix(foo) # => [{:a=>[{:b=>[:c, :d]}]}, :b]

关于ruby - 将数组的数组转换为数组和哈希的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41225607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com