(in-package #:adventofcode2020) (defun simple-fuel (mass) (- (floor (/ mass 3)) 2)) (defun complex-fuel (mass) (loop with m = (simple-fuel mass) while (> m 0) sum m do (setf m (simple-fuel m)))) (day 00 input (let ((modules (int-list-from input))) (part1 (reduce #'+ (mapcar #'simple-fuel modules))) (part2 (reduce #'+ (mapcar #'complex-fuel modules))))) (def-suite day00) (in-suite day00) (test simple-fuel (is (equal '(2 2 654 33583) (mapcar #'simple-fuel '(12 14 1969 100756))))) (test complex-fuel (is (equal '(2 966 50346) (mapcar #'complex-fuel '(14 1969 100756))))) (run! 'day00)