2024 day 3

This commit is contained in:
eriedaberrie 2024-12-02 21:50:19 -08:00
parent a7dc708a65
commit 2dea357021

35
2024/3/main.lisp Normal file
View file

@ -0,0 +1,35 @@
(asdf:load-system :cl-ppcre)
(defun solve-1 (line)
(let ((result 0))
(ppcre:do-register-groups (a b) ("mul\\(([0-9]+),([0-9]+)\\)" line)
(incf result (* (parse-integer a) (parse-integer b))))
result))
(defun solve-2 (line)
(let ((result 0)
(enabled t))
(ppcre:do-scans (start
end
starts
ends
"(mul\\(([0-9]+),([0-9]+)\\))|(do\\(\\))|(don't\\(\\))"
line)
(let ((str (subseq line start end)))
(cond
((string= str "do()")
(setf enabled t))
((string= str "don't()")
(setf enabled nil))
(enabled
(let ((a (subseq line (aref starts 1) (aref ends 1)))
(b (subseq line (aref starts 2) (aref ends 2))))
(incf result (* (parse-integer a) (parse-integer b))))))))
result))
(defun main ()
(let ((input (uiop:read-file-string "data.txt")))
(format t
"1: ~A~%2: ~A~%"
(solve-1 input)
(solve-2 input))))