initial commit, finish day 1

master
CptCaptain 4 years ago
parent 46fba21c1d
commit ce766388fd
  1. 200
      day1/input.txt
  2. 56
      day1/report_repair.py
  3. 1
      requirements.txt

@ -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

@ -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}')
Loading…
Cancel
Save