From 824eaed0232ca337ff67f0cf0269f474e0471e2f Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Thu, 2 Dec 2021 17:49:29 +0100 Subject: Day2 part1 --- day2/__init__.py | 44 +++ day2/example.txt | 6 + day2/input.txt | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1050 insertions(+) create mode 100644 day2/__init__.py create mode 100644 day2/example.txt create mode 100644 day2/input.txt diff --git a/day2/__init__.py b/day2/__init__.py new file mode 100644 index 0000000..e16787f --- /dev/null +++ b/day2/__init__.py @@ -0,0 +1,44 @@ +from dataclasses import dataclass +from typing import Iterator, List + +from aoc import BaseAssignment + +@dataclass +class Instruction: + direction: str + steps: int + +class Assignment(BaseAssignment): + def parse_item(self, item: str) -> Instruction: + direction, steps = item.split(' ') + return Instruction(direction=direction, steps=int(steps)) + + def read_input(self, example = False) -> List[Instruction]: + return list(super().read_input(example)) + +class AssignmentOne(Assignment): + depth = 0 + horizontal = 0 + + def run(self, input: List[Instruction]) -> int: + for instruction in input: + match instruction.direction: + case 'forward': + self.horizontal += instruction.steps + case 'up': + self.depth -= instruction.steps + case 'down': + self.depth += instruction.steps + + return self.depth * self.horizontal + + + +class AssignmentTwo(Assignment): + def run(self, input: List) -> int: + new_input = [ + input[i - 2] + input[i - 1] + input[i] + for i in range(2, len(input)) + ] + + return AssignmentOne(path='').run(new_input) diff --git a/day2/example.txt b/day2/example.txt new file mode 100644 index 0000000..0ed302d --- /dev/null +++ b/day2/example.txt @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 \ No newline at end of file diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..2725075 --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,1000 @@ +forward 8 +down 9 +up 1 +forward 2 +down 6 +forward 6 +down 5 +down 4 +down 2 +forward 3 +forward 8 +down 6 +up 3 +up 3 +down 5 +up 8 +forward 8 +up 6 +forward 4 +down 8 +up 2 +up 6 +forward 7 +up 6 +down 6 +down 1 +forward 8 +up 7 +forward 9 +forward 5 +forward 8 +forward 5 +down 3 +forward 5 +up 1 +forward 6 +forward 3 +forward 3 +down 2 +forward 4 +down 3 +forward 6 +forward 2 +forward 1 +down 2 +forward 1 +down 1 +up 8 +down 4 +forward 3 +up 3 +down 5 +down 2 +forward 7 +forward 1 +down 9 +up 1 +down 1 +forward 2 +forward 1 +forward 1 +forward 7 +up 5 +forward 2 +down 6 +down 7 +down 3 +down 1 +forward 4 +forward 5 +down 3 +forward 4 +down 5 +forward 3 +forward 4 +forward 2 +up 8 +down 7 +up 3 +forward 2 +down 5 +forward 9 +forward 5 +up 1 +down 5 +down 6 +forward 2 +forward 5 +down 6 +down 1 +up 8 +up 9 +down 7 +down 5 +forward 2 +forward 7 +forward 7 +up 6 +down 4 +up 6 +forward 2 +down 4 +down 3 +down 4 +forward 2 +down 2 +down 1 +down 4 +up 4 +forward 7 +forward 6 +forward 2 +forward 5 +forward 1 +forward 7 +forward 2 +down 3 +forward 7 +forward 2 +up 4 +up 5 +down 1 +down 2 +down 3 +down 7 +up 8 +forward 4 +down 5 +down 4 +forward 3 +down 6 +forward 5 +up 5 +forward 6 +down 1 +down 7 +forward 1 +forward 6 +up 9 +forward 2 +down 1 +forward 5 +forward 2 +forward 6 +forward 8 +forward 6 +down 8 +forward 3 +down 9 +up 8 +forward 9 +down 7 +down 6 +down 1 +up 5 +down 6 +forward 7 +up 9 +forward 8 +forward 3 +forward 3 +forward 2 +down 6 +up 1 +up 5 +forward 7 +down 2 +down 5 +down 1 +down 4 +forward 8 +forward 2 +forward 8 +up 5 +forward 7 +up 7 +forward 6 +forward 9 +up 1 +down 4 +forward 8 +forward 4 +down 9 +up 6 +down 8 +up 9 +down 2 +down 2 +down 9 +up 3 +down 7 +down 2 +up 9 +forward 9 +down 5 +forward 2 +forward 1 +forward 2 +down 4 +forward 4 +down 2 +forward 8 +up 3 +forward 6 +up 7 +up 9 +forward 4 +up 9 +down 5 +forward 5 +up 6 +down 2 +down 4 +forward 1 +down 2 +forward 3 +down 7 +down 1 +down 5 +forward 5 +up 5 +forward 3 +down 5 +forward 7 +down 3 +down 2 +up 9 +down 4 +forward 4 +down 4 +forward 1 +up 9 +down 8 +forward 2 +down 7 +forward 8 +down 5 +up 2 +down 9 +down 2 +up 4 +up 2 +forward 8 +forward 3 +forward 4 +down 1 +down 3 +forward 3 +down 8 +forward 7 +down 7 +forward 5 +forward 5 +up 3 +down 6 +forward 1 +down 4 +forward 2 +down 4 +up 2 +down 3 +forward 4 +forward 6 +up 7 +down 3 +forward 7 +forward 1 +down 1 +up 3 +down 7 +up 3 +up 8 +up 7 +up 7 +forward 7 +down 2 +forward 6 +forward 7 +up 3 +down 3 +up 9 +down 6 +down 7 +down 7 +up 5 +forward 6 +forward 2 +up 9 +forward 2 +down 3 +down 3 +forward 5 +forward 3 +forward 6 +forward 6 +down 7 +forward 2 +down 3 +up 4 +forward 1 +forward 5 +down 5 +up 1 +down 9 +forward 3 +up 6 +forward 5 +down 4 +forward 9 +up 5 +forward 7 +up 7 +forward 9 +forward 2 +forward 6 +forward 3 +forward 3 +up 7 +down 1 +down 1 +forward 1 +down 8 +down 2 +forward 4 +up 7 +forward 7 +down 5 +down 7 +up 6 +down 4 +forward 4 +forward 4 +up 7 +down 9 +forward 6 +forward 1 +down 7 +forward 5 +forward 2 +forward 1 +up 7 +down 9 +forward 2 +down 7 +up 8 +forward 1 +forward 4 +up 4 +forward 1 +down 9 +down 5 +down 8 +forward 8 +forward 8 +down 8 +down 3 +down 5 +down 6 +up 9 +forward 1 +down 1 +forward 1 +forward 1 +down 6 +forward 3 +down 1 +forward 9 +forward 3 +up 7 +down 9 +forward 5 +down 4 +up 9 +down 2 +down 5 +down 6 +forward 1 +up 2 +forward 9 +up 7 +forward 2 +forward 8 +down 5 +down 6 +down 8 +forward 4 +down 4 +forward 9 +forward 3 +forward 6 +forward 9 +up 2 +down 8 +up 2 +up 6 +up 5 +down 5 +down 7 +forward 1 +up 6 +forward 9 +up 4 +forward 4 +up 2 +forward 3 +down 8 +down 1 +up 5 +forward 5 +down 3 +down 4 +down 1 +forward 3 +up 2 +forward 3 +down 1 +forward 8 +up 3 +forward 4 +down 3 +forward 6 +down 9 +down 7 +forward 3 +forward 5 +forward 1 +forward 3 +up 8 +forward 2 +forward 2 +forward 7 +up 9 +forward 4 +down 1 +down 6 +forward 8 +forward 5 +up 4 +up 5 +up 9 +forward 9 +up 8 +down 3 +up 5 +forward 1 +forward 5 +up 9 +forward 8 +forward 4 +forward 3 +forward 1 +forward 6 +down 2 +up 8 +down 7 +down 1 +down 5 +up 1 +forward 9 +down 2 +down 4 +forward 3 +forward 1 +down 7 +up 9 +up 7 +down 2 +down 4 +down 1 +forward 9 +up 4 +down 9 +down 9 +down 4 +down 9 +forward 1 +down 2 +forward 8 +up 4 +up 3 +forward 4 +down 5 +forward 8 +forward 2 +forward 4 +up 3 +up 2 +up 3 +forward 4 +forward 4 +forward 6 +down 7 +down 8 +up 3 +down 9 +down 5 +up 7 +up 1 +down 3 +down 4 +up 5 +up 9 +down 2 +up 8 +forward 9 +down 3 +forward 4 +down 5 +down 1 +forward 9 +forward 2 +up 3 +down 9 +down 8 +up 7 +forward 2 +down 9 +up 8 +up 2 +down 3 +forward 3 +forward 3 +forward 3 +forward 4 +down 7 +up 2 +forward 3 +forward 7 +forward 5 +forward 7 +down 6 +down 9 +down 6 +down 8 +up 4 +down 4 +down 2 +up 1 +down 3 +forward 7 +forward 5 +down 7 +forward 1 +up 7 +forward 9 +down 8 +down 1 +down 3 +down 1 +up 8 +forward 7 +up 5 +forward 6 +down 1 +down 8 +up 1 +up 9 +forward 7 +down 9 +forward 3 +forward 8 +forward 7 +down 3 +down 5 +up 3 +up 7 +up 3 +up 6 +up 8 +down 3 +forward 7 +down 7 +forward 9 +up 9 +down 1 +down 3 +down 8 +down 6 +forward 1 +up 6 +down 1 +up 4 +down 2 +forward 9 +up 8 +up 2 +down 6 +down 1 +forward 2 +forward 6 +forward 1 +forward 2 +up 6 +down 7 +down 8 +forward 9 +up 2 +down 6 +down 8 +down 5 +up 6 +forward 6 +down 5 +forward 4 +forward 2 +down 1 +down 4 +up 5 +down 5 +down 1 +down 9 +down 1 +down 1 +forward 1 +forward 5 +up 4 +down 5 +down 3 +down 2 +down 7 +forward 5 +forward 6 +forward 2 +up 9 +up 3 +forward 6 +down 4 +forward 8 +forward 4 +forward 9 +down 6 +down 9 +down 1 +forward 6 +down 8 +down 7 +forward 5 +down 4 +forward 5 +forward 5 +up 3 +down 1 +down 4 +forward 1 +forward 7 +down 5 +down 4 +forward 7 +forward 3 +forward 4 +down 4 +forward 8 +up 2 +up 6 +down 9 +up 1 +down 8 +up 2 +up 6 +forward 5 +forward 7 +up 4 +down 4 +down 8 +forward 5 +up 4 +down 6 +forward 9 +up 4 +forward 7 +up 7 +down 3 +down 2 +down 2 +down 6 +down 4 +forward 4 +down 3 +down 4 +down 4 +down 8 +up 2 +down 3 +forward 5 +forward 5 +up 5 +forward 1 +down 7 +forward 5 +forward 7 +forward 9 +forward 4 +down 1 +down 1 +up 5 +down 6 +down 8 +down 9 +down 9 +forward 7 +down 6 +forward 3 +down 7 +up 3 +forward 5 +forward 5 +up 6 +down 5 +down 8 +down 5 +down 1 +down 7 +forward 8 +up 9 +forward 2 +up 1 +down 9 +down 2 +forward 7 +up 1 +down 5 +forward 3 +up 6 +forward 9 +up 9 +down 3 +forward 2 +up 6 +down 6 +up 8 +down 3 +up 5 +forward 9 +up 3 +forward 4 +forward 6 +down 3 +forward 4 +down 5 +down 7 +down 7 +forward 9 +forward 6 +down 9 +up 1 +forward 2 +down 8 +down 7 +up 7 +forward 6 +up 5 +down 6 +forward 6 +down 3 +forward 2 +down 7 +forward 2 +down 3 +down 8 +forward 4 +up 8 +forward 7 +down 4 +forward 3 +down 3 +forward 6 +down 7 +down 7 +forward 8 +forward 9 +down 8 +down 4 +forward 5 +down 1 +forward 9 +down 7 +up 3 +down 6 +down 4 +down 9 +forward 3 +down 1 +forward 1 +down 5 +forward 1 +forward 9 +down 9 +forward 5 +down 1 +up 9 +down 3 +down 2 +up 6 +forward 4 +down 6 +down 2 +forward 5 +up 8 +down 7 +up 6 +down 1 +forward 3 +forward 4 +down 9 +down 2 +forward 5 +forward 8 +up 2 +forward 9 +up 5 +down 1 +forward 1 +forward 6 +forward 9 +forward 2 +down 8 +forward 1 +up 8 +forward 1 +forward 8 +up 5 +forward 3 +down 4 +up 8 +down 6 +up 1 +forward 2 +forward 4 +up 6 +forward 1 +forward 4 +up 6 +down 8 +up 7 +forward 5 +up 7 +down 9 +down 2 +up 5 +forward 2 +down 7 +forward 1 +forward 1 +forward 3 +down 6 +forward 7 +up 2 +up 1 +forward 1 +up 5 +down 1 +forward 7 +up 9 +forward 7 +down 6 +up 4 +down 5 +up 2 +down 4 +up 3 +down 6 +down 7 +down 7 +up 1 +forward 4 +forward 1 +up 2 +down 7 +down 5 +forward 7 +forward 5 +forward 2 +down 4 +down 6 +down 8 +forward 9 +forward 8 +up 9 +forward 6 +down 6 +down 6 +down 8 +up 5 +forward 6 +down 6 +forward 5 +down 4 +down 6 +down 2 +up 3 +forward 1 +forward 8 +down 2 +forward 9 +forward 7 +forward 8 +forward 1 +down 8 +forward 1 +down 1 +forward 6 +forward 4 +forward 5 +up 9 +up 1 +down 7 +up 8 +down 5 +down 2 +forward 9 +up 2 +forward 6 +down 7 +down 7 +down 2 +down 6 +down 7 +forward 9 +up 2 +down 6 +forward 8 +forward 1 +down 3 +down 2 +forward 3 +forward 7 +down 3 +down 1 +down 4 +down 9 +forward 1 +down 6 +down 8 +down 4 +down 5 +down 5 +up 9 +forward 7 +down 9 +up 3 +up 5 +up 1 +forward 2 +forward 9 +down 3 +forward 1 +up 3 +forward 6 +up 2 +forward 7 +forward 5 +forward 8 +forward 7 +forward 8 +down 5 +up 3 +forward 5 +forward 8 +forward 1 +forward 5 +forward 7 +forward 2 +down 6 +down 6 +down 6 +down 2 +down 2 +up 1 +down 1 +forward 5 +forward 7 +down 4 +forward 4 +up 1 +forward 7 +forward 8 +down 5 +down 2 +down 2 +down 5 +forward 3 +forward 7 +down 5 +forward 2 +forward 8 +down 3 +forward 6 +up 1 +forward 7 +forward 4 +forward 1 +forward 9 +forward 2 +down 1 +down 1 +down 8 +forward 4 +down 6 +forward 7 +forward 2 \ No newline at end of file -- cgit v1.2.3