Немного о скобках
Для ботанских развлечений некоторые языки подходят больше других. Так, например, предыдущая задача должна решаться не рубями, а немного более функциональным языком. Например, Clojure.
Как-то так:
;;; API
(first my-seq)
;; => "1"
(take 7 my-seq)
;; => ("1" "11" "21" "1211" "111221" "312211" "13112221")
(first (filter #(>= (count %) 15) my-seq))
;; => "13211311123113112211"
;;; Implementation
(defn nxt [s]
(->> s
(partition-by identity)
(map #(str (count %) (first %)))
(apply str)))
(def my-seq (iterate nxt "1"))
Наличие функции iterate и отсутствие ООПе-церемоний позволяет скукожить код в разы, улучшив при этом читаемость. В некоторых других языках тоже есть iterate.