Skip to content

Instantly share code, notes, and snippets.

@emdeesee
Last active December 3, 2024 18:05
Show Gist options
  • Save emdeesee/e392db1c31bd99878b9e1140afb4346c to your computer and use it in GitHub Desktop.
Save emdeesee/e392db1c31bd99878b9e1140afb4346c to your computer and use it in GitHub Desktop.
AoC 2024 Day 2
(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