From 0ea4056bb2458208526434b43056c64dedf9a21c Mon Sep 17 00:00:00 2001 From: Stefan Harmuth Date: Sun, 20 Nov 2022 07:30:58 +0100 Subject: [PATCH] d6 --- day06.py | 47 ++++++++++++++++++++++++++++++++++++++++++++++ inputs/input5_test | 1 + inputs/input6 | 1 + inputs/input6_test | 1 + 4 files changed, 50 insertions(+) create mode 100644 day06.py create mode 100644 inputs/input5_test create mode 100644 inputs/input6 create mode 100644 inputs/input6_test diff --git a/day06.py b/day06.py new file mode 100644 index 0000000..1e417ea --- /dev/null +++ b/day06.py @@ -0,0 +1,47 @@ +from tools.aoc import AOCDay +from typing import Any + + +class Day(AOCDay): + inputs = [ + [ + (5, "input6_test"), + (12841, "input6") + ], + [ + (4, "input6_test"), + (8038, "input6") + ] + ] + + def distribute(self, p2: bool = False) -> int: + bank = self.getInputAsArraySplit("\t", int) + count = 0 + seen = [",".join(map(str, bank))] + while True: + count += 1 + i, c = bank.index(max(bank)), max(bank) + bank[i] = 0 + while c > 0: + i += 1 + bank[i%len(bank)] += 1 + c -= 1 + seq = ",".join(map(str, bank)) + if seq in seen: + if p2: + return count - seen.index(seq) + else: + return count + else: + seen.append(seq) + + def part1(self) -> Any: + return self.distribute() + + def part2(self) -> Any: + return self.distribute(True) + + +if __name__ == '__main__': + day = Day(2017, 6) + day.run(verbose=True) diff --git a/inputs/input5_test b/inputs/input5_test new file mode 100644 index 0000000..fd432c0 --- /dev/null +++ b/inputs/input5_test @@ -0,0 +1 @@ +0 2 7 0 \ No newline at end of file diff --git a/inputs/input6 b/inputs/input6 new file mode 100644 index 0000000..b16e11b --- /dev/null +++ b/inputs/input6 @@ -0,0 +1 @@ +4 10 4 1 8 4 9 14 5 1 14 15 0 15 3 5 diff --git a/inputs/input6_test b/inputs/input6_test new file mode 100644 index 0000000..fa9ed7e --- /dev/null +++ b/inputs/input6_test @@ -0,0 +1 @@ +0 2 7 0