(defn dig-root [value]
  (let [digits (fn [n]
                 (map #(- (byte %) (byte \0))
                      (str n)))
        sum    (fn [nums]
                 (reduce + nums))]
    (loop [n    value
           step 0]
      (if (< n 10)
        {:n value:add-persist step:digital-root n}
        (recur (sum (digits n))
               (inc step))))))