]> code.bitgloo.com Git - clyne/advent-of-code.git/commitdiff
day7: improved
authorClyne Sullivan <clyne@bitgloo.com>
Tue, 7 Dec 2021 13:52:55 +0000 (08:52 -0500)
committerClyne Sullivan <clyne@bitgloo.com>
Tue, 7 Dec 2021 13:52:55 +0000 (08:52 -0500)
day7/part1.clj
day7/part2.clj

index 43426f8b4c46ded3ac11d8c57ca77636c2a07e60..03c2aa655208b7afa8db78d9bd8a062fccfa05f0 100644 (file)
@@ -1,26 +1,22 @@
-(def input
-  (->> (slurp "./in") ; "16,1,2,0,4,2,7,1,2,14"
-       (#(clojure.string/split % #","))
-       (map read-string)
-       )
-  )
-
 (defn median [lst]
   (let [cnt (count lst)
         hlf (quot cnt 2)
         srt (sort lst)]
-    (if (odd? cnt)
-      (nth srt hlf)
-      (quot (+ (nth srt hlf) (nth srt (dec hlf))) 2)
+    (cond->> (nth srt hlf)
+      (even? cnt)
+      (+ (nth srt (dec hlf)))
+      :true
+      (#(quot % 2))
       )
     )
   )
 
-(println
-  (->> input
-       (map (partial - (median input)))
-       (map #(if (neg? %) (- %) %))
-       (apply +)
-       )
-  )
+(->> (slurp "./in") ; "16,1,2,0,4,2,7,1,2,14"
+     (#(clojure.string/split % #","))
+     (map read-string)
+     (#(map (partial - (median %)) %))
+     (map #(Math/abs %))
+     (apply +)
+     (println)
+     )
 
index c051a6a350ff437a96b514bec3445371b975a574..83d20333271cfbb6fa88a369c8fffeb8a0ec1b1e 100644 (file)
@@ -1,23 +1,23 @@
-(def input
-  (->> (slurp "./in") ;"16,1,2,0,4,2,7,1,2,14"
-       (#(clojure.string/split % #","))
-       (map read-string)
-       )
-  )
-
-(defn mean [lst]
-  (quot (apply + lst) (count lst))
-  )
-
-(defn calc-fuel [lst meen]
-  (->> input
-       (map (partial - meen))
-       (map #(if (neg? %) (- %) %))
-       (map #(apply + (range 1 (inc %))))
+(defn calc-fuel [lst pos]
+  (->> lst
+       (map
+         (comp
+           #(/ (* % (inc %)) 2)
+           #(Math/abs %)
+           (partial - pos)
+           )
+         )
        (apply +)
        )
   )
 
-(println (min (calc-fuel input (mean input))
-              (calc-fuel input (inc (mean input)))))
+(let [input (->> (slurp "./in") ;"16,1,2,0,4,2,7,1,2,14"
+                 (#(clojure.string/split % #","))
+                 (map read-string)
+                 )
+      mean (quot (apply + input) (count input))
+      ]
+  (println (min (calc-fuel input mean)
+                (calc-fuel input (inc mean))))
+  )