Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defn compress-string [s]
- (let [compressed ""]
- (loop [compressed compressed
- uncompressed (map char s)
- current-char (first uncompressed)
- current-count 1]
- (if (or (not (seq uncompressed)) (= (count s) < 3))
- compressed
- (if (= (second uncompressed) current-char)
- (recur compressed
- (drop 1 uncompressed)
- current-char
- (+ current-count 1))
- (recur (str compressed current-char current-count)
- (drop 1 uncompressed)
- (first uncompressed)
- 1))))))
- (compress-string "aaabddcejkkeddddddd")
- ; should output: a3b1d2c1e1j1k2e1d7
- => "a3a1b1d1d1c1e1j1k1k1e1d6"
- (compress-string "aaaaa")
- ; should output: a5
- => "a5"
- (compress-string "ababab")
- ; should output: a1b1a1b1a1b1
- => "a1a2a2a1"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement