short-name.clj
· 662 B · Clojure
Bruto
(defn short-name-seq
"Lazy infinite seq of short names. like a,b,c..aa,bb,cc..zzzzz"
[]
(let [letters (map str "abcdefghijklmnopqrstuvwxyz")]
(mapcat (fn [length]
(map (fn [letter] (apply str (repeat length letter))) letters))
(range 1 Long/MAX_VALUE))))
; unit test
(deftest test-short-name-seq
(let [short-names (vec (take 1000 (short-name-seq)))]
(is (= (get short-names 0) "a"))
(is (= (get short-names 1) "b"))
(is (= (get short-names 25) "z"))
(is (= (get short-names 26) "aa"))
(is (= (get short-names 345) "hhhhhhhhhhhhhh"))
(is (= (get short-names 733) "fffffffffffffffffffffffffffff"))))
| 1 | (defn short-name-seq |
| 2 | "Lazy infinite seq of short names. like a,b,c..aa,bb,cc..zzzzz" |
| 3 | [] |
| 4 | (let [letters (map str "abcdefghijklmnopqrstuvwxyz")] |
| 5 | (mapcat (fn [length] |
| 6 | (map (fn [letter] (apply str (repeat length letter))) letters)) |
| 7 | (range 1 Long/MAX_VALUE)))) |
| 8 | |
| 9 | |
| 10 | ; unit test |
| 11 | |
| 12 | (deftest test-short-name-seq |
| 13 | (let [short-names (vec (take 1000 (short-name-seq)))] |
| 14 | (is (= (get short-names 0) "a")) |
| 15 | (is (= (get short-names 1) "b")) |
| 16 | (is (= (get short-names 25) "z")) |
| 17 | (is (= (get short-names 26) "aa")) |
| 18 | (is (= (get short-names 345) "hhhhhhhhhhhhhh")) |
| 19 | (is (= (get short-names 733) "fffffffffffffffffffffffffffff")))) |