aboutsummaryrefslogtreecommitdiff
path: root/2022
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2022-12-05 13:56:42 +0200
committerSyndamia <kamen@syndamia.com>2022-12-05 13:56:42 +0200
commit3db555e150f915f593800635738c39889d1b403b (patch)
treec3071fd88da329db73e973001d5a5d02175db0d7 /2022
parent4390a5c4130668ec6c25ef7f6851ff2aabf4f898 (diff)
downloadadvent-of-code-3db555e150f915f593800635738c39889d1b403b.tar
advent-of-code-3db555e150f915f593800635738c39889d1b403b.tar.gz
advent-of-code-3db555e150f915f593800635738c39889d1b403b.zip
[2022/D05] Solved both tasks from today
Diffstat (limited to '2022')
-rw-r--r--2022/Day05/input-po.txt512
-rw-r--r--2022/Day05/part-one.cl45
-rw-r--r--2022/Day05/part-two.cl52
3 files changed, 609 insertions, 0 deletions
diff --git a/2022/Day05/input-po.txt b/2022/Day05/input-po.txt
new file mode 100644
index 0000000..e34750c
--- /dev/null
+++ b/2022/Day05/input-po.txt
@@ -0,0 +1,512 @@
+[N] [G] [Q]
+[H] [B] [B] [R] [H]
+[S] [N] [Q] [M] [T] [Z]
+[J] [T] [R] [V] [H] [R] [S]
+[F] [Q] [W] [T] [V] [J] [V] [M]
+[W] [P] [V] [S] [F] [B] [Q] [J] [H]
+[T] [R] [Q] [B] [D] [D] [B] [N] [N]
+[D] [H] [L] [N] [N] [M] [D] [D] [B]
+ 1 2 3 4 5 6 7 8 9
+
+move 3 from 1 to 2
+move 1 from 7 to 1
+move 1 from 6 to 5
+move 5 from 5 to 9
+move 2 from 5 to 2
+move 1 from 6 to 8
+move 1 from 5 to 7
+move 5 from 4 to 6
+move 1 from 7 to 6
+move 1 from 2 to 4
+move 5 from 2 to 6
+move 2 from 1 to 5
+move 2 from 1 to 9
+move 16 from 6 to 4
+move 6 from 8 to 3
+move 7 from 2 to 4
+move 5 from 9 to 3
+move 1 from 1 to 4
+move 1 from 1 to 3
+move 3 from 7 to 4
+move 2 from 5 to 4
+move 31 from 4 to 8
+move 22 from 8 to 4
+move 9 from 3 to 6
+move 7 from 9 to 5
+move 4 from 5 to 6
+move 6 from 3 to 2
+move 2 from 6 to 7
+move 5 from 2 to 7
+move 1 from 2 to 4
+move 1 from 7 to 5
+move 4 from 5 to 4
+move 2 from 6 to 9
+move 2 from 4 to 6
+move 7 from 6 to 4
+move 2 from 6 to 1
+move 1 from 6 to 8
+move 8 from 8 to 1
+move 1 from 7 to 6
+move 4 from 1 to 5
+move 9 from 4 to 8
+move 4 from 1 to 7
+move 3 from 5 to 3
+move 2 from 1 to 9
+move 1 from 3 to 2
+move 1 from 9 to 8
+move 1 from 2 to 1
+move 1 from 1 to 8
+move 1 from 5 to 1
+move 2 from 3 to 1
+move 2 from 6 to 9
+move 19 from 4 to 1
+move 4 from 4 to 2
+move 6 from 1 to 4
+move 1 from 2 to 4
+move 4 from 4 to 3
+move 7 from 7 to 3
+move 7 from 8 to 2
+move 2 from 7 to 4
+move 3 from 2 to 1
+move 8 from 8 to 2
+move 3 from 9 to 1
+move 2 from 9 to 1
+move 10 from 2 to 7
+move 4 from 3 to 1
+move 1 from 8 to 3
+move 1 from 4 to 5
+move 1 from 3 to 6
+move 1 from 2 to 1
+move 10 from 1 to 3
+move 1 from 4 to 7
+move 1 from 6 to 4
+move 7 from 3 to 2
+move 5 from 2 to 8
+move 11 from 7 to 2
+move 3 from 4 to 3
+move 1 from 4 to 3
+move 5 from 8 to 9
+move 17 from 2 to 4
+move 11 from 1 to 5
+move 4 from 1 to 3
+move 5 from 9 to 2
+move 4 from 2 to 1
+move 3 from 5 to 7
+move 6 from 5 to 3
+move 1 from 5 to 8
+move 6 from 1 to 8
+move 3 from 8 to 5
+move 1 from 1 to 4
+move 1 from 7 to 2
+move 15 from 3 to 4
+move 1 from 1 to 3
+move 10 from 3 to 9
+move 2 from 7 to 4
+move 1 from 2 to 8
+move 21 from 4 to 9
+move 1 from 2 to 3
+move 1 from 8 to 1
+move 9 from 4 to 2
+move 1 from 1 to 5
+move 5 from 2 to 7
+move 2 from 8 to 5
+move 1 from 8 to 1
+move 2 from 2 to 8
+move 2 from 4 to 9
+move 24 from 9 to 5
+move 3 from 4 to 1
+move 2 from 2 to 5
+move 12 from 5 to 1
+move 10 from 1 to 5
+move 23 from 5 to 6
+move 8 from 9 to 1
+move 3 from 8 to 1
+move 1 from 1 to 2
+move 1 from 3 to 7
+move 11 from 6 to 1
+move 1 from 2 to 4
+move 6 from 6 to 8
+move 4 from 6 to 7
+move 1 from 7 to 3
+move 1 from 3 to 4
+move 23 from 1 to 8
+move 1 from 4 to 2
+move 1 from 2 to 1
+move 1 from 6 to 7
+move 6 from 5 to 3
+move 1 from 7 to 8
+move 1 from 1 to 8
+move 1 from 9 to 3
+move 6 from 7 to 2
+move 3 from 5 to 9
+move 5 from 2 to 3
+move 28 from 8 to 3
+move 4 from 1 to 9
+move 5 from 9 to 5
+move 2 from 8 to 5
+move 1 from 9 to 4
+move 2 from 7 to 5
+move 1 from 4 to 2
+move 1 from 4 to 8
+move 2 from 8 to 3
+move 6 from 5 to 2
+move 1 from 7 to 2
+move 39 from 3 to 2
+move 2 from 3 to 8
+move 1 from 9 to 6
+move 2 from 2 to 9
+move 2 from 9 to 6
+move 1 from 8 to 1
+move 1 from 1 to 6
+move 5 from 6 to 9
+move 2 from 5 to 8
+move 20 from 2 to 4
+move 2 from 4 to 8
+move 2 from 8 to 3
+move 3 from 3 to 1
+move 22 from 2 to 5
+move 2 from 9 to 1
+move 3 from 1 to 7
+move 1 from 2 to 6
+move 1 from 2 to 9
+move 1 from 1 to 8
+move 2 from 7 to 9
+move 1 from 6 to 8
+move 1 from 2 to 7
+move 1 from 1 to 3
+move 1 from 9 to 8
+move 1 from 8 to 5
+move 3 from 8 to 7
+move 3 from 7 to 8
+move 15 from 4 to 1
+move 1 from 4 to 3
+move 10 from 1 to 6
+move 3 from 8 to 1
+move 5 from 9 to 4
+move 7 from 5 to 1
+move 4 from 6 to 3
+move 15 from 5 to 2
+move 4 from 6 to 4
+move 7 from 2 to 1
+move 6 from 4 to 6
+move 1 from 5 to 9
+move 1 from 5 to 7
+move 1 from 3 to 5
+move 11 from 1 to 8
+move 3 from 4 to 6
+move 4 from 1 to 5
+move 1 from 2 to 5
+move 2 from 8 to 3
+move 11 from 6 to 1
+move 1 from 3 to 7
+move 1 from 9 to 8
+move 6 from 5 to 8
+move 3 from 8 to 4
+move 1 from 4 to 5
+move 3 from 3 to 1
+move 9 from 8 to 2
+move 2 from 1 to 5
+move 11 from 2 to 5
+move 1 from 3 to 6
+move 2 from 8 to 5
+move 3 from 4 to 6
+move 1 from 8 to 3
+move 2 from 1 to 9
+move 1 from 3 to 8
+move 16 from 5 to 7
+move 3 from 1 to 6
+move 1 from 3 to 5
+move 1 from 6 to 7
+move 1 from 9 to 4
+move 1 from 5 to 4
+move 1 from 3 to 2
+move 1 from 1 to 2
+move 3 from 4 to 9
+move 1 from 2 to 7
+move 2 from 8 to 3
+move 6 from 2 to 8
+move 11 from 1 to 3
+move 6 from 3 to 1
+move 4 from 3 to 2
+move 2 from 3 to 1
+move 1 from 1 to 3
+move 4 from 8 to 4
+move 4 from 8 to 2
+move 11 from 7 to 2
+move 9 from 7 to 5
+move 1 from 7 to 3
+move 4 from 5 to 7
+move 14 from 2 to 3
+move 17 from 3 to 7
+move 2 from 5 to 2
+move 1 from 5 to 7
+move 1 from 5 to 6
+move 4 from 6 to 7
+move 8 from 1 to 2
+move 2 from 6 to 4
+move 1 from 6 to 8
+move 6 from 4 to 1
+move 1 from 8 to 5
+move 6 from 7 to 8
+move 5 from 8 to 3
+move 12 from 2 to 1
+move 1 from 8 to 4
+move 4 from 3 to 1
+move 4 from 2 to 4
+move 3 from 9 to 3
+move 3 from 3 to 2
+move 1 from 3 to 2
+move 3 from 4 to 1
+move 2 from 5 to 7
+move 22 from 1 to 8
+move 17 from 8 to 6
+move 21 from 7 to 6
+move 3 from 2 to 8
+move 3 from 1 to 5
+move 3 from 5 to 2
+move 2 from 4 to 6
+move 7 from 6 to 5
+move 1 from 9 to 4
+move 14 from 6 to 4
+move 5 from 8 to 3
+move 1 from 6 to 3
+move 3 from 3 to 9
+move 2 from 9 to 1
+move 2 from 7 to 1
+move 16 from 6 to 8
+move 2 from 6 to 7
+move 1 from 2 to 7
+move 1 from 3 to 8
+move 7 from 4 to 1
+move 2 from 7 to 2
+move 4 from 4 to 7
+move 5 from 2 to 4
+move 1 from 7 to 3
+move 3 from 5 to 8
+move 1 from 7 to 5
+move 12 from 1 to 6
+move 3 from 7 to 2
+move 7 from 4 to 2
+move 3 from 3 to 2
+move 1 from 4 to 2
+move 1 from 9 to 8
+move 8 from 6 to 8
+move 12 from 2 to 4
+move 5 from 5 to 2
+move 11 from 4 to 9
+move 3 from 6 to 3
+move 2 from 4 to 2
+move 4 from 2 to 6
+move 5 from 2 to 8
+move 12 from 8 to 4
+move 20 from 8 to 5
+move 13 from 5 to 3
+move 1 from 8 to 5
+move 5 from 5 to 9
+move 16 from 9 to 1
+move 9 from 4 to 5
+move 12 from 3 to 9
+move 5 from 6 to 5
+move 9 from 9 to 7
+move 14 from 1 to 4
+move 14 from 4 to 1
+move 15 from 5 to 7
+move 4 from 8 to 2
+move 3 from 4 to 3
+move 3 from 1 to 8
+move 1 from 5 to 9
+move 1 from 5 to 3
+move 3 from 9 to 8
+move 4 from 3 to 4
+move 1 from 4 to 6
+move 20 from 7 to 2
+move 2 from 3 to 8
+move 3 from 7 to 2
+move 4 from 2 to 1
+move 1 from 6 to 7
+move 3 from 4 to 2
+move 2 from 2 to 3
+move 4 from 3 to 4
+move 1 from 8 to 1
+move 3 from 8 to 1
+move 2 from 7 to 8
+move 1 from 4 to 5
+move 14 from 2 to 5
+move 6 from 1 to 5
+move 1 from 4 to 3
+move 15 from 1 to 4
+move 1 from 8 to 2
+move 1 from 9 to 5
+move 4 from 8 to 7
+move 13 from 5 to 6
+move 1 from 8 to 1
+move 2 from 7 to 9
+move 12 from 6 to 4
+move 1 from 3 to 6
+move 1 from 1 to 6
+move 4 from 5 to 2
+move 5 from 5 to 6
+move 2 from 6 to 2
+move 1 from 7 to 5
+move 2 from 6 to 9
+move 1 from 5 to 9
+move 16 from 2 to 5
+move 17 from 4 to 1
+move 3 from 1 to 3
+move 1 from 2 to 6
+move 2 from 6 to 1
+move 3 from 3 to 1
+move 14 from 1 to 8
+move 3 from 5 to 2
+move 4 from 8 to 2
+move 3 from 4 to 5
+move 15 from 5 to 3
+move 1 from 7 to 6
+move 3 from 1 to 8
+move 2 from 3 to 7
+move 1 from 1 to 2
+move 1 from 7 to 6
+move 4 from 2 to 8
+move 2 from 6 to 2
+move 1 from 7 to 6
+move 3 from 8 to 2
+move 12 from 8 to 6
+move 1 from 5 to 6
+move 3 from 2 to 5
+move 2 from 2 to 5
+move 4 from 6 to 5
+move 4 from 3 to 5
+move 1 from 8 to 4
+move 11 from 6 to 4
+move 6 from 3 to 1
+move 2 from 9 to 8
+move 20 from 4 to 5
+move 1 from 4 to 9
+move 2 from 3 to 8
+move 1 from 3 to 8
+move 17 from 5 to 8
+move 5 from 5 to 9
+move 9 from 5 to 1
+move 2 from 6 to 7
+move 23 from 8 to 2
+move 2 from 7 to 5
+move 3 from 9 to 4
+move 16 from 2 to 4
+move 11 from 1 to 8
+move 4 from 5 to 8
+move 11 from 2 to 6
+move 2 from 6 to 1
+move 5 from 9 to 5
+move 5 from 5 to 6
+move 5 from 8 to 6
+move 1 from 6 to 7
+move 7 from 8 to 1
+move 12 from 1 to 2
+move 1 from 9 to 5
+move 1 from 1 to 3
+move 1 from 1 to 4
+move 1 from 5 to 3
+move 1 from 3 to 6
+move 1 from 8 to 2
+move 18 from 6 to 2
+move 1 from 6 to 2
+move 2 from 8 to 3
+move 3 from 3 to 8
+move 18 from 4 to 9
+move 11 from 9 to 2
+move 2 from 9 to 6
+move 2 from 4 to 1
+move 1 from 1 to 5
+move 1 from 5 to 4
+move 1 from 4 to 8
+move 42 from 2 to 1
+move 3 from 9 to 3
+move 1 from 8 to 1
+move 1 from 3 to 4
+move 3 from 8 to 7
+move 1 from 4 to 1
+move 2 from 3 to 2
+move 17 from 1 to 6
+move 15 from 6 to 3
+move 2 from 9 to 7
+move 1 from 3 to 6
+move 2 from 7 to 6
+move 2 from 2 to 4
+move 1 from 2 to 3
+move 1 from 4 to 9
+move 1 from 4 to 1
+move 1 from 6 to 3
+move 20 from 1 to 9
+move 6 from 1 to 9
+move 7 from 9 to 3
+move 20 from 9 to 1
+move 1 from 6 to 7
+move 2 from 6 to 7
+move 1 from 6 to 5
+move 1 from 6 to 8
+move 4 from 7 to 3
+move 3 from 7 to 2
+move 1 from 6 to 4
+move 1 from 2 to 1
+move 1 from 4 to 9
+move 21 from 3 to 2
+move 5 from 3 to 8
+move 1 from 5 to 1
+move 2 from 8 to 7
+move 4 from 8 to 3
+move 4 from 2 to 5
+move 19 from 2 to 3
+move 1 from 9 to 2
+move 23 from 3 to 2
+move 2 from 7 to 4
+move 3 from 5 to 9
+move 16 from 2 to 1
+move 1 from 5 to 4
+move 1 from 9 to 3
+move 2 from 3 to 8
+move 3 from 4 to 6
+move 1 from 6 to 2
+move 1 from 8 to 6
+move 5 from 2 to 6
+move 7 from 6 to 5
+move 4 from 2 to 6
+move 6 from 5 to 9
+move 1 from 8 to 4
+move 18 from 1 to 9
+move 1 from 5 to 2
+move 9 from 9 to 4
+move 5 from 6 to 3
+move 9 from 4 to 1
+move 4 from 9 to 2
+move 1 from 4 to 8
+move 1 from 8 to 3
+move 7 from 1 to 8
+move 6 from 3 to 2
+move 10 from 2 to 9
+move 21 from 1 to 8
+move 1 from 2 to 8
+move 19 from 8 to 4
+move 1 from 8 to 3
+move 16 from 4 to 8
+move 1 from 4 to 2
+move 2 from 1 to 5
+move 1 from 2 to 3
+move 1 from 4 to 5
+move 1 from 4 to 8
+move 2 from 1 to 3
+move 3 from 3 to 2
+move 5 from 9 to 1
+move 1 from 3 to 4
+move 4 from 9 to 4
+move 2 from 1 to 9
+move 2 from 2 to 5
+move 1 from 2 to 7
+move 3 from 1 to 7
+move 10 from 8 to 6
+move 4 from 8 to 5
+move 3 from 4 to 3
+move 3 from 3 to 4
+move 1 from 9 to 8
+move 2 from 7 to 2
+move 1 from 2 to 1
+move 4 from 9 to 3
diff --git a/2022/Day05/part-one.cl b/2022/Day05/part-one.cl
new file mode 100644
index 0000000..914bc06
--- /dev/null
+++ b/2022/Day05/part-one.cl
@@ -0,0 +1,45 @@
+(defvar *prog-input*)
+
+;;; After running file, if you enter a blank line, code will work on each
+;;; line of input, until "end" is typed.
+;;; Otherwise, the input is taken as a filename and code will be executed
+;;; over each line in the file until EOF.
+(let ((ui (read-line)))
+ (if (equal ui "")
+ (setq *prog-input* *standard-input*)
+ (setq *prog-input* (open ui))))
+
+(let
+ ((inpt (read-line *prog-input* NIL)) (i 1) (stacks '(())) (si 0))
+
+ (loop until (char= (char inpt 1) #\1) do
+ (loop until (>= i (length inpt)) do
+ (if (<= (length stacks) si)
+ (setq stacks (append stacks (list NIL NIL) ))) ; ZERO idea why I can't just append '(())
+
+ (if (not (char= (char inpt i) #\Space))
+ (setf (nth si stacks) (append (nth si stacks) (list (char inpt i)))))
+
+ (setq si (+ si 1) i (+ i 4)))
+
+ (setq i 1 si 0)
+ (setq inpt (read-line *prog-input* NIL)))
+
+ (read-line *prog-input* NIL)
+
+ (setq inpt (read-line *prog-input* NIL))
+ (loop until (or (string= inpt "end") (not inpt)) do
+ (setq si (- (parse-integer inpt :junk-allowed T :start (position #\Space inpt :start (position #\f inpt))) 1))
+ (setq i (- (parse-integer inpt :junk-allowed T :start (position #\Space inpt :start (position #\t inpt))) 1))
+
+ (dotimes (x (parse-integer inpt :junk-allowed T :start (position #\Space inpt)))
+ (push (pop (nth si stacks)) (nth i stacks)))
+
+ (setq inpt (read-line *prog-input* NIL)))
+
+ (loop for x in stacks do
+ (prin1 (car x))))
+
+(if (not (eq *prog-input* *standard-input*))
+ (close *prog-input*))
+
diff --git a/2022/Day05/part-two.cl b/2022/Day05/part-two.cl
new file mode 100644
index 0000000..2622504
--- /dev/null
+++ b/2022/Day05/part-two.cl
@@ -0,0 +1,52 @@
+(defvar *prog-input*)
+
+;;; After running file, if you enter a blank line, code will work on each
+;;; line of input, until "end" is typed.
+;;; Otherwise, the input is taken as a filename and code will be executed
+;;; over each line in the file until EOF.
+(let ((ui (read-line)))
+ (if (equal ui "")
+ (setq *prog-input* *standard-input*)
+ (setq *prog-input* (open ui))))
+
+(defun first-n (lis n)
+ (if (= n 0)
+ NIL
+ (cons (car lis) (first-n (cdr lis) (- n 1)))))
+
+(let
+ ((inpt (read-line *prog-input* NIL)) (i 1) (stacks '(())) (si 0) (x 0))
+
+ (loop until (char= (char inpt 1) #\1) do
+ (loop until (>= i (length inpt)) do
+ (if (<= (length stacks) si)
+ (setq stacks (append stacks (list NIL NIL) ))) ; ZERO idea why I can't just append '(())
+
+ (if (not (char= (char inpt i) #\Space))
+ (setf (nth si stacks) (append (nth si stacks) (list (char inpt i)))))
+
+ (setq si (+ si 1) i (+ i 4)))
+
+ (setq i 1 si 0)
+ (setq inpt (read-line *prog-input* NIL)))
+
+ (read-line *prog-input* NIL)
+
+ (setq inpt (read-line *prog-input* NIL))
+ (loop until (or (string= inpt "end") (not inpt)) do
+ (setq si (- (parse-integer inpt :junk-allowed T :start (position #\Space inpt :start (position #\f inpt))) 1))
+ (setq i (- (parse-integer inpt :junk-allowed T :start (position #\Space inpt :start (position #\t inpt))) 1))
+
+ (setq x (parse-integer inpt :junk-allowed T :start (position #\Space inpt)))
+ (setf (nth i stacks) (append (first-n (nth si stacks) x) (nth i stacks)))
+ (dotimes (m x)
+ (pop (nth si stacks)))
+
+ (setq inpt (read-line *prog-input* NIL)))
+
+ (loop for x in stacks do
+ (prin1 (car x))))
+
+(if (not (eq *prog-input* *standard-input*))
+ (close *prog-input*))
+