rlm@0: (ns rlm.resistors rlm@0: (:use [clojure.contrib [accumulators :only [combine] ]]) rlm@0: (:use [incanter core stats charts])) rlm@0: rlm@0: (def value 1) rlm@0: rlm@0: (defn parrallel [r1 r2] rlm@0: (/ 1 (+ ( / 1 r1) ( / 1 r2)))) rlm@0: rlm@0: (defn series [r1 r2] rlm@0: (+ r1 r2)) rlm@0: rlm@0: (defn total-nums [num-resistors] rlm@0: (if (= 1 num-resistors) #{value} rlm@0: (combine rlm@0: (apply hash-set (map (partial parrallel value) (total-nums (dec num-resistors)))) rlm@0: (apply hash-set (map (partial series value) (total-nums (dec num-resistors)))) rlm@0: (total-nums (dec num-resistors)) rlm@0: ))) rlm@0: rlm@0: (def total-nums (memoize total-nums)) rlm@0: rlm@0: (defn spectrum [num] rlm@0: (apply sorted-set (map float (total-nums num)))) rlm@0: rlm@0: (defn oh-yeah [] rlm@0: (view (dynamic-scatter-plot [number (range 1 13 1)] rlm@0: (let [vvv (apply vector (rlm.resistors/spectrum number))] rlm@0: [(map identity vvv) rlm@0: (repeat (count vvv) 0)]) rlm@0: :title "Resistor Combination Distribution")))