Skip to content

Instantly share code, notes, and snippets.

(defn distance [[x y]]
(+ (Math/abs x) (Math/abs y)))
(defn add-point [m dist v]
(let [m2 (if (m dist)
(update-in m [dist] conj v)
(assoc m dist [v]))]
(let [m3 (if (> dist (:hd m2))
(merge m2 {:hd dist})
m2)]
@quux00
quux00 / stdin-acc.clj
Created October 2, 2012 02:31
Example of how to read from STDIN in a Clojure program and accumulate the entries in a vector.
(ns example.stdin)
(defn do-something-cool [v]
(println v))
(defn -main
"Read from STDIN"
[& args]
(println "Enter text:")
@quux00
quux00 / stdin.clj
Created October 2, 2012 02:01
Example of how to read from STDIN in a Clojure program
(ns example.stdin)
(defn -main
"Read from STDIN"
[& args]
(println "Enter text:")
(loop [input (read-line)]
(when-not (= ":done" input)
(println (str "You entered: >>" input "<<"))
def ds1 = [1, 2, [3, 4, [5, "a"]]];
def isSequential(x) {
x instanceof Collection
}
def mapcat(f, coll) {
coll.inject([]) { x, y ->
def res = f(y)
if (isSequential(res)) {
;; answer from unlogic to 4clojure.com problem 28
(defn flat [node]
(reduce #(concat % (if (coll? %2) (flat %2) [%2]))
()
node))
;; answer from nikkomega to 4clojure.com problem 28
(defn flt [s]
(if (sequential? s)
(mapcat flt s)
(list s)))
;; clojure.core/flatten from
;; http://clojuredocs.org/clojure_core/clojure.core/flatten
;; Copyright Rich Hickey
(defn flatten
"Takes any nested combination of sequential things (lists, vectors,
etc.) and returns their contents as a single, flat sequence.
(flatten nil) returns nil."
{:added "1.2"
:static true}
(testing "Encrypt one simple string"
(let [fname "tiger.boy"]
(try
(encrypt vault fname "Tiger Tiger Tiger")
(let [msg (decrypt vault fname)]
(is (not (nil? msg)))
(is (= "Tiger Tiger Tiger" msg)))
(finally (.delete (File. fname))))))
(deftest test-encrypt-decrypt
(let [vault (->CryptoVault keystore-fname passw)
key (get-secret-key-from-keystore vault)]
(testing "Encrypt one simple string"
(let [fname "tiger.boy"]
(encrypt vault fname "Tiger Tiger Tiger")
(let [msg (decrypt vault fname)]
(is (not (nil? msg)))
(is (= "Tiger Tiger Tiger" msg)))))
(defn setup []
(println "setup"))
(defn teardown []
(println "teardown"))
(defn each-fixture [f]
(setup)
(f)
(teardown))