(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)
KG5zIHRlc3RjbGouY29yZSkKCihkZWZuIGxldHRlci10by1udW0gW2xdCiAgICgtIChpbnQgbCkgKGludCBcYSkgLTEpKQoKKGRlZm4gZGlnaXQtdG8tbnVtIFtkXQogICAoLSAoaW50IGQpIChpbnQgXDApKSkKCihkZWZuIGRpZ2l0aXplLXNpbmdsZSBbc10gCiAgWzAgKGxldHRlci10by1udW0gKGZpcnN0IHMpKV0pCgooZGVmbiBkaWdpdGl6ZS1kb3VibGUgW3NdIAogIFsoZGlnaXQtdG8tbnVtIChmaXJzdCBzKSkgCiAgIChsZXR0ZXItdG8tbnVtIChzZWNvbmQgcykpXSkKCihkZWZuIGRpZ2l0aXplIFtzXQogICAoaWYgKD4gKGNvdW50IHMpIDEpIAogICAgICAgKGRpZ2l0aXplLWRvdWJsZSBzKQogICAgICAgKGRpZ2l0aXplLXNpbmdsZSBzKSkpCgooZGVmbiBwYWlyLXRvLWNvbHVtbiBbdCBhai1jb2x1bW5dCiAgKGxldCBbYyAoY291bnQgYWotY29sdW1uKQogICAgICAgIHMxICh0IDApICAgICAKICAgICAgICBpICh0IDEpCiAgICAgICAgczIgKC0gYyBpIHMxKV0KICAgIChjb25jYXQgIChyZXBlYXQgczEgXHNwYWNlKQogICAgICAgICAgICAgKHRha2UgKC0gYyBzMSkgKHRha2UgaSBhai1jb2x1bW4pKSAKICAgICAgICAgICAgIChyZXBlYXQgczIgXHNwYWNlKSkpKQoKKGRlZm4gYnVpbGQgW3NhbXBsZV0KICAobGV0IFt0b2tlbnMgKHJlLXNlcSAjIlxkKlx3IiBzYW1wbGUpIAogICAgICAgIGFqLWNvbHVtbiBbXCsgXCsgXC0gXC0gXCogXCogXCogXC4gXC4gXC5dCiAgICAgICAgcGFpcnMgKG1hcCAjKGRpZ2l0aXplICUpIHRva2VucykgCiAgICAgICAgcmVzIChtYXAgIyhwYWlyLXRvLWNvbHVtbiAlIGFqLWNvbHVtbikgcGFpcnMpIAogICAgICAgIF8gKG1hcHYgcHJpbnRsbiAocmV2ZXJzZSAoYXBwbHkgbWFwIHN0ciByZXMpKSldKSkKCgooZGVmIHNhbXBsZSAiajNmM2UzZTNkM2QzYzNjZWUzYzNjM2QzZDNlM2UzZjNmamlqM2YzZjNlM2UzZDNkM2MzY2VlM2MzYzNkM2QzZTNlM2ZqIikKCihidWlsZCBzYW1wbGUp