View pi.clj
(defn a&b [n]
(loop [n n, a (/ 1.0 (* 2 (Math/pow 3 0.5))), b (/ 1.0 3)]
(if (= n 0)
[a b]
(let [a' (/ (+ a b) 2)]
(recur (dec n) a' (Math/pow (* a' b) 0.5))))))
;; => (time (/ 1 (first (a&b 100))))
;; "Elapsed time: 0.04547 msecs"
;; 3.141592653589795
View deps.edn
{:paths ["."]
:deps {clansi {:mvn/version "1.0.0"}}}
View debounce.cljs
(require '[clojure.core.async :as a]
'[kitchen-async.promise :as p]
'[kitchen-async.promise.from-channel])
(comment
;; cf. https://gist.github.com/swannodette/5888989
(defn debounce
([c ms] (debounce (a/chan) c ms))
View repeating-decimal.clj
(ns repeating-decimal)
(defn repeating-decimal [n]
(loop [rem 1 rems #{} divs [] i 0]
(let [div (int (/ (* rem 10) n))
rem (mod (* rem 10) n)]
(if (and (not= rem 0) (contains? rems rem))
[n divs]
(when (not= rem 0)
(recur rem (conj rems rem) (conj divs div) (inc i)))))))
View retry.clj
(defn with-retry [n f]
(letfn [(try-once [i]
(try
(f)
(catch Exception e
(if (pos? i)
#(try-once (dec i))
(throw e)))))]
(trampoline try-once n)))
View hatsukoi_clothes6.clj
(def actions
(repeatedly (read) (fn [] [(read) (read)])))
(defn step [[[[t op] & as' :as as] temp temps] time]
(let [temp' (+ temp (if (= time t) (get '{out 3 in 5} op) 0))]
[(if (= time t) as' as), (max (dec temp') 0), (conj temps temp')]))
(defn calc [actions]
(let [zs (count (filter zero? (last (reduce step [actions 0 []] (range 24)))))]
(+ zs (* 2 (- 24 zs)))))
View hatsukoi_clothes5.clj
(def players
(->> (repeatedly #(read *in* false nil))
(take-while identity)
(map-indexed #(vector % ('{J 11 Q 12 K 13 A 14 2 15} %2 %2)))
(into clojure.lang.PersistentQueue/EMPTY)))
(defn solve [ps]
(loop [[[id n :as p] :as ps] ps, card nil, passes 0, winners []]
(cond (empty? ps) winners
(= passes (count ps)) (recur ps nil 0 winners)
View example.clj
(defn include? [xs ys]
(let [ys' (frequencies ys)]
(reduce (fn [_ [e n]]
(or (some->> (ys' e) (<= n))
(reduced false)))
true
(frequencies xs))))
View example.clj
(defn include? [[x & xs :as xxs] [y & ys :as yys]]
(or (empty? xxs)
(and (not (empty? yys))
(if (= x y)
(recur xs ys)
(recur xxs ys)))))
View shadowing.ex
> defmodule M do
> def f do
> x = 0
> {fn -> x = 1 end, fn -> x end}
> end
> end
iex:4: warning: variable x is unused
{:module, M,
<<70, 79, 82, 49, 0, 0, 5, 24, 66, 69, 65, 77, 69, 120, 68, 99, 0, 0, 0, 124, 131, 104, 2, 100, 0, 14, 101, 108, 105, 120, 105, 114, 95, 100, 111, 99, 115, 95, 118, 49, 108, 0, 0, 0, 4, 104, 2, ...>>,
{:f, 0}}