What is the best solution to eliminate consecutive duplicates of list elements?
list = compress(['a','a','a','a','b','c','c','a','a','d','e','e','e','e']).
p list # => # ['a','b','c','a','d','e']
I have this one:
def compress(list)
list.map.with_index do |element, index|
element unless element.equal? list[index+1]
end.compact
end
Ruby 1.9.2
Nice opportunity to use
Enumerable#chunk, as long as your list doesn’t containnil:For Ruby older than 2.2.x, you can
require "backports/2.2.0/kernel/itself"or use{|x| x}instead of(&:itself).For Ruby older than 1.9.2, you can
require "backports/1.9.2/enumerable/chunk"to get a pure Ruby version of it.