question 3b success
This commit is contained in:
1 parent
23a2c2cf06
commit
065bd83312
1 file changed
+32
-7
@@ -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)))
|
||||||
Reference in new issue
Block a user