From 7fd7d753bb5ab35a077826fcb322ef9405857615 Mon Sep 17 00:00:00 2001 From: gabe Date: Thu, 18 Aug 2022 17:05:10 -0500 Subject: [PATCH] added templates and day 1's input and example1. --- Pipfile | 13 +++ Pipfile.lock | 91 +++++++++++++++++++++ day1/example1 | 6 ++ day1/input | 200 +++++++++++++++++++++++++++++++++++++++++++++++ template.py | 29 +++++++ test_template.py | 32 ++++++++ 6 files changed, 371 insertions(+) create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 day1/example1 create mode 100644 day1/input create mode 100644 template.py create mode 100644 test_template.py diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..bf280c5 --- /dev/null +++ b/Pipfile @@ -0,0 +1,13 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +parse = "*" +pytest = "*" + +[dev-packages] + +[requires] +python_version = "3.9" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..e995069 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,91 @@ +{ + "_meta": { + "hash": { + "sha256": "0f2e2e1eec7667a0a76ab90193491e106610a921be445eef118b5d170f2d175e" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.9" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "attrs": { + "hashes": [ + "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", + "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" + ], + "markers": "python_version >= '3.5'", + "version": "==22.1.0" + }, + "iniconfig": { + "hashes": [ + "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", + "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + ], + "version": "==1.1.1" + }, + "packaging": { + "hashes": [ + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + ], + "markers": "python_version >= '3.6'", + "version": "==21.3" + }, + "parse": { + "hashes": [ + "sha256:9ff82852bcb65d139813e2a5197627a94966245c897796760a3a2a8eb66f020b" + ], + "index": "pypi", + "version": "==1.19.0" + }, + "pluggy": { + "hashes": [ + "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", + "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" + ], + "markers": "python_version >= '3.6'", + "version": "==1.0.0" + }, + "py": { + "hashes": [ + "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", + "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.11.0" + }, + "pyparsing": { + "hashes": [ + "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", + "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" + ], + "markers": "python_full_version >= '3.6.8'", + "version": "==3.0.9" + }, + "pytest": { + "hashes": [ + "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c", + "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45" + ], + "index": "pypi", + "version": "==7.1.2" + }, + "tomli": { + "hashes": [ + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0.1" + } + }, + "develop": {} +} diff --git a/day1/example1 b/day1/example1 new file mode 100644 index 0000000..e3fb011 --- /dev/null +++ b/day1/example1 @@ -0,0 +1,6 @@ +1721 +979 +366 +299 +675 +1456 diff --git a/day1/input b/day1/input new file mode 100644 index 0000000..13585a4 --- /dev/null +++ b/day1/input @@ -0,0 +1,200 @@ +1772 +1065 +1827 +1671 +1181 +1915 +1657 +1632 +1053 +1546 +1039 +1388 +1698 +1174 +1275 +1250 +1988 +1078 +1075 +1958 +1617 +1387 +1543 +1965 +1867 +1771 +1755 +1331 +1677 +1935 +1488 +911 +1001 +1516 +1949 +1626 +1083 +1402 +1223 +1179 +2001 +1790 +1551 +1117 +1990 +1968 +1532 +1999 +1175 +1126 +1869 +1666 +1753 +513 +1349 +1139 +1941 +1823 +1647 +1835 +1943 +1459 +1833 +1398 +1877 +1625 +1749 +1631 +1864 +1826 +1499 +1336 +1264 +1091 +1558 +1321 +1754 +1729 +1585 +1740 +1767 +1774 +1164 +1318 +1930 +1236 +1995 +1611 +1319 +1361 +1119 +1563 +1578 +1047 +1797 +1787 +1038 +1921 +1656 +1898 +1828 +1727 +1825 +2010 +536 +1395 +1865 +1882 +1638 +1954 +1565 +1296 +1723 +1187 +60 +1130 +1102 +1963 +1048 +1493 +1795 +472 +1496 +1278 +1444 +1889 +860 +1975 +1961 +1070 +1570 +1495 +1644 +1881 +1293 +1090 +1906 +1385 +1549 +1143 +1195 +2004 +1397 +1032 +1681 +2000 +1574 +1400 +1911 +1868 +1917 +1872 +1696 +1086 +1291 +1761 +1703 +1202 +1486 +1705 +1924 +1186 +1676 +1615 +1951 +1556 +1604 +1534 +2002 +1334 +1109 +1108 +1713 +1422 +1909 +1418 +1592 +1887 +1037 +1568 +1914 +1780 +1929 +1973 +1684 +1581 +1148 +1931 +1619 +1082 +1166 +1913 +1312 +1330 +1540 +1841 +1977 +1769 +1691 +1821 diff --git a/template.py b/template.py new file mode 100644 index 0000000..88722df --- /dev/null +++ b/template.py @@ -0,0 +1,29 @@ +# aoc_template.py + +import pathlib +import sys +import parse + +def parse(puzzle_input): + """Parse input""" + +def part1(data): + """Solve part 1""" + +def part2(data): + """Solve part 2""" + +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/test_template.py b/test_template.py new file mode 100644 index 0000000..b9d5749 --- /dev/null +++ b/test_template.py @@ -0,0 +1,32 @@ + +import pathlib +import pytest +import template 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 == ... + +@pytest.mark.skip(reason="Not implemented") +def test_part1_example1(example1): + """Test part 1 on example input""" + assert aoc.part1(example1) == ... + +@pytest.mark.skip(reason="Not implemented") +def test_part2_example2(example2): + """Test part 2 on example input""" + assert aoc.part2(example2) == ...