aboutsummaryrefslogtreecommitdiff
path: root/2022/Day10/part-two.cl
blob: 5ce1b78acda76f882b6c6fdf1f6821e804624412 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
;;; https://gitlab.com/Syndamia/senzill
(require :senzill)
(use-package :senzill.math)
(use-package :senzill.collections)
(use-package :senzill.io)

(ask-for-stream (prog-input)
  (let ((X 1) (cycles 0) (check-on 40) (check-max 241) (line-buff ""))

    (doread-lines (inpt :read-line-options (prog-input NIL))
                  (loop for i from 1 to (if (char= (char inpt 0) #\a) 2 1)
                        if (and (> check-on 0) (= cycles check-on))
                          do (print line-buff)
                             (force-output)
                             (setf line-buff "")
                             (if (< check-on check-max)
                               (+= check-on 40)
                               (setf check-on -1))
                        do (setf line-buff (concatenate 'string
                                                        line-buff
                                                        (if (or (= (mod cycles 40) (- X 1)) (= (mod cycles 40) X) (= (mod cycles 40) (+ X 1)))
                                                          "#"
                                                          ".")))
                           (++1 cycles)
                        if (= i 2)
                          do (+= X (parse-integer inpt :start 5))))
    (print line-buff)))