commit 7bae2f8156e869fd714d304bdd1dd0845c486cd1 parent e2d71d897654c2d0e8f13dd937bc313f3d9c6326 Author: Lukas Henkel <lh@entf.net> Date: Tue, 6 Dec 2022 06:59:26 +0100 Day 6 task 2 Diffstat:
M | src/day06.lisp | | | 18 | ++++++++++++------ |
M | t/day06.lisp | | | 21 | ++++++++++++++------- |
2 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/src/day06.lisp b/src/day06.lisp @@ -2,14 +2,20 @@ (:use #:cl #:adventofcode2022)) (in-package #:adventofcode2022/day06) -(defun task1 (inputs) - (loop with data = (car inputs) - for i from 4 to (length data) - for marker = (subseq data (- i 4) i) - when (= 4 (length (remove-duplicates marker))) +(defun first-unique-n-characters-after (sequence n) + (loop with data = sequence + for i from n to (length data) + for marker = (subseq data (- i n) i) + when (= n (length (remove-duplicates marker))) do (return i))) +(defun task1 (inputs) + (first-unique-n-characters-after (car inputs) 4)) + +(defun task2 (inputs) + (first-unique-n-characters-after (car inputs) 14)) + (define-day 6 () #'task1 - nil) + #'task2) diff --git a/t/day06.lisp b/t/day06.lisp @@ -1,15 +1,22 @@ (in-package #:adventofcode2022/test) (defparameter *testdata-day06* - (list (list "mjqjpqmgbljsphdztnvjfqwrcgsmlb" 7) - (list "bvwbjplbgvbhsrlpgdmjqwftvncz" 5) - (list "nppdvjthqldpwncqszvftbrmjlhg" 6) - (list "nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg" 10) - (list "zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw" 11))) + (list (list "mjqjpqmgbljsphdztnvjfqwrcgsmlb" 7 19) + (list "bvwbjplbgvbhsrlpgdmjqwftvncz" 5 23) + (list "nppdvjthqldpwncqszvftbrmjlhg" 6 23) + (list "nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg" 10 29) + (list "zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw" 11 26))) (def-test day06-task1 () - (loop for (data marker) in *testdata-day06* + (loop for (data m-1 m-2) in *testdata-day06* do (is-true - (= marker + (= m-1 (run-task 6 1 (make-string-input-stream data)))))) + +(def-test day06-task2 () + (loop for (data m-1 m-2) in *testdata-day06* + do (is-true + (= m-2 + (run-task 6 2 + (make-string-input-stream data))))))