diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-12-02 00:07:05 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-12-02 00:31:06 +0000 |
commit | 1ddc695cb9e0c0d8dfe87ade4981142155cd91bf (patch) | |
tree | c71c1098dfec63dfa290d2337e6ec292e38a26be | |
parent | 3784d148c74de4eede1fb2d01edb2ffe332d3574 (diff) | |
download | advent-of-code-1ddc695cb9e0c0d8dfe87ade4981142155cd91bf.tar.gz advent-of-code-1ddc695cb9e0c0d8dfe87ade4981142155cd91bf.tar.bz2 advent-of-code-1ddc695cb9e0c0d8dfe87ade4981142155cd91bf.zip |
Belated 2024 first puzzle solution
-rw-r--r-- | 2024/puzzle-1.lisp | 15 | ||||
-rw-r--r-- | 2024/util.lisp | 11 |
2 files changed, 26 insertions, 0 deletions
diff --git a/2024/puzzle-1.lisp b/2024/puzzle-1.lisp new file mode 100644 index 0000000..ad667d4 --- /dev/null +++ b/2024/puzzle-1.lisp @@ -0,0 +1,15 @@ +(load "util.lisp") + +(--> (uiop:read-file-lines "1-input") + (loop for line in _ + for x = (search " " line) + collect (parse-integer (subseq line 0 x)) into left + collect (parse-integer (subseq line (+ x 3))) into right + finally (return (list (sort left #'<) (sort right #'<)))) + (format t "Round 1: ~a~%Round 2: ~a~%" + (loop for x in (car _) + for y in (cadr _) + sum (abs (- y x))) + (loop for item in (car _) + for count = (count item (cadr _)) + sum (* item count)))) diff --git a/2024/util.lisp b/2024/util.lisp new file mode 100644 index 0000000..f9b1d86 --- /dev/null +++ b/2024/util.lisp @@ -0,0 +1,11 @@ +(defmacro --> (first &rest functions) + (if (null functions) + first + `(let* ,(loop :for f :in (cons first functions) + appending `((_ ,f))) + _))) + +(defun zip (a b) + (loop for i in a + for j in b + collect (cons i j))) |