fork download
  1. (ns testclj.core)
  2.  
  3. (defn letter-to-num [l]
  4. (- (int l) (int \a) -1))
  5.  
  6. (defn digit-to-num [d]
  7. (- (int d) (int \0)))
  8.  
  9. (defn digitize-single [s]
  10. [0 (letter-to-num (first s))])
  11.  
  12. (defn digitize-double [s]
  13. [(digit-to-num (first s))
  14. (letter-to-num (second s))])
  15.  
  16. (defn digitize [s]
  17. (if (> (count s) 1)
  18. (digitize-double s)
  19. (digitize-single s)))
  20.  
  21. (defn pair-to-column [t aj-column]
  22. (let [c (count aj-column)
  23. s1 (t 0)
  24. i (t 1)
  25. s2 (- c i s1)]
  26. (concat (repeat s1 \space)
  27. (take (- c s1) (take i aj-column))
  28. (repeat s2 \space))))
  29.  
  30. (defn build [sample]
  31. (let [tokens (re-seq #"\d*\w" sample)
  32. aj-column [\+ \+ \- \- \* \* \* \. \. \.]
  33. pairs (map #(digitize %) tokens)
  34. res (map #(pair-to-column % aj-column) pairs)
  35. _ (mapv println (reverse (apply map str res)))]))
  36.  
  37.  
  38. (def sample "j3f3e3e3d3d3c3cee3c3c3d3d3e3e3f3fjij3f3f3e3e3d3d3c3cee3c3c3d3d3e3e3fj")
  39.  
  40. (build sample)
Success #stdin #stdout 1.43s 390144KB
stdin
Standard input is empty
stdout
.                 . .                 .
.*              **...**              *.
.***          ****...****          ***.
*-----      ------***------      -----*
*-------  --------***--------  -------*
*+++++++**++++++++***++++++++**+++++++*
-+++++++--++++++++---++++++++--+++++++-
-       --        ---        --       -
+       ++        +++        ++       +
+       ++        +++        ++       +