Skip to content

Instantly share code, notes, and snippets.

@g7s
Last active December 1, 2020 17:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save g7s/d96f8a30df007ae126906b16f714b612 to your computer and use it in GitHub Desktop.
Save g7s/d96f8a30df007ae126906b16f714b612 to your computer and use it in GitHub Desktop.
Advent of Code 2020 - Day 1
(defn sum-pair
[target nums]
(when (pos? (count nums))
(let [min-el (get nums 0)
max-el (peek nums)]
(case (compare (+ min-el max-el) target)
1 (recur target (pop nums))
-1 (recur target (subvec nums 1))
0 [min-el max-el]))))
(defn nums
[rdr]
(->> (line-seq rdr)
(map #(Integer/parseInt %))
sort
vec))
(defn aoc-1
"https://adventofcode.com/2020/day/1"
[input-file-path]
(with-open [rdr (clojure.java.io/reader input-file-path)]
(some->> (sum-pair 2020 (nums rdr))
(apply *))))
(defn aoc-12
"https://adventofcode.com/2020/day/1#part2"
[input-file-path]
(with-open [rdr (clojure.java.io/reader input-file-path)]
(let [vnums (nums rdr)
coll (->> (subvec vnums 1)
(iterate #(subvec % 1))
(interleave vnums)
(partition 2))]
(some->> (keep (fn [[n v]]
(some-> (sum-pair (- 2020 n) v)
(conj n)))
coll)
first
(apply *)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment