diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bee8a64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/day7/input.txt b/day7/input.txt new file mode 100644 index 0000000..dae486e --- /dev/null +++ b/day7/input.txt @@ -0,0 +1,142 @@ +......................................................................S...................................................................... +............................................................................................................................................. +......................................................................^...................................................................... +............................................................................................................................................. +.....................................................................^.^..................................................................... +............................................................................................................................................. +....................................................................^.^.^.................................................................... +............................................................................................................................................. +...................................................................^.^.^.^................................................................... +............................................................................................................................................. +..................................................................^.^.^.^.^.................................................................. +............................................................................................................................................. +.................................................................^.^...^...^................................................................. +............................................................................................................................................. +................................................................^.^.^.^.^.^.^................................................................ +............................................................................................................................................. +...............................................................^.......^...^.^............................................................... +............................................................................................................................................. +..............................................................^.^...^.^.....^.^.............................................................. +............................................................................................................................................. +.............................................................^...^.^...^.....^.^............................................................. +............................................................................................................................................. +............................................................^.^.^.^...^...^.^.^.^............................................................ +............................................................................................................................................. +...........................................................^.^.^...^.^.^.^.^.....^........................................................... +............................................................................................................................................. +..........................................................^.^.^...^.^.^.......^.^.^.......................................................... +............................................................................................................................................. +.........................................................^.....^.....^.^.....^.^.^.^......................................................... +............................................................................................................................................. +........................................................^.....^...^.^.^.....^.^.^.^.^........................................................ +............................................................................................................................................. +.......................................................^.^.^...^.^.^...^.^.^.^.^.^.^.^....................................................... +............................................................................................................................................. +......................................................^.^.^.^.^...^.^.^...^.....^...^.^...................................................... +............................................................................................................................................. +.....................................................^...^.^.^.......^.....^.^.^.^.^...^..................................................... +............................................................................................................................................. +....................................................^.^.^...^.....^.^.^.^.^.........^.^.^.................................................... +............................................................................................................................................. +...................................................^.^.^.^.^.^...^.^.....^...^.^...^.^.^.^................................................... +............................................................................................................................................. +..................................................^...^.^.^.^.....^.^...^.^.^.....^.^.^.^.^.................................................. +............................................................................................................................................. +.................................................^...^.^.^.^.^.^.^.......^.^.^...^.....^.^.^................................................. +............................................................................................................................................. +................................................^.....^.^.^.^.^...^...^.^.^.^...^.^.....^...^................................................ +............................................................................................................................................. +...............................................^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^.....^.^............................................... +............................................................................................................................................. +..............................................^.^.^...^.^.^.^...^...^...^.^.....^.^.^.^.^...^.^.............................................. +............................................................................................................................................. +.............................................^.^.......^.^...^...^.^.^.....^.^...^...^.^.^...^.^............................................. +............................................................................................................................................. +............................................^...^.^.^.^.^.^.^.^.^...^...^.....^...^.^.^.^...^.^.^............................................ +............................................................................................................................................. +...........................................^.^.^.^...^.......^.^.^.^.^.^.^.^.^.^.^...^.......^.^.^........................................... +............................................................................................................................................. +..........................................^.^.^...^.^...^.^...^.^.^.^.......^.^.^.^.....^...^.^...^.......................................... +............................................................................................................................................. +.........................................^...^.^.^.^.^.^.^.^.^.^.^...^.^...^.^.^.^.^.^.^.^.^.^.....^......................................... +............................................................................................................................................. +........................................^.^.^...^.^.^.....^.^.^...^.^...^.^.^.^...^.^.^.^.^.^.^...^.^........................................ +............................................................................................................................................. +.......................................^...^.....^.^.^.^.^.^.^...^.....^.^...^...^.^...^.^.^.^.^.^.^.^....................................... +............................................................................................................................................. +......................................^...^...^.^.....^...^.^.^...^.^.^.^.^...^.^...^.^.^.^.^.^...^...^...................................... +............................................................................................................................................. +.....................................^...^.^.^.^.^.^.^.^.^...^.^...^.....^.^.^.^.^...^.^...^...^...^.^.^..................................... +............................................................................................................................................. +....................................^.^.^.....^.^.^.^.^.^.......^.^.....^.^...^.^.^.^.^.^.^...^...^.^.^.^.................................... +............................................................................................................................................. +...................................^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.....^...^.^.^.^................................... +............................................................................................................................................. +..................................^.^.^...^...^.^...^.^.^.^.^.^.^...^...^...^.^.^.^.^.^...^.^.....^.^.^.^.^.................................. +............................................................................................................................................. +.................................^.^...^.^...^.^.^...^.^.^.^.^.^.^...^.^.^.^...^.....^.^...^...^.^.^.^.^.^.^................................. +............................................................................................................................................. +................................^.^.......^.^.^.^.....^.^.....^...^.^.^.^.^.^.^.....^.^.^.^.^...^...^.^.^...^................................ +............................................................................................................................................. +...............................^.^.^...^.^.^.....^.^.^.^.^.......^.^...^.^.^.^.^.....^.^.^...^.^.^.^...^.....^............................... +............................................................................................................................................. +..............................^...^...^.^.^...^...^.^.^.^.^.^.....^.^.^.^.^...^.....^.^.^.^...^.^...^.^.^.^...^.............................. +............................................................................................................................................. +.............................^.^.............^.^.^...^.^.^.^...^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^.^.^............................. +............................................................................................................................................. +............................^.^.^.^...^.^.^.^.^.......^...^.^.^.^.....^.....^.......^.^.^.^.^.^.^.^.^...^...^.^.^............................ +............................................................................................................................................. +...........................^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.......^.....^.^.^.^.^.^.^.^.^...^...^.^.^.^.^.........^........................... +............................................................................................................................................. +..........................^...^.^.^.^.^.....^.^.^.^...^...^.^.^.^.^.^.^.^...^.^.^...^.^.^...^.^.^...^.......^.^.^.^.......................... +............................................................................................................................................. +.........................^.....^.^.^.....^...^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.......^.^.^.^.^...^.....^......................... +............................................................................................................................................. +........................^.^.....^.^.^.^.^.^.^...^...^.^.^.^.^...^...^.^.^...^.^.^.^.^...^.^.^...^.^.^.^.^.^.^.^...^.^........................ +............................................................................................................................................. +.......................^.^.^.^...^...^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^.^...^.^...^.^.^.^.^.^.^.....^.^...^.....^...^.^....................... +............................................................................................................................................. +......................^.^.^.^.^...^.^.........^.^...^.^.^.....^.^.^.^.^.^.^...^...^.^...^.^.^...^.^...^...^.^.^...^.^.^...................... +............................................................................................................................................. +.....................^.^.^.^.....^.^.^.^.^.^...^.^.^.^.^...^.^.^.^.^.^.....^.^...^.^.^.^.^...^.....^.^.^.^.^.^.^.^.^.^.^..................... +............................................................................................................................................. +....................^.............^.^.^.^.^.....^.^...^.^.^.^.^...^.^.^.^.^.^.^.^.....^.^.^.^.^.^.....^...^...^.^.^.^...^.................... +............................................................................................................................................. +...................^.^.....^.^...^.^.^.^.^.^.^...^...^...^.^.^...^.^.^.^.^.^.^.^...^.^.^.....^.^...^.^.....^...^...^.^.^.^................... +............................................................................................................................................. +..................^...^.^.^.^.^.^.^.^.^.^...^.^.^.^...^.^.^.^.^...^.^.^...^.^.^.....^.^.....^.^.^.^.^...^.......^.^.^...^.^.................. +............................................................................................................................................. +.................^.^.^...^...^...^.^...^.^.....^...^.^.^.^.^.....^.^.^.^.^.^...^.....^.....^.....^.^.^...^.^...^.^.^.^.^.^.^................. +............................................................................................................................................. +................^.^.^.^...^.^.^.^.^.^...^.^.^...^.^.^.......^.^.^...^...^.^.^...^.^.^.^.^.^...^.^.^.....^.^.^.^.....^.^.^...^................ +............................................................................................................................................. +...............^.^.^.^...^.^.^.^.^...^...^.^.....^.^.^.^...^.....^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^.....^...^.....^...^.^............... +............................................................................................................................................. +..............^...^.^...^.^.^...^.^.^.^.^.^.^.^.^.^.^...^.....^.^.^.....^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.....^.............. +............................................................................................................................................. +.............^.^.^.^.^.^.^.^...^.^.....^.^.^.^...^.^.^.^.^.^...^...^.^.^.^.^.^.^.^...^.^.^.^.^...^...^.....^.^.....^.^.^.^.^.^.^............. +............................................................................................................................................. +............^...^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^.^.^.^...^.^.^...^.^.^.^.^.....^.^.^.^.^.^.^.^.^...^...^.^.^............ +............................................................................................................................................. +...........^.^.^...^.^.....^.^.^...^.^.^.....^.^.^.^.^...^.^.^.^.^...^.^.^.^...^.^.^.........^.^.^...^.^...^.^.^.^...^.^.^.^.^...^........... +............................................................................................................................................. +..........^.^.^.^.^.^.^.^.^.....^.^.^.^.^.^.^.^.^...^.^.^.^...^.^...^...^.^.^...^.....^.^.^.^...^.^.^.^.^.^...^.^.^.^.^...^.^.....^.......... +............................................................................................................................................. +.........^.........^.^.^.^.^.^.^.....^...^.^.^.^...^.^.^.....^.^...^.^.^...^.^...^.^.^.....^.^.^...^.^.....^.^.^.^.......^.^.^.^...^......... +............................................................................................................................................. +........^.^.^.^.^.^.^.^.^...^...^...^.^...^.^.^.^.^...^.^...^.....^.^...^...^...^.^...^.^.^...^.^.^.^.^.^...^.^.^.^...^.^.^...^.^.^.^........ +............................................................................................................................................. +.......^...^...^.^.^.^.....^.^.^.^.^.^.^.^...^.........^...^.^...^...^...^.....^.....^.....^.....^...^.^.^...^.^.^.^.^...^.^.^.^.^...^....... +............................................................................................................................................. +......^...^.^.^...^.^.^.^.^.^.^.^.^.^.^.^...^.^.^.^...^.^.^.^...^.^...^.^.^.^.^.^.^.^...^...^.^.^.^.^.^.....^.^.^.^.^.^.....^.^.....^.^...... +............................................................................................................................................. +.....^.....^.^.^.^.^...^.^.^...^.^.......^...^...^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^.^...^.^.^.^...^.^.^.^...^.....^.^.^.^.^.^.^.^.^.^.^.^..... +............................................................................................................................................. +....^.^.^.^.....^.^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^...^.^.^.^.^.^...^...^.^...^.^.^.^.^.^.... +............................................................................................................................................. +...^.^.^...^.^.^.^.^.^.^.......^.^.....^.^...^...^.....^.^.^.......^.^.^...^.^.^.^.^.^...^.^.^...^.......^.^...^...^.^.^.^.^...^.^.^.^.^.^... +............................................................................................................................................. +..^.^.^...^.^.^.^.^...^...^.^.^...^...^...^.^...^...^.^.^...^...^...^.^.^...^.^.^.^...^.^...^...^.^...^.........^.^.^.^...^.^...^.^.^...^.^.. +............................................................................................................................................. +.^.....^.^...^.^.^.....^...^...^...^.^...^.^...^...^.^...^.^.^.....^.^.^.^...^.^.....^.^...^.^.^...^.^.....^...^.^.^...^.......^.....^.^.^.^. +............................................................................................................................................. diff --git a/day7/part1.py b/day7/part1.py new file mode 100644 index 0000000..dd308a8 --- /dev/null +++ b/day7/part1.py @@ -0,0 +1,21 @@ +from pathlib import Path + +FILE = "input.txt" + +def main(): + raw_lines = Path(FILE).read_text().splitlines() + beams = {raw_lines[0].index('S')} + splits = 0 + for line in raw_lines[1:]: + for i, c in enumerate(line): + if c == '^': + if i in beams: + splits += 1 + beams.remove(i) + beams.add(i-1) + beams.add(i+1) + return splits + + +if __name__ == "__main__": + print(main()) diff --git a/day7/part2.py b/day7/part2.py new file mode 100644 index 0000000..21ad567 --- /dev/null +++ b/day7/part2.py @@ -0,0 +1,25 @@ +from pathlib import Path + +FILE = "input.txt" + +def main(): + raw_lines = Path(FILE).read_text().splitlines() + position = raw_lines[0].index('S') + return traverse(position, raw_lines[1:], 0, dict()) + +def traverse(position: int, grid: list[str], level: int, memo: dict[tuple[int, int], int]) -> int: + if (position, level) in memo.keys(): + return memo[(position, level)] + if not len(grid): + return 1 + if grid[0][position] == '^': + memo[(position, level)] = ( + traverse(position-1, grid[1:], level+1, memo) + + traverse(position+1, grid[1:], level+1, memo) + ) + return memo[(position, level)] + memo[(position, level)] = traverse(position, grid[1:], level+1, memo) + return memo[(position, level)] + +if __name__ == "__main__": + print(main()) diff --git a/day7/test.txt b/day7/test.txt new file mode 100644 index 0000000..57a2466 --- /dev/null +++ b/day7/test.txt @@ -0,0 +1,16 @@ +.......S....... +............... +.......^....... +............... +......^.^...... +............... +.....^.^.^..... +............... +....^.^...^.... +............... +...^.^...^.^... +............... +..^...^.....^.. +............... +.^.^.^.^.^...^. +...............