parent
46fba21c1d
commit
ce766388fd
@ -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}') |
@ -0,0 +1 @@ |
|||||||
|
pytest |
Loading…
Reference in new issue