Удалить соседние идентичные элементы в Ruby Array?

Ruby 1.8.6

У меня есть массив, содержащий числовые значения. Я хочу уменьшить его так, чтобы последовательности одного и того же значения сводились к одному экземпляру этого значения.

Я хочу

a = [1, 1, 1, 2, 2, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3]

уменьшить до

[1, 2, 3, 2, 3]

Как вы видете,Array#uniq не будет работать в этом случае.

У меня есть следующее, которое работает:

(a.size - 1).downto(1) { |i| a[i] = nil if a[i - 1] == a[i] }

Кто-нибудь может придумать что-нибудь менее уродливое?

Ответы на вопрос(6)

Ваш ответ на вопрос