fork download
  1. (defn maxchars
  2. ([string max] (maxchars string max 0 #{}))
  3. ([string max index prevChars]
  4. (if (>= index (count string))
  5. true
  6. (if (contains? prevChars (str (nth string index)))
  7. (maxchars string max (inc index) prevChars)
  8. (if (>= (count prevChars) max)
  9. false
  10. (maxchars string max (inc index) (conj prevChars (str (nth string index)))))))))
  11.  
  12. (-> (maxchars "aaaaaaaa" 3) println)
  13. (-> (maxchars "aaaaaaaa" 1) println)
  14. (-> (maxchars "abcd" 3) println)
  15. (-> (maxchars "aaaaaaaa" 22) println)
Success #stdin #stdout 1.19s 220224KB
stdin
Standard input is empty
stdout
true
true
false
true