question 3b success

This commit is contained in:
didier committed 2025-12-03 12:48:17 -05:00
1 parent 23a2c2cf06
commit 065bd83312
1 file changed
+32 -7
+32 -7
View File
@@ -9,19 +9,44 @@
lines (strings/split-lines input)] ;(mapv Integer/parseInt))] lines (strings/split-lines input)] ;(mapv Integer/parseInt))]
(mapv parse-line lines))) (mapv parse-line lines)))
(defn all-possible-joltages [line] (defn all-possible-two-joltages [line]
(let [n (count line)] (let [n (count line)]
(for [s (range n) (for [s (range n)
e (range (inc s) n)] e (range (inc s) n)]
;[s e]
(+ (* 10 (get line s)) (get line e))))) (+ (* 10 (get line s)) (get line e)))))
(defn line-two-joltage [line]
(defn line-joltage [line] (apply max (all-possible-two-joltages line)))
(apply max (all-possible-joltages line)))
(defn question-3-a [document] (defn question-3-a [document]
(reduce + (map line-joltage (parse-input document)))) (reduce + (map line-two-joltage (parse-input document))))
(defn first-max-with-index [lst]
(let [max-value (volatile! -1)
max-index (volatile! -1)]
(when (seq lst)
(loop [[h & rest] lst
idx 0]
(when (> h @max-value)
(vreset! max-value h)
(vreset! max-index idx))
(when (seq rest)
(recur rest (inc idx)))))
[@max-index @max-value]))
(defn pow [x n]
(reduce *' (repeat n x)))
(defn line-n-joltage [line n]
(if (zero? n)
0
(let [[idx val] (first-max-with-index (drop-last (dec n) line))]
(+ (* (pow 10 (dec n)) val)
(line-n-joltage (drop (inc idx) line) (dec n))))))
(defn question-3-b [document]
(reduce + (map #(line-n-joltage % 12) (parse-input document))))
(defn -main [& args] (defn -main [& args]
(println "Solution to question 3-a is: " (question-3-a inputs/question-3))) (println "Solution to question 3-a is: " (question-3-a inputs/question-3))
(println "Solution to question 3-b is: " (question-3-b inputs/question-3)))