initial commit, finish day 1
This commit is contained in:
parent
46fba21c1d
commit
ce766388fd
200
day1/input.txt
Normal file
200
day1/input.txt
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
1227
|
||||||
|
1065
|
||||||
|
329
|
||||||
|
1063
|
||||||
|
1889
|
||||||
|
1700
|
||||||
|
1805
|
||||||
|
1373
|
||||||
|
389
|
||||||
|
1263
|
||||||
|
1276
|
||||||
|
1136
|
||||||
|
1652
|
||||||
|
1981
|
||||||
|
1406
|
||||||
|
1249
|
||||||
|
1197
|
||||||
|
1379
|
||||||
|
1050
|
||||||
|
1791
|
||||||
|
1703
|
||||||
|
2001
|
||||||
|
1842
|
||||||
|
1707
|
||||||
|
1486
|
||||||
|
1204
|
||||||
|
1821
|
||||||
|
1807
|
||||||
|
1712
|
||||||
|
1871
|
||||||
|
1599
|
||||||
|
1390
|
||||||
|
1219
|
||||||
|
1612
|
||||||
|
1980
|
||||||
|
1857
|
||||||
|
1511
|
||||||
|
1702
|
||||||
|
1455
|
||||||
|
1303
|
||||||
|
1052
|
||||||
|
1754
|
||||||
|
1545
|
||||||
|
1488
|
||||||
|
1848
|
||||||
|
1236
|
||||||
|
1549
|
||||||
|
1887
|
||||||
|
1970
|
||||||
|
1123
|
||||||
|
1686
|
||||||
|
1404
|
||||||
|
1688
|
||||||
|
1106
|
||||||
|
1296
|
||||||
|
401
|
||||||
|
1829
|
||||||
|
1693
|
||||||
|
1389
|
||||||
|
1957
|
||||||
|
914
|
||||||
|
1176
|
||||||
|
1348
|
||||||
|
1275
|
||||||
|
1624
|
||||||
|
1401
|
||||||
|
1045
|
||||||
|
1396
|
||||||
|
1352
|
||||||
|
1569
|
||||||
|
1060
|
||||||
|
1235
|
||||||
|
1679
|
||||||
|
1503
|
||||||
|
1340
|
||||||
|
1872
|
||||||
|
1410
|
||||||
|
1077
|
||||||
|
958
|
||||||
|
1681
|
||||||
|
1189
|
||||||
|
1466
|
||||||
|
1087
|
||||||
|
1852
|
||||||
|
1293
|
||||||
|
1139
|
||||||
|
1300
|
||||||
|
1323
|
||||||
|
661
|
||||||
|
1388
|
||||||
|
1983
|
||||||
|
1325
|
||||||
|
1112
|
||||||
|
1774
|
||||||
|
1858
|
||||||
|
1785
|
||||||
|
1616
|
||||||
|
1255
|
||||||
|
1198
|
||||||
|
1354
|
||||||
|
1124
|
||||||
|
1834
|
||||||
|
1417
|
||||||
|
1918
|
||||||
|
1496
|
||||||
|
33
|
||||||
|
1150
|
||||||
|
1861
|
||||||
|
1172
|
||||||
|
2006
|
||||||
|
1199
|
||||||
|
1558
|
||||||
|
1919
|
||||||
|
1620
|
||||||
|
1613
|
||||||
|
1710
|
||||||
|
1477
|
||||||
|
1592
|
||||||
|
1709
|
||||||
|
1909
|
||||||
|
1670
|
||||||
|
1922
|
||||||
|
1840
|
||||||
|
1768
|
||||||
|
1982
|
||||||
|
1193
|
||||||
|
1736
|
||||||
|
1877
|
||||||
|
1770
|
||||||
|
1191
|
||||||
|
1433
|
||||||
|
1072
|
||||||
|
1148
|
||||||
|
1225
|
||||||
|
1147
|
||||||
|
1171
|
||||||
|
1424
|
||||||
|
1913
|
||||||
|
1228
|
||||||
|
1339
|
||||||
|
1814
|
||||||
|
1504
|
||||||
|
1251
|
||||||
|
1240
|
||||||
|
1272
|
||||||
|
1500
|
||||||
|
1927
|
||||||
|
1428
|
||||||
|
1641
|
||||||
|
1453
|
||||||
|
1729
|
||||||
|
1976
|
||||||
|
1808
|
||||||
|
1180
|
||||||
|
1024
|
||||||
|
1108
|
||||||
|
1085
|
||||||
|
1669
|
||||||
|
1636
|
||||||
|
1005
|
||||||
|
1520
|
||||||
|
1929
|
||||||
|
1626
|
||||||
|
1551
|
||||||
|
1234
|
||||||
|
1988
|
||||||
|
1256
|
||||||
|
1524
|
||||||
|
1571
|
||||||
|
1506
|
||||||
|
1977
|
||||||
|
1749
|
||||||
|
1408
|
||||||
|
1540
|
||||||
|
1934
|
||||||
|
1810
|
||||||
|
1328
|
||||||
|
1910
|
||||||
|
1478
|
||||||
|
1600
|
||||||
|
1699
|
||||||
|
1413
|
||||||
|
1446
|
||||||
|
1798
|
||||||
|
1013
|
||||||
|
1998
|
||||||
|
1661
|
||||||
|
1058
|
||||||
|
1051
|
||||||
|
1220
|
||||||
|
1447
|
||||||
|
1675
|
||||||
|
1912
|
||||||
|
1668
|
||||||
|
1932
|
||||||
|
1962
|
||||||
|
1055
|
||||||
|
1757
|
||||||
|
1116
|
||||||
|
1090
|
56
day1/report_repair.py
Normal file
56
day1/report_repair.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import pytest
|
||||||
|
from itertools import combinations
|
||||||
|
from typing import Tuple, List
|
||||||
|
from math import prod
|
||||||
|
|
||||||
|
|
||||||
|
def test_find_sum_two():
|
||||||
|
test_string = """
|
||||||
|
1721
|
||||||
|
979
|
||||||
|
366
|
||||||
|
299
|
||||||
|
675
|
||||||
|
1456
|
||||||
|
"""
|
||||||
|
assert find_sum(intify_input(test_string), 2) == (1721, 299)
|
||||||
|
|
||||||
|
|
||||||
|
def test_find_sum_three():
|
||||||
|
test_string = """
|
||||||
|
1721
|
||||||
|
979
|
||||||
|
366
|
||||||
|
299
|
||||||
|
675
|
||||||
|
145"""
|
||||||
|
assert find_sum(intify_input(test_string), 3) == (979, 366, 675)
|
||||||
|
|
||||||
|
|
||||||
|
def read_input_data(path: str) -> str:
|
||||||
|
with open(path, 'r') as f:
|
||||||
|
data = f.read()
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def find_sum(data: List[int], n_summands: int = 2, target: int = 2020) -> Tuple[int, int]:
|
||||||
|
for combo in combinations(data, n_summands):
|
||||||
|
if sum(combo) == target:
|
||||||
|
print(f'sum({combo}) == {target}')
|
||||||
|
return combo
|
||||||
|
|
||||||
|
|
||||||
|
def produce_result(data_path: str, n_summands) -> int:
|
||||||
|
data = intify_input(read_input_data(data_path))
|
||||||
|
combo = find_sum(data, n_summands)
|
||||||
|
return prod(combo)
|
||||||
|
|
||||||
|
|
||||||
|
def intify_input(data):
|
||||||
|
data = [int(num) for num in data.split('\n') if num]
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
result = produce_result('input.txt', 3)
|
||||||
|
print(f'Result: {result}')
|
1
requirements.txt
Normal file
1
requirements.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
pytest
|
Loading…
Reference in New Issue
Block a user