(ns testclj.core)

(defn letter-to-num [l]
   (- (int l) (int \a) -1))

(defn digit-to-num [d]
   (- (int d) (int \0)))

(defn digitize-single [s] 
  [0 (letter-to-num (first s))])

(defn digitize-double [s] 
  [(digit-to-num (first s)) 
   (letter-to-num (second s))])

(defn digitize [s]
   (if (> (count s) 1) 
       (digitize-double s)
       (digitize-single s)))

(defn pair-to-column [t aj-column]
  (let [c (count aj-column)
        s1 (t 0)     
        i (t 1)
        s2 (- c i s1)]
    (concat  (repeat s1 \space)
             (take (- c s1) (take i aj-column)) 
             (repeat s2 \space))))

(defn build [sample]
  (let [tokens (re-seq #"\d*\w" sample) 
        aj-column [\+ \+ \- \- \* \* \* \. \. \.]
        pairs (map #(digitize %) tokens) 
        res (map #(pair-to-column % aj-column) pairs) 
        _ (mapv println (reverse (apply map str res)))]))


(def sample "j3f3e3e3d3d3c3cee3c3c3d3d3e3e3f3fjij3f3f3e3e3d3d3c3cee3c3c3d3d3e3e3fj")

(build sample)