Ultima attività 1779874002

Revisione 6139b7273086702744e0056ba0ad926afa1be439

short-name.clj Raw
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"))))