(require :uiop) (load (sb-ext:posix-getenv "ASDF")) (asdf:load-system 'str) (defun bank-max-joltage (bank) (let ((batt-len (- (length bank) 1))) (apply #'max (loop for batt-first from 0 to (- batt-len 1) collect (apply #'max (loop for batt-last from (+ batt-first 1) to batt-len collect (let ( (first-char (subseq bank batt-first (+ batt-first 1))) (last-char (subseq bank batt-last (+ batt-last 1)))) (parse-integer (format nil "~A~A" first-char last-char))))))))) (bank-max-joltage "987654321111111") (defun array-total-joltage (bank-list) (reduce #'+ (mapcar #'bank-max-joltage bank-list))) (array-total-joltage (uiop:read-file-lines "03example.txt")) (array-total-joltage (uiop:read-file-lines "03data.txt"))