Mercurial > coderloop
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)))) |