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