Случайно заглянул на один айтишный сайт на букву х и увидел там ссылку на другой сайт, где люди делятся своими код сниппетами, облайкивают друг друга и гадят в карму. Типичный филиал х-ра, в общем.

Один высоко оцененный сниппет на том сайте меня зацепил. Да это же ява какая-то, а не руби! Сначала намеревался откоментить на том сайте, но передумал - зачем срач разжигать. Но так как свербит, решил поспорить с вооброжаемым оппонентом тут.

Вот как надо это делать:

### API

seq = Sequence.new(1)
seq.first
# => "1"
seq.take(7)
# => ["1", "11", "21", "1211", "111221", "312211", "13112221"]
seq.detect { |x| x.length >= 15 }
# => "13211311123113112211"

### Implementation

class Sequence
  include Enumerable

  def initialize(from = 1)
    @from = from.to_s
  end

  def each
    return to_enum unless block_given?
    elt = @from
    loop do
      yield elt
      elt = next_element(elt)
    end
  end

  private

  def next_element(elt)
    elt.gsub(/(\d)\1*/) { |x| "#{x.size}#{x[0]}" }
  end
end

Читай стандартную библиотеку, мой несуществующий собеседник, и учи идиоматический руби! И знание альтернативных языков вредным не будет (например (кло(жа))). Тех, кто апвоутнул сниппет, это тоже касается.

Простите.