From 96e5cf31fa6c9d8b3ed2832fad6eb0fdf9cb103e Mon Sep 17 00:00:00 2001 From: Jonathan Hodgson Date: Fri, 3 Dec 2021 11:04:53 +0000 Subject: [PATCH] Day 2 --- day2/Makefile | 10 + day2/example.txt | 6 + day2/realinput.txt | 1000 ++++++++++++++++++++++++++++++++++++++++ day2/solution-part1.c | 41 ++ day2/solution-part1.sh | 20 + day2/solution-part2.c | 43 ++ day2/solution-part2.sh | 26 ++ 7 files changed, 1146 insertions(+) create mode 100644 day2/Makefile create mode 100644 day2/example.txt create mode 100644 day2/realinput.txt create mode 100644 day2/solution-part1.c create mode 100755 day2/solution-part1.sh create mode 100644 day2/solution-part2.c create mode 100755 day2/solution-part2.sh diff --git a/day2/Makefile b/day2/Makefile new file mode 100644 index 0000000..da2e708 --- /dev/null +++ b/day2/Makefile @@ -0,0 +1,10 @@ +solution-part%: solution-part%.c + gcc $< -o $@ + +test-%: solution-% example.txt + $< example.txt + +run-%: solution-% realinput.txt + $< realinput.txt + +.PHONY: $(patsubst %,run-%, 1 2) $(patsubst %,test-%, 1 2) diff --git a/day2/example.txt b/day2/example.txt new file mode 100644 index 0000000..b7172ac --- /dev/null +++ b/day2/example.txt @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 diff --git a/day2/realinput.txt b/day2/realinput.txt new file mode 100644 index 0000000..171b7da --- /dev/null +++ b/day2/realinput.txt @@ -0,0 +1,1000 @@ +forward 6 +down 8 +down 5 +down 9 +forward 2 +down 5 +down 5 +forward 1 +forward 7 +down 8 +up 2 +down 4 +up 8 +down 8 +forward 3 +forward 4 +down 1 +forward 5 +up 7 +down 7 +down 8 +forward 2 +up 3 +forward 1 +forward 6 +forward 9 +forward 7 +forward 8 +forward 2 +forward 3 +up 2 +up 8 +down 1 +forward 7 +down 7 +down 2 +forward 6 +down 1 +forward 5 +down 3 +forward 6 +down 7 +up 1 +up 3 +forward 7 +forward 6 +forward 8 +down 4 +down 2 +up 5 +down 2 +forward 2 +up 5 +forward 6 +down 3 +down 1 +down 5 +forward 6 +up 6 +down 7 +down 8 +down 2 +forward 3 +down 5 +down 4 +forward 7 +forward 9 +up 9 +up 8 +up 4 +forward 8 +forward 5 +down 4 +up 2 +forward 9 +up 5 +down 5 +up 9 +forward 2 +forward 3 +down 6 +down 8 +forward 8 +up 5 +down 5 +forward 7 +forward 6 +forward 8 +up 3 +forward 3 +forward 1 +up 8 +down 8 +down 2 +down 4 +up 7 +up 2 +up 9 +up 4 +forward 6 +down 8 +down 1 +forward 6 +forward 6 +down 4 +down 2 +up 7 +down 9 +down 9 +up 2 +up 7 +down 4 +down 2 +forward 1 +down 1 +up 5 +up 5 +forward 9 +up 3 +down 7 +forward 7 +down 4 +down 8 +up 1 +down 4 +down 7 +forward 5 +up 9 +forward 5 +forward 1 +forward 8 +forward 6 +forward 5 +forward 1 +down 4 +down 6 +forward 5 +forward 2 +forward 3 +down 1 +up 2 +up 9 +forward 4 +up 8 +down 7 +down 8 +up 7 +down 2 +forward 7 +up 1 +forward 5 +forward 1 +forward 8 +forward 1 +up 8 +down 6 +down 7 +forward 2 +down 8 +down 8 +forward 8 +up 8 +down 6 +down 7 +down 4 +down 7 +forward 6 +up 3 +forward 3 +down 2 +down 8 +down 3 +down 9 +forward 9 +forward 7 +down 6 +down 4 +forward 6 +down 2 +down 7 +up 7 +up 8 +forward 2 +forward 8 +down 3 +up 2 +forward 9 +down 2 +up 3 +down 1 +down 1 +down 4 +down 8 +up 2 +up 8 +forward 2 +forward 1 +up 1 +forward 7 +down 8 +down 1 +down 7 +up 3 +down 3 +forward 8 +forward 2 +forward 7 +down 2 +up 9 +up 3 +up 5 +down 4 +up 3 +forward 4 +up 5 +down 9 +down 9 +forward 2 +forward 2 +down 2 +down 8 +down 3 +down 5 +forward 6 +down 6 +up 5 +down 2 +down 4 +down 9 +down 3 +forward 7 +down 1 +forward 1 +down 4 +up 1 +down 9 +forward 5 +up 2 +down 3 +forward 8 +forward 9 +up 9 +down 2 +forward 8 +down 4 +down 5 +forward 6 +forward 5 +forward 4 +down 6 +down 9 +down 2 +forward 9 +down 4 +up 8 +up 9 +up 2 +up 5 +up 5 +forward 9 +up 1 +forward 6 +forward 7 +forward 8 +forward 9 +up 2 +forward 3 +forward 4 +forward 6 +forward 9 +up 5 +up 5 +down 3 +forward 1 +forward 3 +forward 2 +forward 3 +forward 6 +forward 7 +down 4 +down 2 +down 1 +forward 2 +down 5 +forward 3 +forward 6 +down 8 +down 9 +forward 4 +forward 6 +down 6 +down 6 +forward 3 +down 6 +down 8 +down 1 +forward 7 +forward 9 +down 2 +down 5 +forward 1 +forward 3 +down 2 +forward 1 +down 8 +down 1 +forward 4 +down 8 +forward 5 +forward 1 +down 7 +down 7 +forward 3 +forward 1 +forward 6 +forward 7 +forward 5 +up 1 +forward 2 +down 9 +forward 3 +up 1 +forward 2 +down 1 +down 6 +down 3 +forward 7 +down 5 +down 4 +down 1 +forward 9 +forward 9 +down 5 +forward 7 +forward 3 +forward 5 +down 1 +forward 6 +down 8 +up 2 +forward 6 +down 3 +forward 2 +forward 9 +forward 4 +down 1 +down 3 +forward 9 +forward 3 +forward 8 +forward 9 +up 3 +up 1 +forward 1 +forward 2 +down 8 +down 9 +down 2 +down 1 +down 3 +down 2 +forward 9 +forward 7 +down 5 +forward 1 +forward 6 +forward 3 +forward 9 +down 2 +forward 8 +down 5 +down 1 +forward 5 +forward 3 +down 6 +forward 6 +down 8 +forward 2 +up 5 +forward 1 +down 2 +down 6 +forward 9 +forward 7 +down 1 +down 3 +down 6 +up 3 +down 4 +forward 8 +forward 1 +forward 7 +down 2 +down 5 +down 9 +forward 6 +down 5 +forward 5 +up 1 +down 5 +forward 8 +up 9 +forward 2 +down 6 +forward 2 +forward 7 +up 2 +down 9 +down 7 +up 7 +down 6 +up 5 +forward 1 +down 8 +forward 8 +forward 1 +forward 7 +down 9 +down 6 +forward 3 +down 6 +down 1 +down 1 +down 1 +down 3 +down 7 +down 7 +down 3 +down 5 +forward 4 +down 4 +forward 7 +forward 5 +down 9 +down 9 +forward 7 +down 3 +down 9 +down 4 +forward 3 +down 7 +down 2 +forward 2 +down 6 +forward 9 +forward 9 +forward 5 +up 4 +down 7 +down 2 +up 9 +up 4 +forward 8 +forward 1 +down 8 +up 5 +down 4 +down 3 +forward 2 +down 7 +down 2 +down 1 +down 9 +forward 7 +forward 7 +up 8 +up 4 +down 3 +down 8 +forward 6 +forward 5 +forward 5 +forward 5 +down 3 +down 8 +forward 4 +forward 7 +forward 1 +up 3 +up 9 +down 6 +up 4 +down 7 +forward 8 +forward 4 +forward 3 +up 8 +up 3 +down 3 +forward 6 +down 2 +forward 7 +forward 4 +forward 8 +down 3 +down 9 +down 9 +down 2 +forward 8 +up 4 +down 3 +forward 8 +forward 5 +forward 7 +down 6 +up 9 +forward 3 +down 2 +forward 5 +forward 2 +down 7 +forward 6 +forward 2 +up 9 +down 1 +down 1 +forward 4 +up 1 +forward 9 +down 3 +down 4 +down 2 +forward 3 +forward 3 +forward 3 +up 7 +up 8 +down 5 +forward 1 +forward 7 +up 9 +up 3 +down 3 +down 8 +forward 6 +up 5 +up 5 +forward 4 +down 2 +down 8 +down 1 +forward 6 +down 3 +forward 3 +forward 6 +forward 1 +up 3 +up 1 +down 5 +down 2 +down 7 +down 1 +forward 9 +down 4 +down 8 +forward 9 +forward 7 +forward 8 +down 1 +down 2 +up 7 +down 5 +down 2 +down 1 +up 4 +up 8 +up 7 +down 4 +forward 3 +down 2 +down 2 +forward 5 +forward 4 +down 8 +up 4 +forward 4 +up 1 +down 3 +down 9 +down 9 +down 3 +up 8 +forward 1 +forward 6 +down 6 +down 2 +forward 8 +down 3 +forward 8 +forward 2 +forward 9 +up 3 +forward 6 +down 5 +forward 6 +forward 2 +up 7 +down 9 +forward 2 +up 2 +forward 7 +down 1 +down 5 +down 6 +forward 8 +down 6 +forward 4 +forward 1 +forward 3 +forward 4 +up 4 +forward 4 +down 4 +forward 2 +forward 5 +forward 2 +forward 5 +down 9 +up 2 +up 1 +down 2 +up 4 +up 5 +forward 2 +down 3 +down 9 +forward 3 +down 8 +down 9 +forward 5 +down 3 +forward 5 +down 3 +up 8 +forward 7 +forward 1 +down 2 +down 7 +forward 3 +down 8 +forward 9 +down 4 +down 1 +down 7 +down 4 +up 5 +forward 1 +down 4 +forward 1 +forward 8 +up 1 +up 5 +up 2 +up 2 +down 4 +down 7 +forward 2 +down 8 +up 8 +down 9 +down 3 +down 6 +down 3 +down 1 +forward 7 +up 8 +forward 5 +up 5 +down 8 +down 1 +down 8 +down 6 +down 5 +forward 2 +up 5 +down 6 +forward 9 +up 6 +down 5 +down 7 +up 9 +down 1 +forward 4 +up 6 +forward 2 +down 5 +down 5 +forward 2 +up 6 +forward 1 +down 8 +forward 4 +up 8 +down 3 +forward 8 +down 8 +forward 5 +down 6 +down 3 +forward 1 +down 4 +down 8 +up 1 +down 1 +down 2 +up 9 +forward 2 +forward 3 +down 7 +down 2 +forward 7 +up 8 +down 2 +down 8 +down 9 +up 1 +down 5 +down 5 +down 4 +down 8 +down 9 +up 5 +forward 2 +down 4 +down 3 +down 2 +forward 5 +forward 8 +down 8 +down 1 +forward 9 +down 5 +forward 5 +down 2 +up 3 +up 9 +down 1 +down 9 +forward 7 +up 7 +forward 3 +up 6 +forward 8 +down 2 +down 1 +down 7 +forward 5 +down 8 +down 4 +forward 7 +forward 4 +down 6 +forward 9 +down 3 +forward 2 +down 3 +down 1 +down 1 +up 1 +up 3 +down 6 +forward 3 +up 9 +down 4 +up 2 +down 3 +up 1 +down 8 +down 5 +forward 7 +forward 2 +forward 9 +down 8 +down 5 +down 6 +up 3 +forward 2 +up 8 +down 4 +forward 7 +down 8 +down 6 +down 4 +forward 7 +up 9 +down 4 +forward 2 +forward 5 +down 3 +up 6 +up 6 +down 2 +down 4 +forward 8 +forward 5 +forward 3 +forward 5 +down 5 +down 5 +down 6 +forward 3 +forward 7 +forward 1 +down 8 +down 5 +forward 7 +up 7 +down 9 +down 9 +down 9 +up 6 +down 2 +down 3 +forward 1 +up 7 +up 8 +forward 5 +down 1 +down 3 +down 3 +forward 5 +down 7 +down 1 +up 2 +down 2 +down 3 +forward 7 +down 9 +forward 6 +down 5 +forward 2 +down 5 +forward 6 +up 3 +down 8 +up 2 +forward 5 +forward 1 +forward 5 +forward 8 +forward 6 +forward 9 +forward 6 +up 6 +up 5 +down 8 +down 3 +down 5 +down 2 +forward 9 +forward 8 +down 1 +up 1 +up 6 +down 6 +forward 4 +down 3 +forward 6 +forward 1 +up 5 +down 6 +up 9 +down 7 +down 2 +down 9 +down 5 +forward 5 +up 2 +forward 8 +down 2 +down 8 +forward 6 +down 4 +forward 8 +down 7 +down 8 +down 1 +forward 3 +down 6 +down 9 +down 3 +forward 3 +down 8 +forward 8 +down 7 +forward 6 +forward 8 +down 8 +up 7 +down 1 +forward 2 +forward 3 +down 5 +up 8 +down 3 +down 4 +down 7 +forward 9 +forward 7 +forward 1 +down 3 +forward 9 +down 8 +forward 2 +down 2 +down 9 +down 4 +down 3 +up 6 +up 9 +down 3 +down 2 +forward 5 +down 3 +down 2 +down 8 +forward 6 +forward 5 +up 4 +forward 9 +forward 8 +forward 9 +down 2 +forward 2 +up 6 +forward 1 +down 5 +forward 2 +down 8 +up 2 +up 3 +down 3 +up 2 +up 1 +up 5 +forward 1 +forward 2 +down 8 +up 3 +down 9 +forward 7 +up 5 +down 4 +down 4 +up 3 +forward 2 +up 5 +down 4 +down 4 +up 5 +forward 8 +down 8 +down 6 +forward 7 +down 1 +down 3 +down 1 +forward 3 +down 5 +down 3 +forward 3 +up 2 +forward 2 +down 9 +up 8 +forward 8 +up 8 +forward 1 +forward 9 +forward 3 +down 8 +down 3 +forward 8 +forward 4 +down 2 +forward 2 +down 2 +down 5 +down 7 +down 5 +forward 8 +up 3 +forward 1 +down 1 +forward 3 +down 9 +forward 2 +forward 2 +forward 7 +down 7 +down 2 +forward 9 +up 5 +up 7 +forward 8 +forward 1 +down 7 +down 8 +down 3 +forward 6 diff --git a/day2/solution-part1.c b/day2/solution-part1.c new file mode 100644 index 0000000..ce5db5b --- /dev/null +++ b/day2/solution-part1.c @@ -0,0 +1,41 @@ +#include +#include + +int main( int argc, char *argv[] ){ + if( argc == 2 ) { + + unsigned int horizontal = 0; + unsigned int depth = 0; + + FILE *fp=fopen(argv[1], "r"); + while (!feof (fp)){ + char direction[7] = ""; + int amount = 0; + fscanf(fp, "%s %d\n", direction, &amount); + + + if ( strcmp(direction,"forward") == 0 ) + horizontal+=amount; + else if ( strcmp(direction,"down") == 0 ) + depth+=amount; + else if ( strcmp(direction,"up") == 0 ) + depth-=amount; + else + printf("Hopefully we don't get here\n"); + + + } + + printf("Horizontal: %d\n", horizontal); + printf("Depth: %d\n", depth); + printf("Product: %d\n", horizontal * depth); + fclose(fp); + + + + return 0; + } else { + printf("You need to provide a file\n"); + return 1; + } +} diff --git a/day2/solution-part1.sh b/day2/solution-part1.sh new file mode 100755 index 0000000..6abe26c --- /dev/null +++ b/day2/solution-part1.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +file="$1" + +horizontal=0 +depth=0 + +while read line; do + direction="$(echo "$line" | cut -d ' ' -f 1)" + amount="$(echo "$line" | cut -d ' ' -f 2)" + case "$direction" in + forward) horizontal=$((horizontal + amount)) ;; + down) depth="$((depth + amount))" ;; + up) depth="$((depth - amount))" ;; + esac +done < <(cat "$file") + +echo "Horizontal: $horizontal" +echo "Depth: $depth" +echo "Product: $(( depth * horizontal ))" diff --git a/day2/solution-part2.c b/day2/solution-part2.c new file mode 100644 index 0000000..436d843 --- /dev/null +++ b/day2/solution-part2.c @@ -0,0 +1,43 @@ +#include +#include + +int main( int argc, char *argv[] ){ + if( argc == 2 ) { + + unsigned int horizontal = 0; + unsigned int depth = 0; + unsigned int aim = 0; + + FILE *fp=fopen(argv[1], "r"); + while (!feof (fp)){ + char direction[7] = ""; + int amount = 0; + fscanf(fp, "%s %d\n", direction, &amount); + + + if ( strcmp(direction,"forward") == 0 ){ + horizontal+=amount; + depth+=(aim*amount); + } else if ( strcmp(direction,"down") == 0 ) + aim+=amount; + else if ( strcmp(direction,"up") == 0 ) + aim-=amount; + else + printf("Hopefully we don't get here\n"); + + + } + + printf("Horizontal: %d\n", horizontal); + printf("Depth: %d\n", depth); + printf("Product: %d\n", horizontal * depth); + fclose(fp); + + + + return 0; + } else { + printf("You need to provide a file\n"); + return 1; + } +} diff --git a/day2/solution-part2.sh b/day2/solution-part2.sh new file mode 100755 index 0000000..05cd9d1 --- /dev/null +++ b/day2/solution-part2.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +file="$1" + +horizontal=0 +depth=0 +aim=0 + +while read line; do + #direction="$(echo "$line" | cut -d ' ' -f 1)" + direction="${line%% *}" + #amount="$(echo "$line" | cut -d ' ' -f 2)" + amount="${line##* }" + case "$direction" in + forward) + horizontal=$((horizontal + amount)) + depth="$((depth + (aim * amount) ))" + ;; + down) aim="$((aim + amount))" ;; + up) aim="$((aim - amount))" ;; + esac +done < <(cat "$file") + +echo "Horizontal: $horizontal" +echo "Depth: $depth" +echo "Product: $(( depth * horizontal ))"