23 lines
791 B
Common Lisp
23 lines
791 B
Common Lisp
(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"))
|