Last active
December 3, 2024 18:05
-
-
Save emdeesee/e392db1c31bd99878b9e1140afb4346c to your computer and use it in GitHub Desktop.
AoC 2024 Day 2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun safep (levels) | |
(loop for (a b) on levels by #'cdr | |
with sign = (signum (- (cadr levels) (car levels))) | |
do | |
(if (null b) | |
(return t) | |
(let ((delta (- b a))) | |
(unless (and (= sign (signum delta)) | |
(<= 1 (abs delta) 3)) | |
(return nil)))))) | |
(defun drop-elt (n list) | |
(append (subseq list 0 n) (subseq list (1+ n)))) | |
(defun dampened-safe-p (levels) | |
(if (safep levels) | |
t | |
(loop for i from 0 below (length levels) | |
when (safep (drop-elt i levels)) | |
return t))) | |
(defvar *data*) | |
(progn | |
(setf *data* | |
(mapcar (lambda (string) (mapcar #'parse-integer (split-sequence #\space string))) | |
(uiop:read-file-lines "day2.txt"))) | |
(length *data*)) | |
(count-if #'safep *data*) | |
(count-if #'dampened-safe-p *data*) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment