src/2018/days/day-05.lisp @ 2848a4548adf

2023/01 and 2022/01

Also start porting my test data to the new account, since Twitter imploded and
apparently it's impossible for a website to store a goddamn username and
password in The Year of Our Lord 2023 so everyone just outsources auth all
the time, ugh.
author Steve Losh <steve@stevelosh.com>
date Fri, 01 Dec 2023 11:05:43 -0500
parents 182bdd87fd9e
children (none)
(advent:defpackage* :advent/2018/05)
(in-package :advent/2018/05)
(named-readtables:in-readtable :interpol-syntax)

(defun reactivep (x y)
  (char= x (char-invertcase y)))

(defun react (string &aux result)
  (doseq (char string)
    (if (and result (reactivep char (car result)))
      (pop result)
      (push char result)))
  (coerce (nreverse result) 'string))

(define-problem (2018 5) (data alexandria:read-stream-content-into-string)
    (10708 5330)
  (setf data (delete #\newline data))
  (values
    (length (react data))
    (iterate
      (for unit :in-vector (remove-duplicates data :test #'char-equal))
      (for candidate = (react (remove unit data :test #'char-equal)))
      (minimizing (length candidate)))))