Add day 01
[adventofcode2020.git] / src / day01.lisp
CommitLineData
63a814f2
JK
1(in-package #:adventofcode2020)
2
3(defun calculate-expenses (&rest reports)
4 (let ((prod (apply #'cartesian-product reports)))
5 (loop for tuple in prod
6 when (= (apply #'+ tuple) 2020)
7 return (apply #'* tuple))))
8
9(day 01 input
10 (let ((report (int-list-from input)))
11 (part1 (calculate-expenses report report))
12 (part2 (calculate-expenses report report report))))
13
14(def-suite day01)
15(in-suite day01)
16
17(test simple-expenses
18 (is (equal
19 514579
20 (let ((report '(1721 979 366 299 675 1456)))
21 (calculate-expenses report report)))))
22
23(test complex-expenses
24 (is (equal
25 241861950
26 (let ((report '(1721 979 366 299 675 1456)))
27 (calculate-expenses report report report)))))
28
29(run! 'day01)