From 4455e37c32ba128685e6b1297f85dc39a529d8dd Mon Sep 17 00:00:00 2001 From: Ettore Dreucci Date: Tue, 1 Dec 2020 23:31:18 +0100 Subject: [PATCH] AoC 2020: day 1 Signed-off-by: Ettore Dreucci --- .gitignore | 5 +- 2020/inputs/day_1 | 200 ++++++++++++++++++++++++++++++++++++++++ 2020/solutions/day_1.py | 43 +++++++++ 3 files changed, 244 insertions(+), 4 deletions(-) create mode 100644 2020/inputs/day_1 create mode 100644 2020/solutions/day_1.py diff --git a/.gitignore b/.gitignore index 5da9f8a..8f3b271 100644 --- a/.gitignore +++ b/.gitignore @@ -12,8 +12,5 @@ *.out #VSCode +.vscode .vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json \ No newline at end of file diff --git a/2020/inputs/day_1 b/2020/inputs/day_1 new file mode 100644 index 0000000..f46283c --- /dev/null +++ b/2020/inputs/day_1 @@ -0,0 +1,200 @@ +1837 +1585 +1894 +1715 +1947 +1603 +1746 +1911 +1939 +1791 +1800 +1479 +1138 +1810 +1931 +1833 +1470 +1882 +1725 +1496 +1890 +1862 +1990 +1958 +1997 +1844 +1524 +541 +2001 +1591 +1687 +1941 +1940 +1561 +1813 +1654 +1500 +1575 +1826 +2006 +679 +1660 +1679 +1631 +2008 +575 +1583 +1883 +1904 +1436 +1650 +1532 +1907 +1803 +1693 +1700 +359 +1516 +1625 +1908 +1994 +1910 +1644 +1706 +1781 +1639 +1662 +1712 +1796 +1915 +1550 +1721 +1697 +1917 +1665 +1646 +1968 +1881 +1893 +1468 +1678 +1774 +285 +1754 +1856 +1677 +1823 +1802 +1681 +1587 +1767 +1711 +1900 +1983 +1787 +1996 +1726 +1982 +1971 +1553 +1542 +1863 +2002 +1831 +1891 +1555 +2000 +1847 +1783 +1873 +1761 +1742 +1534 +1993 +1898 +1973 +1974 +1597 +1540 +1581 +1864 +1452 +1637 +1649 +1886 +1965 +1460 +1664 +1701 +1647 +1812 +1937 +1902 +2004 +1991 +1718 +1887 +1606 +1748 +1737 +1608 +1641 +1710 +1724 +705 +1985 +1571 +1805 +131 +1788 +1707 +1513 +1615 +1897 +1476 +1927 +1745 +1926 +1839 +1807 +1955 +1692 +1645 +1699 +1471 +1604 +1830 +1622 +1972 +1866 +1814 +1816 +1855 +1820 +1034 +1673 +1704 +1969 +1580 +1980 +1739 +1896 +434 +497 +1851 +1933 +458 +1521 +1551 +1762 +2010 +1614 +1840 +1747 +1875 +1836 +1895 +1518 +1825 +1987 diff --git a/2020/solutions/day_1.py b/2020/solutions/day_1.py new file mode 100644 index 0000000..d24a269 --- /dev/null +++ b/2020/solutions/day_1.py @@ -0,0 +1,43 @@ +"""AOC Day 1""" + +import pathlib +import time + +def read_input(input_path: str) -> list: + """take input file path and return appropriate data structure""" + with open(input_path, 'r') as input_file: + entries = list() + for entry in input_file.readlines(): + entries.append(int(entry)) + return entries + +def part1(entries: list) -> int: + """part1 solver take a set of int and return an int""" + for x in entries: + complement = 2020 - x + if complement in entries: + return x * complement + return None + +def part2(entries: list) -> int: + """part2 solver take a set of int and return an int""" + for x, i in enumerate(entries): + for y in entries[i:]: + complement = 2020 - x - y + if complement in entries: + return x * y * complement + return None + + +def main(): + """main function""" + input_path = str(pathlib.Path.cwd()) + "/inputs/" + str(pathlib.Path(__file__).stem) + entries = read_input(input_path) + start_time = time.time() + print("Part 1: %d" % part1(entries)) + print("Part 2: %d" % part2(entries)) + end_time = time.time() + print("Execution time: %f" % (end_time-start_time)) + +if __name__ == "__main__": + main()