Вычитание массива Ruby без удаления элементов более одного раза

Канонический пример разницы массивов в Ruby:

[ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ]  #=>  [ 3, 3, 5 ]

Какой лучший способ вместо этого получить следующее поведение?

[ 1, 1, 2, 2, 3, 3, 4, 5 ].subtract_once([ 1, 2, 4 ])  #=>  [ 1, 2, 3, 3, 5 ]

Это является, только первый экземпляр каждого совпадающего элемента во втором массиве удаляется из первого массива.

19
задан S.L. Barth - Reinstate Monica 23 July 2012 в 14:40
поделиться