aboutsummaryrefslogtreecommitdiff
path: root/2021/day7/07b.clj
blob: 9e248c8ddd95b79c2310f2b36675515edf143510 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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)))