03.lisp (546B)
1 (require "asdf") 2 3 (defun day3-part1 (input-file) 4 (with-open-file (s input-file) 5 (do ((total 0 (+ total (calc-max-joltage line))) 6 (line (read-line s nil) (read-line s nil))) 7 ((equal line nil) total)))) 8 9 (defun calc-max-joltage (batteries) 10 (let ((l (length batteries)) 11 (mx 0)) 12 (do ((n 0 (1+ n))) 13 ((>= n l)) 14 (do ((m (1+ n) (1+ m))) 15 ((>= m l)) 16 (setf mx (max mx (joltage (subseq batteries n (1+ n)) (subseq batteries m (1+ m))))))) 17 mx)) 18 19 (defun joltage (b1 b2) 20 (+ 21 (* 10 (parse-integer b1)) 22 (parse-integer b2)))