diff options
author | kartofen <mladenovnasko0@gmail.com> | 2022-12-09 23:29:28 +0200 |
---|---|---|
committer | kartofen <mladenovnasko0@gmail.com> | 2022-12-09 23:29:28 +0200 |
commit | b284257038b6d4777de7c6ef5499e8b7c64b53b5 (patch) | |
tree | 256b0f105f0775e206aed8536bbd5a28eea16cfb /Advent-of-Code-2022/aoc-9 | |
parent | c5a8824311e7c814f58593f43b0528505756f46a (diff) |
day 8 and day 9
Diffstat (limited to 'Advent-of-Code-2022/aoc-9')
-rwxr-xr-x | Advent-of-Code-2022/aoc-9/build.sh | 5 | ||||
-rw-r--r-- | Advent-of-Code-2022/aoc-9/input.txt | 2000 | ||||
-rw-r--r-- | Advent-of-Code-2022/aoc-9/main.c | 113 | ||||
-rw-r--r-- | Advent-of-Code-2022/aoc-9/sample.txt | 8 |
4 files changed, 2126 insertions, 0 deletions
diff --git a/Advent-of-Code-2022/aoc-9/build.sh b/Advent-of-Code-2022/aoc-9/build.sh new file mode 100755 index 0000000..30f495e --- /dev/null +++ b/Advent-of-Code-2022/aoc-9/build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -xe + +gcc -o main main.c -Wall -Wextra -pedantic diff --git a/Advent-of-Code-2022/aoc-9/input.txt b/Advent-of-Code-2022/aoc-9/input.txt new file mode 100644 index 0000000..b9aa23e --- /dev/null +++ b/Advent-of-Code-2022/aoc-9/input.txt @@ -0,0 +1,2000 @@ +R 1 +U 2 +R 1 +L 2 +D 2 +U 1 +R 2 +U 1 +L 2 +U 1 +D 2 +R 1 +D 1 +L 1 +U 2 +D 2 +L 2 +D 1 +U 2 +D 2 +L 1 +U 1 +L 2 +D 2 +U 2 +L 1 +U 2 +L 1 +R 2 +U 1 +L 1 +R 2 +D 1 +U 2 +R 1 +U 1 +R 2 +U 1 +R 2 +U 1 +D 1 +U 1 +D 1 +L 2 +D 2 +R 1 +U 1 +R 1 +U 1 +L 1 +U 1 +D 2 +R 2 +D 2 +L 2 +U 2 +R 1 +D 1 +U 1 +D 2 +R 1 +D 2 +L 2 +R 2 +L 1 +U 1 +L 2 +D 2 +L 2 +D 1 +R 1 +L 2 +D 2 +R 1 +L 1 +R 1 +D 1 +R 1 +D 2 +L 2 +U 1 +D 2 +R 2 +D 1 +U 1 +L 1 +D 1 +U 2 +R 1 +U 1 +L 2 +U 1 +L 1 +U 2 +L 2 +D 2 +U 1 +L 1 +U 2 +D 2 +L 2 +D 2 +R 2 +U 2 +L 2 +D 1 +U 1 +R 2 +D 2 +L 2 +R 2 +D 2 +L 1 +D 1 +U 2 +R 2 +D 3 +R 1 +U 3 +L 3 +D 2 +R 1 +D 1 +L 2 +D 1 +R 2 +U 3 +L 2 +U 2 +R 3 +U 3 +L 1 +D 3 +R 3 +U 2 +R 3 +U 3 +L 1 +D 3 +R 3 +L 2 +R 2 +L 3 +D 3 +R 2 +D 2 +R 2 +D 1 +R 1 +L 1 +D 2 +R 1 +D 2 +U 1 +R 2 +L 2 +R 2 +U 2 +R 2 +D 1 +U 1 +D 1 +L 3 +U 3 +D 3 +L 1 +U 2 +R 2 +U 2 +R 1 +U 1 +L 2 +U 2 +R 3 +U 1 +D 3 +R 3 +U 2 +R 1 +U 1 +D 3 +L 2 +U 3 +L 1 +R 2 +D 3 +R 2 +U 1 +R 2 +D 1 +U 3 +L 2 +D 1 +R 1 +L 3 +R 3 +D 2 +R 1 +U 2 +R 3 +D 2 +U 2 +L 2 +U 1 +R 2 +U 2 +L 2 +D 3 +L 2 +D 1 +L 1 +U 2 +L 1 +D 2 +R 1 +D 2 +R 1 +L 2 +U 1 +L 1 +U 1 +D 2 +R 4 +D 4 +L 2 +R 4 +D 1 +L 2 +D 2 +L 4 +U 4 +D 4 +L 3 +R 3 +D 1 +L 1 +D 1 +U 4 +R 4 +U 4 +D 2 +R 1 +U 3 +R 2 +U 3 +R 4 +D 3 +U 3 +L 4 +D 1 +R 2 +U 3 +D 4 +U 3 +R 2 +L 1 +D 2 +U 2 +R 3 +U 2 +R 2 +D 2 +L 2 +U 4 +R 1 +L 3 +R 1 +L 1 +D 3 +R 4 +D 2 +R 4 +U 3 +L 1 +D 1 +R 4 +U 3 +D 1 +L 3 +R 1 +L 3 +D 2 +L 2 +R 3 +L 4 +D 4 +U 1 +L 1 +R 1 +D 3 +L 2 +R 1 +D 3 +R 2 +D 4 +U 4 +R 3 +U 1 +D 3 +L 3 +D 3 +U 1 +D 2 +U 4 +R 4 +U 2 +D 1 +R 1 +D 4 +L 2 +R 3 +U 4 +L 1 +D 1 +U 4 +L 3 +D 4 +U 2 +R 4 +U 2 +R 4 +U 2 +L 1 +R 1 +L 3 +D 4 +L 2 +R 2 +L 3 +U 3 +R 4 +L 2 +R 1 +D 5 +U 1 +R 1 +U 2 +R 1 +U 4 +L 3 +U 4 +R 2 +D 3 +L 4 +R 3 +L 2 +U 2 +R 1 +L 3 +D 5 +R 3 +L 2 +U 5 +R 2 +U 5 +L 5 +U 4 +R 4 +D 2 +R 4 +D 3 +R 2 +D 3 +U 2 +L 3 +D 3 +L 1 +U 4 +D 3 +L 1 +D 1 +R 2 +L 4 +R 3 +U 1 +R 3 +L 2 +R 3 +D 4 +R 2 +U 3 +L 4 +R 5 +L 1 +U 1 +D 5 +U 2 +R 5 +L 4 +D 3 +L 1 +D 3 +U 1 +R 2 +D 1 +L 5 +D 2 +R 4 +L 1 +D 2 +R 4 +L 3 +R 3 +L 3 +R 4 +L 3 +U 3 +D 4 +U 2 +R 1 +D 1 +U 1 +R 5 +D 5 +L 5 +R 3 +U 2 +D 4 +L 5 +D 1 +L 4 +R 4 +U 2 +L 2 +R 2 +U 3 +L 1 +U 3 +L 1 +D 4 +U 5 +D 5 +R 4 +L 4 +R 5 +D 4 +U 5 +L 4 +U 1 +D 4 +R 5 +D 2 +U 4 +R 2 +U 3 +D 2 +U 6 +D 4 +R 1 +D 4 +R 3 +L 1 +R 5 +U 6 +D 5 +L 4 +R 3 +L 4 +R 5 +D 1 +R 3 +D 2 +L 6 +U 5 +R 6 +L 2 +D 6 +U 1 +L 3 +D 4 +R 6 +D 3 +L 3 +R 5 +U 6 +D 5 +U 1 +R 4 +L 4 +U 4 +R 5 +D 1 +L 4 +U 6 +L 2 +R 3 +L 2 +R 3 +L 3 +R 4 +U 3 +D 1 +R 6 +D 5 +L 2 +R 4 +U 4 +D 2 +L 1 +R 2 +D 3 +L 4 +D 4 +R 4 +D 6 +R 1 +L 2 +R 5 +D 3 +U 5 +R 4 +L 6 +D 6 +U 4 +R 4 +L 4 +U 4 +R 5 +D 1 +U 1 +R 4 +L 2 +U 6 +D 3 +L 3 +U 6 +D 1 +U 4 +D 6 +R 6 +U 1 +R 2 +U 5 +D 4 +L 2 +U 5 +D 1 +L 5 +U 1 +R 3 +D 2 +R 1 +L 3 +D 1 +R 1 +L 2 +R 6 +D 6 +R 4 +U 4 +L 5 +R 6 +L 5 +R 4 +D 3 +L 2 +R 4 +L 2 +U 6 +D 5 +R 1 +L 3 +R 1 +U 2 +R 6 +L 2 +D 7 +L 2 +D 4 +R 2 +U 6 +D 4 +R 5 +U 6 +R 3 +L 3 +U 2 +R 3 +U 1 +R 7 +U 2 +R 2 +D 7 +R 1 +U 5 +D 1 +L 5 +U 5 +R 2 +D 5 +R 4 +U 5 +L 3 +D 4 +L 6 +R 7 +L 2 +D 3 +L 2 +D 6 +U 6 +L 1 +D 7 +U 6 +L 7 +R 5 +L 1 +U 7 +R 1 +L 4 +R 4 +L 5 +U 7 +D 4 +R 7 +L 5 +U 7 +L 6 +U 3 +D 5 +R 5 +U 7 +R 5 +L 3 +U 6 +R 2 +U 3 +R 3 +U 6 +L 5 +D 6 +L 4 +D 5 +R 1 +L 3 +U 6 +R 6 +U 6 +L 1 +D 2 +L 5 +D 1 +L 6 +U 5 +D 5 +R 5 +D 6 +L 4 +U 5 +R 2 +U 4 +D 7 +L 1 +U 1 +D 1 +L 1 +D 4 +U 1 +L 6 +U 1 +R 5 +D 1 +U 1 +R 1 +U 5 +R 4 +U 5 +L 2 +U 6 +L 7 +R 2 +U 4 +R 5 +L 1 +R 8 +L 2 +D 7 +R 7 +D 2 +L 2 +R 2 +D 2 +U 7 +D 7 +R 4 +U 1 +R 2 +L 6 +U 1 +L 3 +U 2 +D 7 +R 6 +L 5 +D 1 +L 3 +U 6 +D 2 +U 2 +R 4 +D 1 +L 7 +U 3 +D 8 +U 4 +D 8 +L 8 +U 6 +L 3 +U 4 +R 4 +U 8 +D 1 +R 7 +U 5 +L 8 +U 4 +L 4 +D 7 +U 8 +L 2 +D 8 +L 1 +R 1 +L 1 +R 8 +L 8 +R 5 +L 1 +R 4 +D 3 +R 2 +U 8 +L 6 +R 4 +L 3 +R 8 +L 4 +D 5 +R 3 +U 2 +D 8 +U 4 +R 6 +D 4 +R 3 +L 7 +D 8 +L 2 +U 6 +D 7 +R 3 +L 5 +R 4 +D 3 +L 4 +R 8 +L 7 +D 8 +R 3 +U 3 +L 3 +R 6 +L 1 +U 3 +L 1 +U 4 +R 8 +L 8 +R 2 +D 3 +L 2 +R 1 +D 2 +R 6 +U 3 +D 1 +U 3 +R 1 +U 2 +R 2 +L 2 +D 6 +U 7 +L 8 +D 6 +U 2 +R 3 +L 6 +U 9 +D 6 +U 1 +D 3 +U 4 +R 3 +L 9 +D 6 +U 9 +D 1 +L 5 +U 5 +D 6 +U 4 +L 8 +U 8 +D 3 +L 3 +U 9 +R 5 +L 7 +D 1 +R 9 +U 8 +D 1 +R 1 +U 9 +D 4 +R 6 +U 8 +R 6 +U 3 +D 2 +U 8 +L 8 +U 9 +D 4 +L 3 +U 4 +D 3 +L 9 +R 7 +L 9 +R 3 +L 5 +D 7 +L 8 +U 9 +L 7 +D 1 +L 6 +U 7 +L 6 +D 8 +U 9 +L 7 +R 7 +D 1 +R 6 +D 4 +U 7 +R 7 +L 8 +D 4 +R 1 +L 7 +D 2 +U 3 +D 1 +R 7 +D 7 +R 7 +L 6 +D 9 +U 7 +D 5 +R 7 +L 1 +R 9 +U 1 +L 2 +U 5 +R 4 +D 7 +R 2 +D 5 +U 4 +D 3 +R 9 +U 2 +D 9 +U 1 +R 9 +U 9 +D 1 +L 7 +U 6 +D 6 +U 9 +L 5 +U 2 +D 6 +L 4 +D 3 +U 1 +R 2 +L 1 +R 1 +D 1 +R 1 +U 1 +R 4 +L 7 +R 2 +D 1 +U 3 +D 3 +R 10 +L 7 +R 7 +D 2 +L 6 +R 9 +U 9 +D 8 +U 9 +R 2 +U 6 +D 9 +U 1 +L 2 +R 10 +L 9 +R 10 +L 6 +R 4 +D 4 +R 4 +U 4 +D 4 +L 5 +R 8 +D 4 +L 7 +D 6 +L 8 +R 9 +L 8 +D 7 +R 2 +U 2 +D 5 +L 4 +R 8 +D 7 +R 6 +D 7 +L 5 +U 7 +R 1 +D 7 +R 9 +D 5 +U 3 +L 8 +D 7 +U 4 +D 4 +R 10 +U 7 +D 4 +U 2 +R 7 +L 4 +U 2 +D 9 +L 5 +R 2 +U 10 +L 9 +R 10 +L 1 +D 5 +R 10 +L 5 +R 5 +D 5 +R 10 +L 4 +U 9 +D 7 +R 10 +L 6 +U 3 +D 5 +U 6 +L 6 +U 10 +L 1 +U 10 +D 4 +L 7 +U 2 +L 10 +R 4 +L 7 +R 4 +D 10 +L 4 +U 10 +L 10 +D 9 +U 4 +R 8 +U 8 +R 5 +U 3 +D 10 +R 7 +L 10 +R 9 +L 1 +D 6 +L 11 +D 11 +R 3 +L 8 +U 6 +R 9 +D 5 +R 9 +D 4 +U 7 +D 4 +R 4 +U 10 +D 4 +R 2 +L 3 +U 5 +D 11 +R 8 +L 8 +U 7 +R 3 +D 8 +U 5 +R 10 +D 5 +R 2 +U 11 +D 10 +R 1 +U 9 +L 10 +R 2 +D 11 +R 6 +L 3 +R 10 +U 2 +D 6 +L 10 +U 5 +L 6 +U 1 +R 10 +U 8 +R 8 +D 4 +U 8 +L 11 +R 7 +L 2 +D 2 +R 5 +U 10 +L 3 +R 6 +L 8 +R 8 +U 8 +D 3 +L 7 +R 5 +L 6 +D 11 +L 6 +D 7 +U 6 +D 3 +U 9 +L 7 +R 8 +L 3 +R 10 +D 11 +L 11 +R 4 +D 6 +L 7 +D 9 +R 10 +U 11 +L 9 +D 8 +L 2 +U 1 +D 7 +U 10 +D 11 +R 5 +D 11 +L 6 +D 5 +R 6 +D 5 +R 11 +U 3 +D 6 +R 5 +U 7 +D 2 +R 6 +U 5 +D 9 +U 3 +R 7 +D 10 +U 5 +D 4 +R 6 +U 11 +L 10 +U 5 +L 6 +R 5 +U 7 +L 7 +R 5 +D 9 +U 11 +L 7 +U 8 +L 7 +U 3 +L 8 +R 10 +U 11 +R 8 +L 12 +U 8 +D 2 +L 2 +D 2 +U 10 +R 11 +U 2 +R 6 +U 3 +D 9 +U 5 +D 12 +L 11 +D 8 +U 12 +R 4 +U 1 +L 2 +R 10 +D 6 +L 10 +U 2 +R 4 +L 4 +D 8 +U 9 +L 4 +D 10 +U 5 +R 10 +L 2 +D 2 +U 2 +R 7 +D 8 +R 1 +U 11 +D 1 +L 7 +R 12 +D 12 +R 3 +L 11 +R 10 +U 11 +R 5 +D 6 +R 11 +D 2 +L 3 +D 12 +L 9 +R 6 +U 1 +D 2 +R 6 +D 5 +U 7 +R 2 +D 5 +U 3 +D 12 +R 12 +L 9 +R 9 +D 12 +R 8 +D 11 +L 7 +U 4 +D 11 +R 1 +U 9 +L 1 +D 2 +R 3 +U 1 +D 1 +R 2 +D 11 +U 12 +R 7 +D 1 +U 13 +L 5 +D 13 +L 10 +D 12 +L 7 +D 9 +L 7 +U 6 +L 1 +R 1 +L 10 +R 7 +L 6 +U 7 +R 10 +U 7 +R 11 +U 12 +L 2 +D 11 +L 5 +U 2 +D 8 +L 10 +D 13 +U 10 +L 9 +U 5 +D 11 +R 6 +L 9 +R 2 +L 6 +U 4 +R 7 +D 11 +L 3 +U 6 +D 13 +U 2 +R 13 +U 11 +L 12 +D 13 +L 1 +R 9 +D 10 +U 6 +L 13 +U 2 +L 12 +D 7 +R 1 +L 6 +D 1 +U 10 +D 5 +L 2 +U 12 +R 1 +U 9 +D 4 +U 10 +L 1 +R 1 +U 8 +R 2 +D 1 +L 6 +U 11 +D 2 +U 7 +D 11 +U 9 +D 6 +U 5 +D 13 +R 2 +U 8 +L 4 +U 4 +R 2 +U 1 +D 3 +L 1 +D 13 +R 9 +L 4 +D 5 +L 7 +U 2 +D 10 +L 6 +U 11 +D 1 +U 5 +R 4 +D 9 +R 12 +D 2 +U 9 +L 10 +U 6 +D 2 +L 8 +U 4 +L 4 +D 12 +U 3 +L 14 +D 12 +R 12 +L 7 +U 5 +L 2 +D 4 +L 13 +D 10 +L 8 +D 12 +R 13 +U 8 +D 14 +U 4 +R 11 +L 4 +R 13 +L 2 +U 1 +D 10 +L 12 +D 13 +L 4 +D 11 +R 14 +U 8 +L 11 +D 2 +U 8 +L 8 +D 3 +L 14 +U 7 +L 2 +R 2 +D 6 +U 1 +L 12 +R 12 +U 4 +L 1 +U 13 +R 12 +D 8 +U 10 +R 2 +L 7 +R 4 +D 4 +L 14 +U 2 +D 2 +U 11 +L 7 +R 12 +U 9 +L 11 +R 6 +D 6 +R 8 +L 1 +D 9 +L 7 +D 10 +R 6 +D 6 +L 5 +D 14 +L 12 +U 12 +R 4 +D 14 +L 10 +D 11 +L 3 +D 3 +U 9 +L 6 +D 10 +U 1 +L 10 +D 9 +R 8 +L 3 +U 7 +R 4 +U 9 +L 5 +R 7 +D 7 +L 5 +U 4 +R 4 +L 7 +R 8 +L 2 +R 5 +L 10 +R 2 +L 12 +D 12 +L 6 +R 4 +L 11 +D 13 +L 13 +R 10 +D 12 +U 5 +R 11 +L 15 +R 6 +U 9 +D 5 +U 6 +L 1 +D 1 +R 7 +D 5 +R 15 +U 11 +R 5 +D 15 +R 13 +U 8 +R 11 +U 7 +D 4 +L 6 +D 11 +U 1 +L 2 +R 11 +L 12 +D 5 +R 3 +L 14 +R 15 +L 14 +U 13 +D 9 +L 3 +D 4 +U 9 +L 3 +R 14 +U 3 +R 15 +L 14 +R 4 +U 15 +L 1 +D 11 +L 13 +D 14 +L 1 +D 1 +U 13 +D 7 +U 13 +D 15 +U 15 +L 6 +D 7 +R 15 +L 10 +U 6 +R 7 +L 13 +U 3 +D 9 +L 3 +D 10 +R 14 +D 15 +L 6 +D 4 +U 11 +L 11 +D 6 +U 8 +D 15 +R 5 +L 9 +D 15 +U 15 +R 9 +D 11 +U 7 +L 9 +U 8 +D 2 +L 4 +D 11 +U 12 +R 11 +U 5 +L 12 +U 5 +R 14 +L 10 +R 6 +D 3 +L 13 +U 6 +R 10 +D 10 +U 9 +D 3 +R 7 +L 13 +R 15 +U 6 +L 13 +U 11 +D 9 +L 7 +R 8 +U 6 +R 12 +U 2 +L 8 +U 10 +D 11 +U 14 +R 3 +L 15 +U 9 +L 2 +U 2 +D 11 +L 11 +R 3 +D 14 +U 3 +L 1 +U 2 +D 12 +L 5 +R 5 +D 10 +L 16 +R 4 +U 3 +L 6 +R 9 +L 7 +R 2 +U 15 +R 6 +L 12 +D 16 +L 16 +D 15 +U 12 +L 6 +D 9 +U 8 +L 10 +D 11 +U 4 +D 12 +U 7 +D 14 +U 1 +D 10 +R 10 +D 14 +L 5 +D 6 +R 8 +L 16 +U 7 +L 12 +R 13 +L 11 +D 12 +R 5 +D 11 +L 5 +R 4 +D 15 +L 13 +D 10 +R 2 +L 16 +D 14 +R 15 +D 11 +U 2 +D 12 +L 11 +D 1 +R 5 +D 6 +U 13 +L 10 +R 1 +U 10 +D 12 +L 10 +D 10 +R 11 +L 10 +D 11 +L 3 +R 11 +D 12 +L 6 +U 2 +L 10 +D 9 +L 11 +U 12 +D 14 +L 6 +U 16 +D 2 +L 2 +D 14 +U 7 +R 12 +D 14 +L 4 +U 3 +R 16 +D 2 +L 5 +R 10 +L 1 +R 11 +L 14 +D 3 +L 17 +D 4 +U 1 +R 8 +D 8 +L 5 +U 1 +L 13 +D 15 +U 17 +L 1 +D 14 +U 4 +R 1 +U 2 +D 14 +R 10 +U 14 +D 17 +R 10 +U 13 +D 12 +U 8 +L 11 +U 17 +R 12 +U 6 +D 8 +R 10 +U 16 +D 4 +R 3 +D 3 +U 4 +L 3 +U 5 +R 16 +L 5 +R 16 +D 17 +R 12 +L 11 +R 13 +U 12 +L 8 +R 5 +D 6 +U 16 +L 16 +D 2 +L 11 +D 1 +R 1 +D 14 +R 15 +L 6 +U 14 +R 12 +D 11 +L 9 +U 6 +L 11 +D 15 +U 17 +L 1 +U 3 +L 6 +U 5 +R 16 +L 14 +R 9 +L 12 +D 14 +U 13 +L 3 +U 13 +D 7 +R 2 +U 7 +D 5 +L 17 +D 6 +L 16 +R 5 +D 4 +R 3 +U 11 +D 3 +U 9 +D 10 +U 2 +L 6 +D 6 +R 15 +D 17 +R 1 +L 15 +D 2 +U 5 +R 2 +D 6 +L 8 +R 5 +L 2 +D 17 +U 9 +D 9 +L 7 +R 12 +L 12 +R 18 +L 10 +R 9 +D 6 +R 9 +U 15 +L 17 +D 18 +R 1 +L 15 +D 4 +R 6 +U 3 +R 6 +U 3 +D 1 +U 9 +D 8 +R 3 +D 6 +U 3 +R 8 +L 8 +R 10 +U 7 +D 16 +U 17 +R 11 +U 8 +D 1 +U 8 +L 4 +R 12 +D 10 +U 7 +D 18 +U 7 +D 12 +L 18 +U 9 +R 2 +U 5 +D 14 +R 13 +D 15 +U 17 +D 16 +L 4 +D 10 +L 2 +U 7 +L 7 +D 13 +R 13 +U 12 +R 16 +U 17 +R 3 +U 12 +R 6 +D 12 +U 11 +L 6 +U 15 +L 12 +R 1 +D 6 +L 16 +R 1 +D 7 +R 17 +L 15 +D 15 +U 9 +R 18 +D 13 +R 14 +D 1 +R 1 +D 16 +L 18 +R 1 +U 14 +L 8 +D 14 +R 15 +D 2 +U 10 +D 17 +U 3 +D 9 +R 7 +D 17 +U 3 +D 15 +L 17 +D 17 +R 1 +D 10 +L 9 +D 14 +R 5 +U 14 +R 14 +D 12 +R 18 +U 4 +D 2 +U 17 +D 12 +L 4 +U 9 +L 9 +U 17 +R 4 +U 17 +R 8 +D 10 +R 3 +D 9 +U 17 +L 5 +R 16 +U 9 +L 5 +D 15 +U 2 +D 7 +L 15 +U 1 +L 16 +R 8 +L 13 +R 3 +D 8 +R 1 +D 8 +L 10 +U 16 +R 16 +L 2 +U 3 +D 9 +U 12 +D 1 +L 10 +D 15 +U 7 +R 3 +D 15 +U 4 +L 6 +R 14 +U 13 +R 16 +U 2 +R 9 +U 15 +D 8 +L 8 +R 17 +D 3 +L 17 +D 13 +U 8 +D 11 +R 13 +L 3 +D 2 +U 14 +R 1 +U 10 +R 11 +D 16 +L 10 +R 17 +U 7 +L 13 +R 3 +L 18 +R 5 +U 7 +L 12 +D 4 +U 5 +L 17 +R 18 +L 4 +R 19 +L 12 +U 17 +R 2 +L 11 +R 9 +D 16 +R 19 +L 18 +U 11 +D 4 +R 13 +L 18 +U 13 +R 19 +D 3 +R 10 +L 3 +R 5 +D 2 +R 2 +L 18 +D 15 +R 19 +L 5 +D 4 +U 5 +R 12 +D 15 +L 13 +R 16 +U 16 +L 6 +U 12 +L 8 diff --git a/Advent-of-Code-2022/aoc-9/main.c b/Advent-of-Code-2022/aoc-9/main.c new file mode 100644 index 0000000..00945eb --- /dev/null +++ b/Advent-of-Code-2022/aoc-9/main.c @@ -0,0 +1,113 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#if 0 + #define KNOTS 2 +#else + #define KNOTS 10 +#endif + +#if 0 + #define FILENAME "sample.txt" +#else + #define FILENAME "input.txt" +#endif + +#define SIDE 1000 +#define OFFSET (SIDE/2) + +typedef enum { + NONE = 0, + NORTH = 1, + SOUTH = -1, + EAST = 1, + WEST = -1 +} direction; + +int board[SIDE][SIDE] = {0}; +int rope[KNOTS][2] = {0}; +direction rope_dir[KNOTS][2] = {0}; + +void move(int k) +{ + rope[k][0] += rope_dir[k][0]; + rope[k][1] += rope_dir[k][1]; +} + +void parse_dir(char d) +{ + rope_dir[0][0] = NONE; + rope_dir[0][1] = NONE; + + switch(d) { + case 'U': + rope_dir[0][1] = NORTH; + return; + case 'D': + rope_dir[0][1] = SOUTH; + return; + case 'R': + rope_dir[0][0] = EAST; + return; + case 'L': + rope_dir[0][0] = WEST; + return; + } +} + +void parse() +{ + FILE *fp = fopen(FILENAME, "r"); + if(!fp) { + fprintf(stderr, "ERROR: Could not open file: %s\n", FILENAME); + exit(1); + } + + char line[256]; + while(fgets(line, sizeof(line), fp)) + { + parse_dir(strtok(line, " ")[0]); + int n = atoi(strtok(NULL, " ")); + + for(int i = 0; i < n; i++) + { + move(0); + for(int j = 1; j < KNOTS; j++) + { + int hor = rope[j-1][0] - rope[j][0]; + if(hor > 0) rope_dir[j][0] = EAST; + else if(hor < 0) rope_dir[j][0] = WEST; + else rope_dir[j][0] = NONE; + + int vert = rope[j-1][1] - rope[j][1]; + if(vert > 0) rope_dir[j][1] = NORTH; + else if(vert < 0) rope_dir[j][1] = SOUTH; + else rope_dir[j][1] = NONE; + + if(abs(vert) > 1 || abs(hor) > 1) + move(j); + } + + board[rope[KNOTS-1][0] + OFFSET][rope[KNOTS-1][1] + OFFSET]++; + } + } + + fclose(fp); +} + +int sum() +{ + int sum = 0; + for(int i = 0; i < SIDE; i++) + for(int j = 0; j < SIDE; j++) + if(board[j][i] > 0) sum++; + return sum; +} + +int main(void) +{ + parse(); + printf("%d\n", sum()); + return 0; +} diff --git a/Advent-of-Code-2022/aoc-9/sample.txt b/Advent-of-Code-2022/aoc-9/sample.txt new file mode 100644 index 0000000..60bd43b --- /dev/null +++ b/Advent-of-Code-2022/aoc-9/sample.txt @@ -0,0 +1,8 @@ +R 5 +U 8 +L 8 +D 3 +R 17 +D 10 +L 25 +U 20 |