Поскольку вы, вероятно, хотите сделать больше, чем puts
с дубликатами, я бы предпочел хранить дубликаты в структуре:
### question's example:
a = [ 'str1' , 'str2', 'str2', 'str3' ]
# => ["str1", "str2", "str2", "str3"]
a.each_cons(2).select{|a, b| a == b }.map{|m| m.first}
# => ["str2"]
### a more complex example:
d = [1, 2, 3, 3, 4, 5, 4, 6, 6]
# => [1, 2, 3, 3, 4, 5, 4, 6, 6]
d.each_cons(2).select{|a, b| a == b }.map{|m| m.first}
# => [3, 6]
Подробнее на: https://www.ruby -forum.com / topic / 192355 (крутой ответ Дэвида А. Блэка)