Advertisement
Guest User

Untitled

a guest
Sep 5th, 2015
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (defn compress-string [s]
  2.   (let [compressed ""]
  3.     (loop [compressed compressed
  4.            uncompressed (map char s)
  5.            current-char (first uncompressed)
  6.            current-count 1]
  7.       (if (or (not (seq uncompressed)) (= (count s) < 3))
  8.         compressed
  9.         (if (= (second uncompressed) current-char)
  10.             (recur compressed
  11.                    (drop 1 uncompressed)
  12.                    current-char
  13.                    (+ current-count 1))
  14.             (recur (str compressed current-char current-count)
  15.                    (drop 1 uncompressed)
  16.                    (first uncompressed)
  17.                    1))))))
  18.  
  19. (compress-string "aaabddcejkkeddddddd")
  20. ; should output: a3b1d2c1e1j1k2e1d7
  21. => "a3a1b1d1d1c1e1j1k1k1e1d6"
  22. (compress-string "aaaaa")
  23. ; should output: a5
  24. => "a5"
  25. (compress-string "ababab")
  26. ; should output: a1b1a1b1a1b1
  27. => "a1a2a2a1"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement