aboutsummaryrefslogtreecommitdiff
path: root/2021/day7/07b.clj
diff options
context:
space:
mode:
Diffstat (limited to '2021/day7/07b.clj')
-rw-r--r--2021/day7/07b.clj22
1 files changed, 22 insertions, 0 deletions
diff --git a/2021/day7/07b.clj b/2021/day7/07b.clj
new file mode 100644
index 0000000..9e248c8
--- /dev/null
+++ b/2021/day7/07b.clj
@@ -0,0 +1,22 @@
+(ns day-7)
+
+(require '[clojure.string :as str])
+
+(defn fuelCost [x]
+ (/ (* x (+ 1 x)) 2))
+
+(defn totalDelta [xs dst]
+ (reduce + (map (fn [x] (fuelCost (Math/abs ^int (- x dst)))) xs)))
+
+(defn calcIdealPos [xs start]
+ (def thisDelta (totalDelta xs start))
+ (def nextDelta (totalDelta xs (+ 1 start)))
+ (cond (> nextDelta thisDelta) start
+ :else (calcIdealDst xs (+ 1 start))))
+
+(def input (as-> (slurp "./input") x
+ (str/split x #",")
+ (map str/trim x)
+ (map #(. Integer parseInt %) x)))
+
+(totalDelta input (calcIdealPos input (apply min input)))