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