From 5b996a50198c30b796f4a02f44e88ffbf550da27 Mon Sep 17 00:00:00 2001 From: gabe Date: Fri, 26 Aug 2022 14:07:57 -0500 Subject: [PATCH] finished day 5 --- day5/day5.py | 46 +++ day5/example1 | 4 + day5/input | 859 ++++++++++++++++++++++++++++++++++++++++++++++ day5/test_day5.py | 33 ++ 4 files changed, 942 insertions(+) create mode 100755 day5/day5.py create mode 100644 day5/example1 create mode 100644 day5/input create mode 100644 day5/test_day5.py diff --git a/day5/day5.py b/day5/day5.py new file mode 100755 index 0000000..6a7d0ab --- /dev/null +++ b/day5/day5.py @@ -0,0 +1,46 @@ +#! /usr/bin/env python3 + +import pathlib +import sys +import re +from dataclasses import dataclass +from pprint import pprint + +def row_to_int(string: str)->int: + return int(string.replace('F','0').replace('B','1'),2) + +def col_to_int(string: str)->int: + return int(string.replace('L','0').replace('R','1'),2) + +def parse(puzzle_input: str): + """Parse input""" + rows_and_cols = [(row_to_int(x[:7]),col_to_int(x[7:])) for x in puzzle_input.splitlines()] + return set([x[0]*8+x[1] for x in rows_and_cols]) + +def part1(data): + """Solve part 1""" + return max(data) + +def part2(data): + """Solve part 2""" + for row in range(128): + for col in range(8): + potentialID=row*8+col + if potentialID not in data: + if (potentialID+1 in data) and (potentialID-1 in data): + return potentialID + +def solve(puzzle_input): + """Solve the puzzle for the given input""" + data = parse(puzzle_input) + solution1 = part1(data) + solution2 = part2(data) + + return solution1, solution2 + +if __name__ == "__main__": + for path in sys.argv[1:]: + print(f"{path}:") + puzzle_input = pathlib.Path(path).read_text().strip() + solutions = solve(puzzle_input) + print("\n".join(str(solution) for solution in solutions)) diff --git a/day5/example1 b/day5/example1 new file mode 100644 index 0000000..6b89eb8 --- /dev/null +++ b/day5/example1 @@ -0,0 +1,4 @@ +FBFBBFFRLR +BFFFBBFRRR +FFFBBBFRRR +BBFFBBFRLL diff --git a/day5/input b/day5/input new file mode 100644 index 0000000..17dfa0b --- /dev/null +++ b/day5/input @@ -0,0 +1,859 @@ +BBFFBFFRRR +FBBFFBBLRR +FFBFBFBRRR +FFFBFBFRRR +BBFFBBFLRR +BFFBFBFLRL +FBBBBBFRRR +FFFFBFFLLR +BFBFFBFLLR +FFBBFFFLRR +BFFFFFFLLL +FBFFBFFRLL +FFBFFBFRLR +FBBBFBFRRR +FBFFBBBRRL +FBFFBFFLRL +BFBBFFFLLL +FBBFBFBRRL +BFFBFFFLRR +FFFFBFFRLR +FFFBBBFRLR +FBFFFBFLLL +BFBFBBBLRR +FBBBFFBRLR +BBFFFFFLLL +BFFFFBFRRL +FBBBFBFRRL +FFBBBFBRLR +FFFFBBFLLL +FBFBFBBRLL +BFFFBFBRLL +FFBFBFBRLR +FBFFFBBRLR +BBFFFBBLRR +BFFBBFFRRL +BFBBBFFRRR +FFBFBFFRRL +FBFBBFBLLR +BFFBFBBRRR +BFFFFBFLLR +FFFBFFFRRR +FBFFFBFRLR +BFBFFBFRLR +FBBBFFFLLR +FBBFFBFLLL +BFBBFBFLLR +FFBFBBFLLL +BFFFBFBLRL +FBBFBBBLLL +FFFBFFBLLR +BFFFFFFRRR +BFBBBBFRRL +FFBFBBFRLL +FBBBFBBLRL +BFFBFBFLRR +BBFFFBFRRL +BFFBBFFLRR +BFBFFFFLLR +FBFBFFFLRR +BFBBFBBLRL +FBFBFFFRLR +FFBBBFFRLR +BBFBBFFRLR +BFFFFBBRLL +FFFBFBBLRR +FFFFBFBRRL +BFFBFBFRRL +FBFFBBBRRR +BFBBFFBLRL +FFBBFFFLLL +FBFBBFBRRR +FBBBFFFLRL +FBBFFBFLRR +FBBBBBFRRL +BFFFBBBLRL +FFFBBFBRLL +FFFFFBBLLR +FFBFBBBRLL +FFBBFBFLLR +FBFBBFFLLL +FFFBFFBRLL +BFBBFBFRLR +BFBFBBFRRL +FFFBFFFLRL +FBBFBBFRLR +BFFBFFBRRL +BBFFFBBRLR +FBBBBBFRLL +FFBBFFFRLL +BBFBFBBRLR +FFBBBFFLLR +BFBBBBBLLL +FFFBFBBLLL +FBFFBFFRRL +FBFBFFBLLL +BFFBBBFRRL +FBBBBBFLLL +FBFBBFBLRR +FFBBBBFLLR +BBFFBFFRRL +FBBBBBFLRR +FBFFFFFRLR +FBFFBBFLLR +FFBBBFBLRR +BFFFBBBRRL +FBFBFBFRRL +FFFBFBBRLL +FFBFBFBLRL +FBBBFBBLLL +FBBBFBFLRL +FBBBBFFLRL +FBFBBBBRLR +FBBFFBFLLR +FBFFBBFLRR +FBFFFBBLLL +BBFFBBFRRR +FBBFBBBRLL +BFFBBBFLLR +FBFFFFFLRR +FBFFBBFRRL +BFFBBFBLLL +FBBBFBBLLR +FBBBBFBLRL +FBBBFFFRRR +FFFFBBFRRR +BFBFFFFRRR +BFBFFBBLRL +BFFFFFBLLR +BFBBFFFRRR +FBFFFBFRRL +BFFBBFFLRL +FFFBFFBRRL +FFBFBFBLLL +FFBFBFFLLL +BBFFFBBRRR +FFFFFBFLRL +BFBFFFBLRL +BFBFBFFLRR +BFFBBBBRLL +BFFFBFFRRR +BBFBFFBRLL +FBFFFBBRRL +FFBBFBBRRL +FFBFFFFLLR +FFFBFFFLLL +FBBFFBBLRL +BFBFBBFLLR +FBFBFFFRRL +BBFFFFFLRR +BBFFFBFLRL +BBFFBBBLLL +BFBBFBFLLL +BFBFFBFRRL +FBFFFFBRRL +FBFFBBBRLR +BFBBFBBRLL +BFFBBFFLLR +FBBBFFBLRL +BFFFBFFRLR +FFFBFFBRLR +BFFBBBFLLL +FBBBBFFRLL +FFFFBBBRLR +FBFFBFFLRR +FBFBFBBRRL +FFFFFFBRRR +FFFBBBFLRL +FBFFBFBLLR +FFFBBBBLRL +BBFBFFBLLL +FBFFFFBLLR +BBFBFBBRRR +BFBFFFBRRR +FBBFBFFRLL +FBBBBFFRLR +FFBBFBBLRL +BBFBFFBLLR +FBBBBBBLRL +BFFFBBFLLL +BBFBBFFLLR +FBFFBFBLRL +BFFFBBBLRR +BBFFFFFRRR +BFBFBBBRLR +BBFFFBFLRR +FBBFBBFLLR +BBFBFFBLRR +BFBBBFFLRR +FBBFBFFRRL +FBFBFBBLRR +BFBBFFBRLL +FFFBBFBRLR +BFFBBBFRRR +FBFFBFFRLR +FFFBBBBRLL +FFFFFBBRLR +FBBFBFBLLR +FBBFBBFLRR +BBFFBBFLLR +FFFBFBBLLR +FFBFBFFLRR +BFBBFBFRLL +BFFFFBFRRR +BBFBFFFLRL +BFFFFBFLLL +FBFBFBFLRL +BFBBFBBLLR +BFFBFFFRLL +BBFBFFFRLR +BBFFBFFRLL +FFFBFBBRLR +FBFBBBFLRL +FFBFFBBRLR +BBFFFBBLRL +BFBBBBFLRR +FFBFFFBLRL +FFBBBFBRLL +BBFFBFFLRR +BBFFBFFRLR +FFFFFBFRRR +BBFBFBBLRL +BFFBBBBLLL +FBBBBFBRRR +FFBBBBBLRL +FBBFBBFRRR +FFBBFFBRLL +BFBFBFBLRR +BBFBFFFRRR +BFFFBBFRRR +FBFBFFFLLL +FBBFBFBRRR +BBFFBFBLLR +BBFBFBFLRR +BFFFFBBLRL +BFBBBFFLRL +BBFBFFBLRL +BFFBBFFRLL +FBFFBFFLLR +FBFBFBBLLL +BBFBFBFLRL +BBFFBBBLRL +FFFFFBBRLL +FFFBBBBRRR +FFBBFFFRLR +FFBFFFBRRR +FBFBFFBLRR +FFBFFBBLLL +FBBFBBFLRL +FBFFBBBLRL +FBBBBFFRRR +BFBBBBBLLR +FFBFBBBLRR +FFFFBFBLRR +BFFFFFFRLL +FBBFFFBLRR +BFBBBBBRLL +FFBBFFBLRL +BFBBBFFRLR +FFBFFBFLLL +FFBBFBFRLR +BFBFFBBLRR +FFFFBFFLRR +FFBFFBFLRL +BBFFBBFRRL +FFBFFFFLLL +BBFBFFBRLR +FBFBFBBRLR +BBFFBBBRRR +FBFFBBBRLL +BFBFFBBRRR +BBFFFBFRLL +FBBFBBBLRL +FBBFFFFLRR +BBFFFBBLLL +FFBFFFFLRL +FBBFFBFLRL +FBBBBFFLLR +BFBBFBFRRR +FBBFFFBLLL +FFBFBFFRLL +FFFBBBFLRR +FFFBFFFLRR +FBFFBFFRRR +BFFFBFFLLR +BFFFFFFRLR +BFFFBFFLLL +FBBBFBBRRL +BFBFFFBLLL +FBFBBBBRRR +BFBBBFBRLR +BBFFFFBRLR +FBFFFFFRLL +FBBFFBBRLR +BBFBBFFLRR +BBFFBFFLLR +BBFFBBFRLL +FBFFFFFRRL +FFBFBBFRRR +FFBFFFFRLL +BFFFFBBLRR +BFBFBFBLRL +FBBFFFFRRR +FFBBFBBRRR +BFBBBBBRLR +FBFFFBBLLR +BBFFFBFRLR +FBFFFBBRRR +FBBFFBFRLR +BFFFBFBRRR +FFBBBBBLLL +FFFFFBFLLR +FBBFBFBRLL +BFBFBFBRRL +BBFFFFBRRL +FFBFBBFLLR +FFBBBFFRRL +FBFFBFBRLR +FBBFFFFRLL +BFFBFFFLLR +FBFFFBBLRR +BFFBFFFLLL +BFBFBBBRRR +BFFFFBFLRL +FFFFBFBLLL +FFFBFFBLLL +BFFFBBFRRL +BFBFBBFRLL +FFFBBBBLLL +BFFBFBBRLR +BFBBBBBLRR +BFBBBFBRRL +FFBFFFBRLR +BFFBFFFLRL +FFBFBBBLLL +BFBFBBFRRR +BFBFFBFRRR +FFBFFFBRLL +FBFFFFFLRL +BBFFBBFLLL +BFBFBBBRLL +FFFBFFFRRL +FBBBBBBLLR +FFFBFBBLRL +FBBFBBFRLL +FFBFFFFRRR +FFFBBBFLLR +BFFBBFFRLR +FFFFFBFLRR +FFFBBBBLLR +FBFFBFBRRL +FBBFFFFLLL +FFFFFBFRRL +BFFBBBFRLL +FFFBBFFRLL +FFFBBFFLRR +FFFFBBFRLL +BFBBBBBRRR +BFFBFBFLLL +BBFBFBFLLR +FFBBBBFRLR +FFFBBBFRLL +BFBBBBFRRR +FBFBFFBRLR +FFBFBBFRRL +BBFFBBBRRL +FFBFBBFRLR +FFFFBFFRLL +FBFFFBBRLL +BBFFBFBRRL +BFBFBFBLLR +FBFBFBBLRL +FBBFFFFRRL +FFFBBFFRRR +FFBBBBBLRR +BBFBFBBLRR +FFFFBBBLRR +FFBBBBBRLL +FFBFFFBRRL +BFBBFFFRLL +FBBBFBFRLL +BBFFBFFLRL +BBFFBFBRLR +BFFBBBBRRR +FBBBBBBRRL +BBFBFFFRLL +BFFBBFFRRR +BFBBFFFRRL +FFBFFBFLRR +FBFBBFFRLL +FBBFBBFRRL +BBFBBFFRRR +FFBBFBFRRL +FFBBFBFLLL +FBBFFFFLLR +BFBFFBBRLR +BFBBFFFLLR +FBBBFFFLLL +FFFBFFBLRR +FFFBFBFRLR +BFFBBBBRLR +FBFFBBBLLR +FFFFBBBRRR +FFBBBBFLLL +FBBBBFBLLR +BFBFBFFRRL +BBFFBBBLRR +FBBFFBFRRL +FFFBBBFLLL +BFFFFBBLLL +BBFBFBFRRR +BFBBBFBLRR +FBBFBBBLLR +FFBBBBFLRL +FFFBFFBLRL +FBBBFFBRRL +BFFBBFBRLL +BFBFBFBRRR +BBFBFBBRLL +FBFFFBFRLL +BFFFBFBLRR +BFBFFFFLRL +BBFFFFBLRR +BFBBFFBRRL +BBFBFBBLLR +FFFBBBFRRL +BFBBBFFRRL +FFBFFBFLLR +FFBBBFBLLL +FBFBBBFLLL +FFBBBBBRLR +BBFFBBBRLL +BFBFBBBRRL +FFBBFBBRLL +FBFBBFBLRL +BBFFBFBLLL +FBFBFFFLRL +FFBFFBBLRL +FFBFBBFLRL +BBFBFBBLLL +FFBBFBFRLL +BBFBBFFLLL +FBFFFFBLRL +FBFBBBFRLR +FFBFFBFRLL +FBBFFFBRRR +FBFBFFBLRL +BFFFFBBLLR +FBFBFBBRRR +BBFFBBFLRL +BFBBFFFRLR +FBFFFFFLLR +FBBFFBBLLL +FFFFFBBRRL +FFFBBFBRRL +BFFBBBBRRL +FBFFFBFLRL +FFBBFFFLLR +FBBBBBBLRR +BFFFBBFRLL +FFBFFFBLLR +FBBBFFFRLL +FFFFBBBLRL +BBFFBFBLRR +FFFFBBFLRR +BFFBFBFRLR +FFBFBBBLRL +FBFBFBFLLR +FFBBFBBRLR +BFBFBFFRRR +BBFFFFBRLL +FFBFBFFRRR +FFBFBBFLRR +BFBBFBFLRR +FFFFBBBLLR +FFBBBBBRRL +FBBFFBBRRR +FFFBBBBRLR +BFFBBBFLRL +BFBBFFBRRR +BBFFBBFRLR +FBBBBBFLRL +FFFBBFFLLL +BFBBBFFRLL +FBFFFFFLLL +FBFBBFBLLL +FFFBFFBRRR +BFBFBFFLLL +BFBFBFBLLL +BFBBBFFLLL +FFFFBBFRLR +BFFBBFBRRL +BFBBFBBLLL +FBBFBFBRLR +BFFFBFFLRL +FBFBBFFLRL +FFFFFBFLLL +FBBFFBFRRR +FBFBBBBLLL +FBBBBBFRLR +FBFFBBFRLL +FFBFFBFRRR +FFBFFFFRRL +BFFBFBBLLR +BFBBFBBRRR +FFBBFBBLRR +FBFFFFBRLR +FFBBBBFRLL +BBFFFBFRRR +FFFBFBBRRR +BFFFBFFRLL +BFFBBBBLRR +FBBBBFBLLL +BFFFFFFLLR +BFBFFFFLRR +BFFBBBBLLR +FFBBBFBRRR +FBBFBFFRRR +FBBFFFBRLR +BFBFBBFRLR +BFFBFFBRLL +FBFBBFBRLR +BFFFFFBLRR +BFFBFFBRRR +BFBFFBFLRL +BBFFFBFLLL +BBFBFBFLLL +BFBFBFFLRL +FBBFBFFLLL +FBFFBFBLLL +BFFFBFBRLR +FFFBFFFRLL +BBFBFFFLLL +BFFFBBBRLR +FBFBFBFLRR +FFBBBBFRRR +FBFBFBFRLR +BBFFBFFLLL +FBBBBFBLRR +FBBBBBFLLR +BFBFFFFRLL +FBFFFBFLRR +FFBFFFBLLL +BFBFFBBLLR +FFBBBFBLLR +FBFFFBBLRL +FFBBBFFRRR +FBBBFBFLLR +FBBBBFFLRR +FBFFBBBLLL +FFBFBFFLLR +FFFFFBBLLL +BFFFFFBLRL +BBFFFFBRRR +BFBFFFBRRL +BBFFFFFRRL +BFBBBBBLRL +FBBBBFBRLL +FFBFFFFLRR +BFBBBFFLLR +BFFFFBBRLR +FFBBFFBRRL +BFBFBFFRLR +FFBBBBFLRR +BFBFFBFLLL +FBBFFBBRRL +FFFBBFFLLR +FFFFBFFRRR +BFFBBBFRLR +BFFFFFBRRR +FFBFBFBLLR +FFFBBBFRRR +BBFBFBFRLR +FFBBFFBLLR +FBFBBBBLRL +FFFBFBFLRL +FFFFBBBRLL +FBFFFFBRRR +FFBBBFFRLL +FBFBFFBRRL +BFFBFFBLLL +FFFFFBFRLL +BBFFFBBRLL +FBBFBFBLRL +BFBFBFFLLR +BFBBFBBRLR +FFBFFFBLRR +BBFBFFFLRR +FBBFBBBLRR +FBBBFFBLLR +BFBBBBBRRL +BFBBFFBLLR +FBBBFBFLRR +BFFBFBBLLL +BFFBFFBLRL +BFBFBFBRLR +FBFFBBBLRR +FBFBBBBRRL +BFBFBBFLLL +FBFBBBBLRR +BFFBBFBRLR +FFFBFBFRRL +BFFFFBBRRR +FBFFBBFRLR +BFBBFBFLRL +BFFFBBBLLL +BFFFFFBRLR +BBFFFFBLRL +BFFBFFFRRR +BFBBBBFRLL +FBFBBFBRLL +FBBFFFBLLR +FFFBBFBRRR +FBFBBBBLLR +FFFFBFFLLL +FFFFFBFRLR +BFFFFBFRLR +FBBFFFBLRL +BFBFFBFLRR +FFFFFFBRLL +FFBBFFFLRL +BBFFFFBLLL +FFFBBFFRRL +FBBFBBFLLL +FBFFBFBLRR +FFBBFBBLLL +BFFFBBBRRR +BFFFBBBLLR +BBFBFBFRLL +BFFFBBFRLR +FFBFBBBRRL +FBFBFFFRRR +FBBBBBBRRR +FFBBBFFLRL +BFFBFBBRRL +BFBFBFFRLL +BFFFBFFRRL +BBFFBBBRLR +BBFFFFFRLL +FFBBFFBRRR +FBBFBFFLLR +FBBBFBBRLR +FFBFFBBRRL +FBBBFFBLLL +FBBFFFBRRL +BFFBFFFRRL +FBBFBFFRLR +BFFBBBBLRL +FFBFFBBRRR +FBFBBBFLRR +BFBBBBFRLR +FFFBFBFLLL +FBBBBBBRLL +FFBFFBBLRR +BBFFFFFLLR +FFFFBBFRRL +BBFFFFFRLR +FBFBFFBRLL +BBFFBFBRRR +FBFFFBFLLR +FFBBFBBLLR +FBFBFFFRLL +BFBBBFBRLL +FFFFFFBRLR +FFBBFFFRRL +BBFBBFFRLL +FBBFFFFRLR +BBFBBFFLRL +FBBFFBBLLR +BFFFBBFLLR +BBFBFBBRRL +BFFBFFBLLR +FFBBFBFRRR +FBBBBFBRLR +FFFBFBFLLR +FFBBBFBRRL +FFBBBFFLLL +FFBFBBBRLR +FBFBBFFLRR +FFFBFBBRRL +FFFFBFBRRR +FFFFBBBLLL +FFFBFBFLRR +BFBBBFBLLR +BFBFFFFRRL +BFBBFFBLRR +FFBFFBFRRL +BFBBFBFRRL +BFFFFFBRRL +FBBBBFFLLL +FFBFBBBLLR +FBBBFBFRLR +FFFBBFFRLR +BBFFBFBRLL +BBFBFBFRRL +FFBBBBFRRL +FBBBFBBLRR +BFFBFFBRLR +FFBBFFBRLR +FFBFBFBLRR +BFBFFFBLLR +BFFFBBFLRL +FBBBFBBRLL +BBFFFBFLLR +BBFFFBBRRL +BFBFFFBRLL +BFBFFFBLRR +FFBFBFFRLR +BFFFFFFRRL +BFFFBFFLRR +BFBBBBFLRL +FFFBFFFLLR +BFFFFFFLRR +BBFBBFFRRL +BFFFFFFLRL +FFFFBFBRLL +BFFBBFBLRR +FFFFBFFLRL +BBFFFFFLRL +FBBFBFBLRR +FBFBBFFRLR +FFFFFBBRRR +BFFFBFBRRL +FBFFBFBRRR +BBFFFBBLLR +BFFBFBBLRR +FFFBFBFRLL +FBFBBFFRRR +FFBFBBBRRR +BFBFFFBRLR +FBBFFFBRLL +FFBFBFBRRL +FFBBBFBLRL +FBBFBBBRRL +FBFFBFBRLL +BFBFBBFLRL +FFFBBBBLRR +BFFBFBBRLL +FFFBFFFRLR +FBFBFFBLLR +FBFFBBFLLL +FBBBFBBRRR +FBBFBBBRRR +FBFBBBFRRL +BFBBFBBRRL +BFBFBBBLRL +FBBFBBBRLR +FFBBFFBLRR +FBBFBFFLRL +FBFBFFBRRR +FFBBBBBLLR +BFBBFFFLRR +FFBBFBFLRR +BFBBBBFLLR +BFBFFBBRRL +FBFBBFFRRL +BFFFFFBLLL +FBBBBFBRRL +FBBBFFBRLL +BBFBFFFLLR +FFFBBFBLLL +BFFFBBBRLL +BFBFFBBLLL +BFBFBBBLLR +FBFFBBFLRL +FFFFBBFLRL +FBBFFFFLRL +FBBBBFFRRL +BFBBFBBLRR +BFBFBFBRLL +FBBBFBFLLL +FBFBBBBRLL +FBBBFFBLRR +FFBBFBFLRL +FFFFBFBLRL +FFBBBFFLRR +FFBBFFFRRR +FFBFFBBRLL +FFFFBFFRRL +FBBFFBFRLL +BFFFBBFLRR +BFBFFBBRLL +BFFBBFFLLL +FBBBBBBLLL +BFFBFBFRRR +BFBFFFFRLR +BFFBFBBLRL +BFBBBFBLRL +FBFBFBFRLL +FBBFBFFLRR +BFBBBFBLLL +BFFBBBFLRR +BFBBBBFLLL +BFBBFFBRLR +FFFBBFBLRR +FFFFBBFLLR +FFBFFBBLLR +FBFBBBFLLR +BFBBBFBRRR +BFFFFFBRLL +BBFBFFBRRL +BFBBFFBLLL +FFFBBBBRRL +FBFBBBFRRR +BFFBBFBLRL +BFFBFFFRLR +FFFFFBBLRR +FBFBFFFLLR +FFBFFFFRLR +FBFFFBFRRR +FBFBFBFRRR +FFBFBFBRLL +FFFFFFBRRL +FFBBBBBRRR +FFFBBFFLRL +BFFFBFBLLL +FBFFFFBLRR +FBBBBBBRLR +FBFBBFBRRL +FFBBFFBLLL +FBFFBBFRRR +FBFFFFBLLL +BBFBFFFRRL +FFFFBFBLLR +BFFBFBFLLR +BBFBFFBRRR +FBFFFFFRRR +FFBFBFFLRL +BFFBBFBLLR +FBBBFFFRRL +BFFBBFBRRR +BFBFBBFLRR +FBBBFFFRLR +FBBFBFBLLL +FBFBFBFLLL +BFBBFFFLRL +BBFFBBBLLR +BFFFFBBRRL +FFFBBFBLLR +BFFFFBFRLL +FFFFFBBLRL +FBFBBBFRLL +BFBFFBFRLL +FBFFBFFLLL +FBFBFBBLLR +FFFFBFBRLR +BFFFBFBLLR +BFFBFFBLRR +BFFFFBFLRR +FBBFFBBRLL +FFFFBBBRRL +FBBBFFBRRR +BFFBFBFRLL +BBFFBFBLRL +FFFBBFBLRL +BBFFFFBLLR +FBFFFFBRLL +BFBFBBBLLL +FBFBBFFLLR +FBBBFFFLRR diff --git a/day5/test_day5.py b/day5/test_day5.py new file mode 100644 index 0000000..e5baaa5 --- /dev/null +++ b/day5/test_day5.py @@ -0,0 +1,33 @@ +#! /usr/bin/env python3 + +import pathlib +import pytest +import day5 as aoc + +PUZZLE_DIR = pathlib.Path(__file__).parent + +#these test fixtures setup the test, mainly by reading the filename into a string in this simple case. +@pytest.fixture +def example1(): + puzzle_input = (PUZZLE_DIR / "example1").read_text().strip() + return aoc.parse(puzzle_input) + +@pytest.fixture +def example2(): + puzzle_input = (PUZZLE_DIR / "example2").read_text().strip() + return aoc.parse(puzzle_input) + +# @pytest.mark.skip(reason="Not implemented") +def test_parse_example1(example1): + """Test that input is parsed properly""" + assert example1 == [(44,5), (70,7), (14,7), (102, 4)] + +# @pytest.mark.skip(reason="Not implemented") +def test_part1_example1(example1): + """Test part 1 on example input""" + assert aoc.part1(example1) == 820 + +@pytest.mark.skip(reason="Not implemented") +def test_part2_example2(example2): + """Test part 2 on example input""" + assert aoc.part2(example2) == ...