¿Eliminar elementos idénticos adyacentes en una matriz de rubíes?

Ruby 1.8.6

Tengo una matriz que contiene valores numéricos. Quiero reducirlo de modo que las secuencias del mismo valor se reduzcan a una sola instancia de ese valor.

Entonces yo quiero

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

para reducir a

[1, 2, 3, 2, 3]

Como puedes ver,Array#uniq No funcionará en este caso.

Tengo lo siguiente, que funciona:

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

¿Alguien puede pensar en algo menos feo?

Respuestas a la pregunta(6)

Su respuesta a la pregunta