commit 660507020d19e1d7c591187a4e4bda009ff44c6a parent e33c3158235bd13fee0db1b4eaa5a70bd4686b25 Author: Lukas Henkel <lh@entf.net> Date: Sat, 3 Dec 2022 10:44:38 +0100 Optimize task 3 Diffstat:
M | src/day03.lisp | | | 14 | +++++++------- |
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/day03.lisp b/src/day03.lisp @@ -24,19 +24,19 @@ (calculate-priority (if use-item2 item2 item1)))))) (defun task2 (inputs) - (loop with length = (length inputs) - for start from 0 - for end = (+ start 3) + (loop with head = inputs + with length = (length inputs) + for end from 3 while (<= end length) when (= 0 (mod end 3)) sum (loop for item = #\A then (cond ((char= item #\Z) #\a) ((char= item #\z) nil) (t (code-char (1+ (char-code item))))) while item - while (remove-if (lambda (elf) - (find item elf)) - (subseq inputs start end)) - finally (return (calculate-priority item))))) + until (loop for i from 0 to 2 + always (find item (elt head i))) + finally (return (calculate-priority item))) + and do (setf head (cdddr head)))) (define-day 3 ()