(in-package #:adventofcode2020) (defun calculate-expenses (&rest reports) (let ((prod (apply #'cartesian-product reports))) (loop for tuple in prod when (= (apply #'+ tuple) 2020) return (apply #'* tuple)))) (day 01 input (let ((report (int-list-from input))) (part1 (calculate-expenses report report)) (part2 (calculate-expenses report report report)))) (def-suite day01) (in-suite day01) (test simple-expenses (is (equal 514579 (let ((report '(1721 979 366 299 675 1456))) (calculate-expenses report report))))) (test complex-expenses (is (equal 241861950 (let ((report '(1721 979 366 299 675 1456))) (calculate-expenses report report report))))) (run! 'day01)