2020 Day 01

This commit is contained in:
Akumatic 2020-12-01 14:15:35 +01:00
parent fa89caacbf
commit 8322410ae7
5 changed files with 292 additions and 0 deletions

32
2020/01/README.md Normal file
View 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
View 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
View 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
View File

@ -0,0 +1,2 @@
Part 1: 658899
Part 2: 155806250

30
2020/README.md Normal file
View File

@ -0,0 +1,30 @@
# Advent of Code - 2020
Copyright (c) Eric Wastl
#### [Direct Link](https://adventofcode.com/2020)
## Intro
After saving Christmas [five years in a row](https://adventofcode.com/events), you've decided to take a vacation at a nice resort on a tropical island. Surely, Christmas will go on without you.
The tropical island has its own currency and is entirely cash-only. The gold coins used there have a little picture of a starfish; the locals just call them **stars**. None of the currency exchanges seem to have heard of them, but somehow, you'll need to find fifty of these coins by the time you arrive so you can pay the deposit on your room.
To save your vacation, you need to get all **fifty stars** by December 25th.
Collect stars by solving puzzles. Two puzzles will be made available on each day in the Advent calendar; the second puzzle is unlocked when you complete the first. Each puzzle grants **one star**. Good luck!
## Overview
| Day | Part 1 | Part 2 ||Day | Part 1 | Part 2 |
| --- | --- | --- |---| --- | --- | --- |
| 01 | :white_check_mark: | :white_check_mark: || 02 | | |
| 03 | | || 04 | | |
| 05 | | || 06 | | |
| 07 | | || 08 | | |
| 09 | | || 10 | | |
| 11 | | || 12 | | |
| 13 | | || 14 | | |
| 15 | | || 16 | | |
| 17 | | || 18 | | |
| 19 | | || 20 | | |
| 21 | | || 22 | | |
| 23 | | || 24 | | |
| 25 | | |||||