adventofcode2022

My solutions for Advent of Code 2022
Log | Files | Refs

commit 4d1ebe018a49bcd81cb48be2f49552fb20551ba8
parent ae00a8b11cf840d7907a3bee3c85f5915f9510d7
Author: Lukas Henkel <lh@entf.net>
Date:   Sat, 10 Dec 2022 09:00:54 +0100

Day 10 task 1

Diffstat:
Madventofcode2022.asd | 6++++--
Ainput/day10.txt | 140+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/day10.lisp | 33+++++++++++++++++++++++++++++++++
At/day10.lisp | 154+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 331 insertions(+), 2 deletions(-)

diff --git a/adventofcode2022.asd b/adventofcode2022.asd @@ -15,7 +15,8 @@ (:file "day06") (:file "day07") (:file "day08") - (:file "day09"))) + (:file "day09") + (:file "day10"))) (defsystem "adventofcode2022/test" :description "My solutions to the advent of code 2022" @@ -34,4 +35,5 @@ (:file "day06") (:file "day07") (:file "day08") - (:file "day09"))) + (:file "day09") + (:file "day10"))) diff --git a/input/day10.txt b/input/day10.txt @@ -0,0 +1,140 @@ +addx 1 +addx 4 +noop +noop +noop +addx 5 +addx 3 +noop +addx 2 +noop +noop +noop +noop +addx 3 +addx 5 +addx 2 +addx 1 +noop +addx 5 +addx -1 +addx 5 +noop +addx 3 +noop +addx -40 +noop +addx 38 +addx -31 +addx 3 +noop +addx 2 +addx -7 +addx 8 +addx 2 +addx 5 +addx 2 +addx 3 +addx -2 +noop +noop +noop +addx 5 +addx 2 +noop +addx 3 +addx 2 +noop +addx 3 +addx -36 +noop +noop +addx 5 +noop +noop +addx 8 +addx -5 +addx 5 +addx 2 +addx -15 +addx 16 +addx 4 +noop +addx 1 +noop +noop +addx 4 +addx 5 +addx -30 +addx 35 +addx -1 +addx 2 +addx -36 +addx 5 +noop +noop +addx -2 +addx 5 +addx 2 +addx 3 +noop +addx 2 +noop +noop +addx 5 +noop +addx 14 +addx -13 +addx 5 +addx -14 +addx 18 +addx 3 +addx 2 +addx -2 +addx 5 +addx -40 +noop +addx 32 +addx -25 +addx 3 +noop +addx 2 +addx 3 +addx -2 +addx 2 +addx 2 +noop +addx 3 +addx 5 +addx 2 +addx 9 +addx -36 +addx 30 +addx 5 +addx 2 +addx -25 +addx 26 +addx -38 +addx 10 +addx -3 +noop +noop +addx 22 +addx -16 +addx -1 +addx 5 +addx 3 +noop +addx 2 +addx -20 +addx 21 +addx 3 +addx 2 +addx -24 +addx 28 +noop +addx 5 +addx 3 +noop +addx -24 +noop diff --git a/src/day10.lisp b/src/day10.lisp @@ -0,0 +1,33 @@ +(defpackage #:adventofcode2022/day10 + (:use #:cl #:adventofcode2022)) +(in-package #:adventofcode2022/day10) + +(defun task1 (inputs) + (loop with x = 1 + with i = 1 + for (op value) in inputs + for ni = i + if (string= op "addx") + do (incf ni 2) + else + do (incf ni 1) + sum (loop for j from i below ni + when (or (= j 20) + (= j 60) + (= j 100) + (= j 140) + (= j 180) + (= j 220)) + sum (* j x)) + do (setf i ni) + when (string= op "addx") + do (incf x value))) + +(define-day 10 + (:translate-input (lambda (line) + (let ((parts (uiop:split-string line :separator '(#\Space)))) + (when (cadr parts) + (setf (cadr parts) (parse-integer (cadr parts)))) + parts))) + #'task1 + nil) diff --git a/t/day10.lisp b/t/day10.lisp @@ -0,0 +1,154 @@ +(in-package #:adventofcode2022/test) + +(defconstant +testdata-day10+ "addx 15 +addx -11 +addx 6 +addx -3 +addx 5 +addx -1 +addx -8 +addx 13 +addx 4 +noop +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx -35 +addx 1 +addx 24 +addx -19 +addx 1 +addx 16 +addx -11 +noop +noop +addx 21 +addx -15 +noop +noop +addx -3 +addx 9 +addx 1 +addx -3 +addx 8 +addx 1 +addx 5 +noop +noop +noop +noop +noop +addx -36 +noop +addx 1 +addx 7 +noop +noop +noop +addx 2 +addx 6 +noop +noop +noop +noop +noop +addx 1 +noop +noop +addx 7 +addx 1 +noop +addx -13 +addx 13 +addx 7 +noop +addx 1 +addx -33 +noop +noop +noop +addx 2 +noop +noop +noop +addx 8 +noop +addx -1 +addx 2 +addx 1 +noop +addx 17 +addx -9 +addx 1 +addx 1 +addx -3 +addx 11 +noop +noop +addx 1 +noop +addx 1 +noop +noop +addx -13 +addx -19 +addx 1 +addx 3 +addx 26 +addx -30 +addx 12 +addx -1 +addx 3 +addx 1 +noop +noop +noop +addx -9 +addx 18 +addx 1 +addx 2 +noop +noop +addx 9 +noop +noop +noop +addx -1 +addx 2 +addx -37 +addx 1 +addx 3 +noop +addx 15 +addx -21 +addx 22 +addx -6 +addx 1 +noop +addx 2 +addx 1 +noop +addx -10 +noop +noop +addx 20 +addx 1 +addx 2 +addx 2 +addx -6 +addx -11 +noop +noop +noop") + +(def-test day10-task1 () + (is-true + (= 13140 + (run-task 10 1 + (make-string-input-stream +testdata-day10+)))))