   (let [input (partition 2 (slurp-day-input 3))]
     (count
       (second
-        (reduce #(let [[[[x1 y1] [x2 y2]] s] % nval (-move (first %2) x1 y1) m-nval (-move (second %2) x2 y2)]
+        (reduce #(let [[[[x1 y1] [x2 y2]] s] % nval (move (first %2) x1 y1) m-nval (move (second %2) x2 y2)]
                   [[nval m-nval] (conj s nval m-nval)])
                 [[[0 0] [0 0]] #{[0 0]}]
                 input)))))

           (map
             #(+ (happiness %) (happiness (reverse %)))
             arrangements))))

              val)) [0 0] (slurp-day-input 1)))

; day 2
(defn- dday2 [f-lwh]
  (let [input (day-input-line-seq 2)
        val-ex (fn [s] (map #(Integer/parseInt %) (clojure.string/split s #"x")))]
    (reduce #(let [[l w h] (val-ex %2)]
              (+ % (f-lwh l w h))) 0 input)))

(defn day2 []
  (dday2 #(let [a (* % %2) b (* %2 %3) c (* % %3) m (min a b c)]
           (+ (* 2 a) (* 2 b) (* 2 c) m))))

(defn day2-part2 []
  (dday2 #(let [[a b] (take 2 (sort [% %2 %3]))]
           (+ (* 2 a) (* 2 b) (* % %2 %3)))))

; day 3
(defn- move #(case %
             \^ [%2 (inc %3)]
             \v [%2 (dec %3)]
             \< [(dec %2) %3]
