view src/utils.clj @ 0:307a81e46071 tip

initial committ
author Robert McIntyre <rlm@mit.edu>
date Tue, 18 Oct 2011 01:17:49 -0700
parents
children
line wrap: on
line source
1 (ns coderloop.utils
2 (:use [clojure.contrib
3 [shell-out :only [sh]]
4 [duck-streams :only [file-str read-lines copy]]])
5 (:use [clojure [string :only [trim blank? split]]]))
12 (defn read-integer [file]
13 (Integer/parseInt
14 (trim (slurp (file-str file)))))
16 (defn read-big-integer [file]
17 (java.math.BigInteger.
18 (trim (slurp (file-str file)))))
21 (defn read-integer-line [#^java.lang.string s]
22 (map #(Integer/parseInt %)
23 (filter (comp not blank?)
24 (split s #"\W"))))
28 (defn read-integers
29 "returns a lazy sequence of integers read from the file.
30 Integers are delimited by any sort of whitespace"
31 [#^java.io.File file]
32 (mapcat read-integer-line
33 (filter (comp not blank?)
34 (read-lines (file-str file)))))
37 (defn trans-print [x]
38 (println x )
39 x)
42 (defn md5
43 "given a string, compute the md5 checksum"
44 [s]
45 (let [t (java.io.File/createTempFile "zzz" "zzz")]
46 (copy s t)
47 (.deleteOnExit t)
48 (sh "md5sum" (.getCanonicalPath t))))
51 (defn digits [n]
52 (map #(Integer/parseInt (str %)) (seq (str n))))