Demo (я ожидаю результат [3]
):Как сделать разумную «разницу в настройках» в Ruby?
[1,2] - [1,2,3] => [] # Hmm
[1,2,3] - [1,2] => [3] # I see
a = [1,2].to_set => #<Set: {1, 2}>
b = [1,2,3].to_set => #<Set: {1, 2, 3}>
a - b => #<Set: {}> WTF!
И:
[1,2,9] - [1,2,3] => [9] # Hmm. Would like [[9],[3]]
Как один для выполнения реальной установки разницы независимо от порядка входов?
Ps. В стороне, мне нужно сделать это для двух массивов с 2000 элементами. Обычно массив # 1 будет содержать меньше элементов, чем массив # 2, но это не гарантируется.
+1, хороший ответ. Я добавил Array #^в мою [библиотеку расширений] (http://rubydoc.info/gems/shenanigans/1.0.4/Array#%5E-instance_method), не всегда нужно проходить через множества. –