complement是我正在寻找的数学术语,但对于上下文和可能更有针对性的解决方案:我有散列A,它可以嵌套散列(即它们是N维),并且我向它应用了一个返回散列B的过程(在这个过程中,我无法控制),散列B是散列A,其中一些元素被删除。从那里开始,我试图找到A中已经被删除的元素。查找两个哈希的(深)补码
例如:(注意,为了简单起见,我使用了符号,键将始终是符号,但值不会。)
a = {:a => :b,
:c => {:d => :e, :f => :g},
:h => :i,
:j => {:k => :l, :m => :n},
:o => {:p => :q, :r => :s},
:t => :u}
b = {:h => :i,
:j => {:k => :l, :m => :n},
:o => {:r => :s},
:t => :u}
complement(a,b)
#=> {:a => :b,
# :c => {:d => :e, :f => :g},
# :o => {:p => :q}}
什么是最好的(ruby-esque)这样做的方式?
深度是否随意?数组中是否存在潜在的重复元素?你在乎*这些元素在哪里?或者只是它们被删除了? – 2012-03-10 02:26:04
深度是任意的(这是用户输入),尽管它不应超过两个或三个级别。至于重复,这是我们正在讨论的哈希,所以键*不能*有重复;价值可以,当然。最后,我检查了一下,哈希没有排序。 – 2012-03-10 02:30:08
哈希按广告顺序按1.9排序,但未在1.8中指定顺序。 – 2012-03-10 02:34:29