Для получения полного доступа
зарегистрируйтесь.
Сниппет,  Ruby

Последовательность Look & Say


Описание последовательности

Использование:


first = Sequence.new(1)
puts first #=> "1"
second = first.next
puts second #=> "11"
puts first.next.next #=> "21"
puts second.next.next #=> "1211"

class Sequence

  def initialize(first_element)
    @current_element = first_element.to_s
  end

  def to_s
    current_element
  end

  def next
    self.class.new(next_element)
  end

  private

  attr_reader :current_element

  def next_element
    current_element.scan(/((\d)\2*)/)
      .map { |element| "#{element.first.size}#{element.last}" }.join
  end

end
  challenge

Автор


Gravatar image
anoam
  • Репутация: 5
  • Сниппеты : 1
  • Ревизии : 0
Подписаться

Чтобы увидеть комментарии, нужно быть участником сообщества

Регистрация