src/2017/days/day-08.lisp @ e41337e3b59b
Accessors
author |
Steve Losh <steve@stevelosh.com> |
date |
Wed, 15 Dec 2021 23:10:57 -0500 |
parents |
182bdd87fd9e |
children |
(none) |
(advent:defpackage* :advent/2017/08)
(in-package :advent/2017/08)
(defun == (x y) (= x y))
(defun != (x y) (/= x y))
(defun inc (delta) delta)
(defun dec (delta) (- delta))
(define-problem (2017 8) (data read-lines) (5215 6419)
(let ((registers (make-hash-table)))
(macrolet ((r (register) `(gethash ,register registers 0)))
(iterate
(for line :in data)
(for (reg op delta nil cmp-reg cmp-op cmp-bound)
:= (let ((*package* (find-package :advent/2017/08)))
(read-all-from-string line)))
(when (funcall cmp-op (r cmp-reg) cmp-bound)
(maximizing (incf (r reg) (funcall op delta)) :into highest))
(finally (return (values (alexandria:extremum (alexandria:hash-table-values registers) #'>) highest)))))))