annotate 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
rev   line source
rlm@0 1 (ns coderloop.utils
rlm@0 2 (:use [clojure.contrib
rlm@0 3 [shell-out :only [sh]]
rlm@0 4 [duck-streams :only [file-str read-lines copy]]])
rlm@0 5 (:use [clojure [string :only [trim blank? split]]]))
rlm@0 6
rlm@0 7
rlm@0 8
rlm@0 9
rlm@0 10
rlm@0 11
rlm@0 12 (defn read-integer [file]
rlm@0 13 (Integer/parseInt
rlm@0 14 (trim (slurp (file-str file)))))
rlm@0 15
rlm@0 16 (defn read-big-integer [file]
rlm@0 17 (java.math.BigInteger.
rlm@0 18 (trim (slurp (file-str file)))))
rlm@0 19
rlm@0 20
rlm@0 21 (defn read-integer-line [#^java.lang.string s]
rlm@0 22 (map #(Integer/parseInt %)
rlm@0 23 (filter (comp not blank?)
rlm@0 24 (split s #"\W"))))
rlm@0 25
rlm@0 26
rlm@0 27
rlm@0 28 (defn read-integers
rlm@0 29 "returns a lazy sequence of integers read from the file.
rlm@0 30 Integers are delimited by any sort of whitespace"
rlm@0 31 [#^java.io.File file]
rlm@0 32 (mapcat read-integer-line
rlm@0 33 (filter (comp not blank?)
rlm@0 34 (read-lines (file-str file)))))
rlm@0 35
rlm@0 36
rlm@0 37 (defn trans-print [x]
rlm@0 38 (println x )
rlm@0 39 x)
rlm@0 40
rlm@0 41
rlm@0 42 (defn md5
rlm@0 43 "given a string, compute the md5 checksum"
rlm@0 44 [s]
rlm@0 45 (let [t (java.io.File/createTempFile "zzz" "zzz")]
rlm@0 46 (copy s t)
rlm@0 47 (.deleteOnExit t)
rlm@0 48 (sh "md5sum" (.getCanonicalPath t))))
rlm@0 49
rlm@0 50
rlm@0 51 (defn digits [n]
rlm@0 52 (map #(Integer/parseInt (str %)) (seq (str n))))