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