(defn valid-date? [[y m d]]
  (and (<= 1 m 12)
       (<= 1 d 31)))

(defn date-str [[y m d]]
  (format "%4d-%02d-%02d" y m d))

(defn yr->date [y]
  (let [[_ m d] (re-find #"(..)(..)" (apply str (reverse (str y))))]
    [y (Long. m) (Long. d)]))

(defn palindrome-dates [start-yr n]
  (->> (iterate inc start-yr)
       (map yr->date)
       (filter valid-date?)
       (map date-str)
       (take n)))