2020 Day 01
This commit is contained in:
32
2020/01/README.md
Normal file
32
2020/01/README.md
Normal file
@ -0,0 +1,32 @@
|
||||
# 2020 Day 1: Report Repair
|
||||
Copyright (c) Eric Wastl
|
||||
#### [Direct Link](https://adventofcode.com/2020/day/1)
|
||||
|
||||
## Part 1
|
||||
|
||||
Before you leave, the Elves in accounting just need you to fix your **expense report** (your puzzle input); apparently, something isn't quite adding up.
|
||||
|
||||
Specifically, they need you to **find the two entries that sum to `2020`** and then multiply those two numbers together.
|
||||
|
||||
For example, suppose your expense report contained the following:
|
||||
|
||||
```
|
||||
1721
|
||||
979
|
||||
366
|
||||
299
|
||||
675
|
||||
1456
|
||||
```
|
||||
|
||||
In this list, the two entries that sum to `2020` are `1721` and `299`. Multiplying them together produces `1721 * 299 = 514579`, so the correct answer is **`514579`**.
|
||||
|
||||
Of course, your expense report is much larger. **Find the two entries that sum to `2020`; what do you get if you multiply them together?**
|
||||
|
||||
## Part 2
|
||||
|
||||
The Elves in accounting are thankful for your help; one of them even offers you a starfish coin they had left over from a past vacation. They offer you a second one if you can find **three** numbers in your expense report that meet the same criteria.
|
||||
|
||||
Using the above example again, the three entries that sum to `2020` are `979`, `366`, and `675`. Multiplying them together produces the answer, **`241861950`**.
|
||||
|
||||
In your expense report, **what is the product of the three entries that sum to `2020`**?
|
28
2020/01/code.py
Normal file
28
2020/01/code.py
Normal file
@ -0,0 +1,28 @@
|
||||
""" https://adventofcode.com/2020/day/1 """
|
||||
|
||||
def readFile() -> list:
|
||||
with open(f"{__file__.rstrip('code.py')}input.txt", "r") as f:
|
||||
return [int(line[:-1]) for line in f.readlines()]
|
||||
|
||||
def part1(vals: list) -> int:
|
||||
for val in vals:
|
||||
if (2020 - val) in vals:
|
||||
return (2020 - val) * val
|
||||
|
||||
def part2(vals: list) -> int:
|
||||
for i in range(len(vals)):
|
||||
for j in range(i, len(vals)):
|
||||
if (2020 - vals[i] - vals[j]) in vals:
|
||||
return vals[i] * vals[j] * (2020 - vals[i] - vals[j])
|
||||
|
||||
|
||||
def test():
|
||||
test_input = [1721, 979, 366, 299, 675, 1456]
|
||||
assert part1(test_input) == 514579
|
||||
assert part2(test_input) == 241861950
|
||||
|
||||
if __name__ == "__main__":
|
||||
test()
|
||||
vals = readFile()
|
||||
print(f"Part 1: {part1(vals)}")
|
||||
print(f"Part 2: {part2(vals)}")
|
200
2020/01/input.txt
Normal file
200
2020/01/input.txt
Normal file
@ -0,0 +1,200 @@
|
||||
1650
|
||||
1174
|
||||
1156
|
||||
1874
|
||||
1958
|
||||
1918
|
||||
1980
|
||||
1588
|
||||
1863
|
||||
1656
|
||||
1843
|
||||
1738
|
||||
2001
|
||||
1883
|
||||
1941
|
||||
1602
|
||||
1881
|
||||
1927
|
||||
1284
|
||||
1474
|
||||
1942
|
||||
1992
|
||||
1925
|
||||
1990
|
||||
1831
|
||||
1907
|
||||
1914
|
||||
1815
|
||||
1921
|
||||
1589
|
||||
1224
|
||||
1148
|
||||
1223
|
||||
935
|
||||
1726
|
||||
1828
|
||||
1838
|
||||
1611
|
||||
1960
|
||||
1668
|
||||
1744
|
||||
1566
|
||||
1902
|
||||
1203
|
||||
1975
|
||||
1225
|
||||
2000
|
||||
1678
|
||||
1950
|
||||
572
|
||||
1812
|
||||
1568
|
||||
1484
|
||||
1767
|
||||
1509
|
||||
1658
|
||||
1127
|
||||
1870
|
||||
1098
|
||||
1294
|
||||
1310
|
||||
1483
|
||||
1865
|
||||
1967
|
||||
1856
|
||||
1963
|
||||
1929
|
||||
1119
|
||||
132
|
||||
1969
|
||||
1094
|
||||
1523
|
||||
1701
|
||||
1896
|
||||
1631
|
||||
1956
|
||||
1910
|
||||
1672
|
||||
1232
|
||||
1285
|
||||
1761
|
||||
1649
|
||||
1931
|
||||
1959
|
||||
1191
|
||||
1846
|
||||
1908
|
||||
1976
|
||||
1500
|
||||
1940
|
||||
1924
|
||||
1521
|
||||
1989
|
||||
1635
|
||||
1102
|
||||
1114
|
||||
1948
|
||||
2007
|
||||
1964
|
||||
1926
|
||||
1590
|
||||
1900
|
||||
1690
|
||||
1880
|
||||
1596
|
||||
1395
|
||||
1373
|
||||
1937
|
||||
1833
|
||||
1845
|
||||
1949
|
||||
1128
|
||||
1218
|
||||
1928
|
||||
1912
|
||||
1893
|
||||
1869
|
||||
960
|
||||
1813
|
||||
1645
|
||||
1490
|
||||
1318
|
||||
1934
|
||||
1259
|
||||
2005
|
||||
1522
|
||||
1270
|
||||
1089
|
||||
1674
|
||||
1997
|
||||
1112
|
||||
1954
|
||||
1769
|
||||
1829
|
||||
1814
|
||||
1922
|
||||
1904
|
||||
1894
|
||||
1595
|
||||
1103
|
||||
237
|
||||
1943
|
||||
1364
|
||||
1906
|
||||
1971
|
||||
1998
|
||||
1461
|
||||
1606
|
||||
1911
|
||||
1545
|
||||
1952
|
||||
1917
|
||||
1582
|
||||
1994
|
||||
1946
|
||||
1935
|
||||
1844
|
||||
1938
|
||||
1633
|
||||
2004
|
||||
1132
|
||||
1530
|
||||
1915
|
||||
1982
|
||||
1871
|
||||
1852
|
||||
1613
|
||||
1476
|
||||
1216
|
||||
1834
|
||||
1939
|
||||
409
|
||||
1895
|
||||
1120
|
||||
1194
|
||||
1135
|
||||
1899
|
||||
1901
|
||||
1439
|
||||
485
|
||||
1855
|
||||
1136
|
||||
200
|
||||
1887
|
||||
250
|
||||
1930
|
||||
1506
|
||||
1945
|
||||
1988
|
||||
1170
|
||||
1575
|
||||
1872
|
||||
1261
|
||||
1137
|
||||
1978
|
||||
1537
|
||||
1897
|
||||
1837
|
||||
1753
|
||||
1913
|
2
2020/01/solution.txt
Normal file
2
2020/01/solution.txt
Normal file
@ -0,0 +1,2 @@
|
||||
Part 1: 658899
|
||||
Part 2: 155806250
|
Reference in New Issue
Block a user