commit 8844d186fa6279ddf206f5cb96d112d15f7f21b5 Author: Tom Weber Date: Sun Dec 12 11:13:52 2021 +0100 first week diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d17dae --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.venv diff --git a/day1.py b/day1.py new file mode 100644 index 0000000..f2c690a --- /dev/null +++ b/day1.py @@ -0,0 +1,11 @@ +filename = "inputs/day1.input" +file = open(filename, "rb").readlines() + +inputs = file + +counter = 0 +for i in range(len(inputs) - 1): + if int(inputs[i + 1]) > int(inputs[i]): + counter += 1 + +print(counter) diff --git a/day1_2.py b/day1_2.py new file mode 100644 index 0000000..c8dff62 --- /dev/null +++ b/day1_2.py @@ -0,0 +1,10 @@ +filename = "inputs/day1.input" +file = open(filename, "rb").readlines() +inputs = file +inputs = [int(x) for x in inputs] +counter = 0 +for i in range(len(inputs) - 3): + if sum(inputs[i + 1 : i + 4]) > sum(inputs[i : i + 3]): + counter += 1 + +print(counter) diff --git a/day2_1.py b/day2_1.py new file mode 100644 index 0000000..af085f1 --- /dev/null +++ b/day2_1.py @@ -0,0 +1,17 @@ +filename = "inputs/day2.input" +file = open(filename, "rb").readlines() +inputs = file + +x = 0 +y = 0 + +for i in range(len(inputs)): + command = inputs[i].decode("utf-8").split() + if command[0] == "forward": + x += int(command[1]) + if command[0] == "up": + y -= int(command[1]) + if command[0] == "down": + y += int(command[1]) + +print(x * y) diff --git a/day2_2.py b/day2_2.py new file mode 100644 index 0000000..cb430a1 --- /dev/null +++ b/day2_2.py @@ -0,0 +1,19 @@ +filename = "inputs/day2.input" +file = open(filename, "rb").readlines() +inputs = file + +horiz = 0 +depth = 0 +aim = 0 + +for i in range(len(inputs)): + command = inputs[i].decode("utf-8").split() + if command[0] == "forward": + horiz += int(command[1]) + depth += aim * int(command[1]) + if command[0] == "up": + aim -= int(command[1]) + if command[0] == "down": + aim += int(command[1]) + +print(horiz * depth) diff --git a/day3_1.py b/day3_1.py new file mode 100644 index 0000000..42b5f8e --- /dev/null +++ b/day3_1.py @@ -0,0 +1,23 @@ +import numpy as np + +filename = "inputs/day3.input" +file = open(filename, "rb").readlines() +inputs = file +inputs = [list(y.decode().replace("\n", "")) for y in inputs] + +mat = np.array(inputs, dtype=int) + +ones = np.count_nonzero(mat, axis=0, keepdims=True) + +gamma = 0 +epsilon = 0 + +for i in ones[0]: + if i > 500: + gamma = gamma * 10 + 1 + epsilon = epsilon * 10 + else: + gamma = gamma * 10 + epsilon = epsilon * 10 + 1 + +print(int(str(gamma), 2) * int(str(epsilon), 2)) diff --git a/day3_2.py b/day3_2.py new file mode 100644 index 0000000..afe2f20 --- /dev/null +++ b/day3_2.py @@ -0,0 +1,34 @@ +import numpy as np + +filename = "inputs/day3.input" +file = open(filename, "rb").readlines() +inputs = file +inputs = [list(y.decode().replace("\n", "")) for y in inputs] + +oxymat = np.array(inputs, dtype=int) +comat = np.array(inputs, dtype=int) + +for i in range(oxymat.shape[1]): + oxyones = np.count_nonzero(oxymat, axis=0, keepdims=True) + coones = np.count_nonzero(comat, axis=0, keepdims=True) + + print(oxymat) + if oxymat.shape[0] > 1: + if oxyones[0, i] >= (oxymat.shape[0] - oxyones[0, i]): + oxymat = oxymat[oxymat[:, i] == 1] + else: + oxymat = oxymat[oxymat[:, i] == 0] + + if comat.shape[0] > 1: + if coones[0, i] >= (comat.shape[0] - coones[0, i]): + comat = comat[comat[:, i] == 0] + else: + comat = comat[comat[:, i] == 1] + +print(oxymat[0], oxymat[0].dot(2 ** np.arange(oxymat[0].size)[::-1])) +print(comat[0], comat[0].dot(2 ** np.arange(comat[0].size)[::-1])) + +print( + oxymat[0].dot(2 ** np.arange(oxymat[0].size)[::-1]) + * comat[0].dot(2 ** np.arange(comat[0].size)[::-1]), +) diff --git a/day4_1.py b/day4_1.py new file mode 100644 index 0000000..4d5167f --- /dev/null +++ b/day4_1.py @@ -0,0 +1,41 @@ +import numpy as np + +numbers_file = "inputs/day4_1.input" +numbers = open(numbers_file, "rb").read().decode("utf-8").split(",") +numbers = [int(x) for x in numbers] +boards_file = "inputs/day4_2.input" +boards = open(boards_file, "rb").readlines() +boards = [x.decode().replace("\n", "") for x in boards] +boards = [x.split() for x in boards if len(x) > 0] +boards = np.array(boards, dtype=int).reshape(-1, 5, 5) + + +def is_solved(board): + if -5 in np.sum(board, axis=0): + return True + if -5 in np.sum(board, axis=1): + return True + else: + return False + + +def score_unmarked(board): + board = np.maximum(0, board) + return np.sum(board) + + +solved = False + +for number in numbers: + boards[boards == number] = -1 + for board in boards: + if is_solved(board): + solved_board = board + solved = True + last_number = number + if solved: + break + + +score = score_unmarked(solved_board) +print(last_number * score) diff --git a/day4_2.py b/day4_2.py new file mode 100644 index 0000000..e0fb750 --- /dev/null +++ b/day4_2.py @@ -0,0 +1,46 @@ +import numpy as np + +numbers_file = "inputs/day4_1.input" +numbers = open(numbers_file, "rb").read().decode("utf-8").split(",") +numbers = [int(x) for x in numbers] +boards_file = "inputs/day4_2.input" +boards = open(boards_file, "rb").readlines() +boards = [x.decode().replace("\n", "") for x in boards] +boards = [x.split() for x in boards if len(x) > 0] +boards = np.array(boards, dtype=int).reshape(-1, 5, 5) +n_boards = boards.shape[0] + + +def is_solved(board): + if -5 in np.sum(board, axis=0): + return True + if -5 in np.sum(board, axis=1): + return True + else: + return False + + +def score_unmarked(board): + board = np.maximum(0, board) + return np.sum(board) + + +solved = False +solved_boards = 0 +current_number = 0 +solved_boards = [] +last_board = 0 + +for number in numbers: + boards[boards == number] = -1 + for i in range(boards.shape[0]): + if is_solved(boards[i]) and (i not in solved_boards): + solved_boards.append(i) + if len(solved_boards) == n_boards: + last_board = i + last_number = number + if len(solved_boards) == n_boards: + break + +print(score_unmarked(boards[last_board]) * last_number) +# score = score_unmarked(current_board) diff --git a/day5_1.py b/day5_1.py new file mode 100644 index 0000000..b2f4bc9 --- /dev/null +++ b/day5_1.py @@ -0,0 +1,32 @@ +import numpy as np + +file = "inputs/day5.input" +numbers = open(file, "rb").readlines() +numbers = [x.decode().replace("\n", "").split(" ") for x in numbers] +start_x = [int(x[0].split(",")[0]) for x in numbers] +end_x = [int(x[2].split(",")[0]) for x in numbers] +start_y = [int(x[0].split(",")[1]) for x in numbers] +end_y = [int(x[2].split(",")[1]) for x in numbers] +max_val = max(max(end_x), max(end_y)) + +vents = np.zeros((max_val + 1, max_val + 1)) + +for i in range(len(start_x)): + if start_x[i] == end_x[i]: + if start_y[i] < end_y[i]: + start = start_y[i] + end = end_y[i] + else: + start = end_y[i] + end = start_y[i] + vents[start_x[i], start : end + 1] += 1 + if start_y[i] == end_y[i]: + if start_x[i] < end_x[i]: + start = start_x[i] + end = end_x[i] + else: + start = end_x[i] + end = start_x[i] + vents[start : end + 1, start_y[i]] += 1 + +print(len(vents[vents >= 2])) diff --git a/day5_2.py b/day5_2.py new file mode 100644 index 0000000..edd8bab --- /dev/null +++ b/day5_2.py @@ -0,0 +1,50 @@ +import numpy as np + +file = "inputs/day5.input" +numbers = open(file, "rb").readlines() +numbers = [x.decode().replace("\n", "").split(" ") for x in numbers] +start_x = [int(x[0].split(",")[0]) for x in numbers] +end_x = [int(x[2].split(",")[0]) for x in numbers] +start_y = [int(x[0].split(",")[1]) for x in numbers] +end_y = [int(x[2].split(",")[1]) for x in numbers] +max_val = max(max(end_x), max(end_y)) + +vents = np.zeros((max_val + 1, max_val + 1)) + + +def draw_diagonal(mat, x1, x2, y1, y2): + length = abs(x2 - x1) + if x1 < x2: + xincr = 1 + else: + xincr = -1 + if y1 < y2: + yincr = 1 + else: + yincr = -1 + for i in range(length + 1): + mat[y1 + i * yincr, x1 + i * xincr] += 1 + return mat + + +for i in range(len(start_x)): + if start_y[i] < end_y[i]: + y1 = start_y[i] + y2 = end_y[i] + else: + y1 = end_y[i] + y2 = start_y[i] + if start_x[i] < end_x[i]: + x1 = start_x[i] + x2 = end_x[i] + else: + x1 = end_x[i] + x2 = start_x[i] + if start_x[i] == end_x[i]: + vents[y1 : y2 + 1, start_x[i]] += 1 + elif start_y[i] == end_y[i]: + vents[start_y[i], x1 : x2 + 1] += 1 + else: + vents = draw_diagonal(vents, start_x[i], end_x[i], start_y[i], end_y[i]) + +print(len(vents[vents >= 2])) diff --git a/day6_1.py b/day6_1.py new file mode 100644 index 0000000..d1ab5f3 --- /dev/null +++ b/day6_1.py @@ -0,0 +1,20 @@ +import numpy as np + +file = "inputs/day6.input" +numbers = [int(x) for x in open(file, "rb").read().decode().split(",")] + +days = 80 + +current_day = numbers + +for day in range(days): + next_day = [] + for fish in current_day: + if fish == 0: + next_day.append(6) + next_day.append(8) + else: + next_day.append(fish - 1) + current_day = next_day + +print(len(current_day)) diff --git a/day6_2.py b/day6_2.py new file mode 100644 index 0000000..acef09d --- /dev/null +++ b/day6_2.py @@ -0,0 +1,16 @@ +import numpy as np + +file = "inputs/day6.input" +numbers = [int(x) for x in open(file, "rb").read().decode().split(",")] +unique, counts = np.unique(numbers, return_counts=True) +fishies = [counts[unique == x][0] if (x in unique) else 0 for x in range(9)] +days = 256 + +for day in range(days): + labour_fishies = fishies[0] + for idx in range(len(fishies) - 1): + fishies[idx] = fishies[idx + 1] + fishies[6] += labour_fishies + fishies[8] = labour_fishies + +print(sum(fishies)) diff --git a/day7_1.py b/day7_1.py new file mode 100644 index 0000000..dd29b49 --- /dev/null +++ b/day7_1.py @@ -0,0 +1,8 @@ +import numpy as np + +file = "inputs/day7.input" +numbers = [int(x) for x in open(file, "rb").read().decode().split(",")] + +pos = np.median(numbers) + +print(int(sum(abs(numbers - pos)))) diff --git a/day7_2.py b/day7_2.py new file mode 100644 index 0000000..13a3468 --- /dev/null +++ b/day7_2.py @@ -0,0 +1,20 @@ +import numpy as np + +file = "inputs/day7.input" +numbers = [int(x) for x in open(file, "rb").read().decode().split(",")] + + +def dist(n): + return 0.5 * (n ** 2 + n) + + +min_fuel = 999999999 +best_pos = 0 + +for pos in range(max(numbers) + 1): + fuel = sum(dist(abs(numbers - np.array(pos)))) + if fuel < min_fuel: + min_fuel = fuel + best_pos = pos + +print(best_pos) diff --git a/day8_1.py b/day8_1.py new file mode 100644 index 0000000..2454295 --- /dev/null +++ b/day8_1.py @@ -0,0 +1,4 @@ +import numpy as np + +file = "inputs/day8.input" +numbers = open(file, "rb").readlines() diff --git a/inputs/day1.input b/inputs/day1.input new file mode 100644 index 0000000..33b623c --- /dev/null +++ b/inputs/day1.input @@ -0,0 +1,2000 @@ +140 +154 +165 +150 +151 +161 +172 +174 +166 +168 +176 +191 +192 +189 +190 +191 +202 +203 +206 +207 +167 +179 +204 +206 +208 +209 +216 +198 +200 +207 +217 +218 +223 +227 +228 +243 +241 +246 +278 +255 +256 +273 +295 +291 +288 +290 +303 +325 +301 +292 +291 +309 +313 +315 +319 +339 +340 +327 +336 +335 +340 +331 +334 +316 +317 +323 +324 +323 +312 +298 +291 +285 +288 +266 +267 +266 +258 +259 +257 +259 +250 +265 +270 +267 +271 +272 +277 +281 +277 +284 +291 +283 +284 +291 +292 +278 +285 +296 +294 +297 +298 +301 +300 +311 +310 +322 +320 +337 +334 +333 +331 +317 +323 +358 +362 +364 +371 +383 +424 +427 +438 +443 +441 +445 +444 +440 +458 +460 +459 +457 +455 +446 +440 +439 +438 +430 +422 +424 +438 +449 +450 +451 +443 +459 +458 +479 +473 +471 +478 +496 +498 +488 +512 +513 +523 +545 +544 +543 +539 +540 +553 +554 +553 +561 +565 +572 +576 +584 +586 +591 +603 +585 +600 +601 +599 +596 +587 +586 +587 +588 +598 +601 +599 +596 +588 +589 +595 +588 +586 +591 +598 +595 +597 +616 +615 +599 +598 +576 +570 +573 +599 +600 +601 +602 +604 +605 +617 +608 +607 +606 +607 +605 +604 +603 +601 +602 +584 +590 +597 +596 +600 +583 +579 +582 +576 +580 +583 +581 +582 +558 +566 +562 +581 +589 +570 +571 +566 +562 +564 +565 +567 +564 +557 +565 +566 +562 +564 +567 +568 +570 +554 +546 +548 +511 +510 +509 +507 +500 +513 +510 +513 +500 +502 +508 +527 +531 +539 +538 +545 +546 +548 +555 +557 +558 +561 +566 +567 +571 +570 +605 +627 +625 +615 +617 +588 +597 +599 +598 +609 +612 +611 +615 +617 +618 +630 +622 +619 +627 +674 +691 +695 +715 +734 +736 +737 +739 +753 +751 +759 +762 +732 +709 +711 +730 +733 +729 +746 +752 +755 +756 +791 +792 +793 +790 +786 +808 +811 +844 +834 +846 +820 +821 +838 +842 +844 +835 +840 +843 +844 +836 +837 +841 +843 +852 +863 +865 +870 +868 +863 +865 +868 +875 +886 +904 +909 +917 +905 +906 +905 +920 +919 +917 +911 +924 +899 +900 +915 +923 +940 +941 +921 +922 +896 +908 +911 +893 +892 +912 +896 +900 +882 +884 +901 +902 +901 +907 +886 +889 +888 +898 +899 +896 +899 +883 +900 +893 +929 +907 +911 +916 +910 +912 +906 +911 +915 +920 +921 +923 +921 +922 +905 +923 +922 +938 +939 +941 +940 +931 +960 +966 +973 +986 +988 +1008 +1016 +1014 +987 +993 +1004 +1006 +1004 +1024 +1031 +1032 +1034 +1025 +1022 +1008 +1007 +1010 +1009 +997 +1002 +1007 +1010 +1018 +1014 +1016 +1023 +1031 +1032 +1048 +1049 +1056 +1055 +1064 +1065 +1084 +1081 +1084 +1088 +1090 +1109 +1115 +1144 +1146 +1144 +1142 +1143 +1160 +1158 +1163 +1167 +1183 +1184 +1195 +1182 +1181 +1169 +1181 +1175 +1188 +1187 +1188 +1189 +1187 +1195 +1196 +1197 +1216 +1215 +1223 +1222 +1209 +1218 +1223 +1222 +1225 +1196 +1193 +1198 +1200 +1208 +1207 +1216 +1202 +1197 +1172 +1164 +1178 +1179 +1167 +1177 +1178 +1175 +1178 +1191 +1198 +1200 +1208 +1212 +1215 +1225 +1233 +1240 +1243 +1235 +1237 +1244 +1245 +1248 +1249 +1251 +1250 +1256 +1261 +1262 +1244 +1250 +1240 +1234 +1225 +1229 +1216 +1213 +1214 +1206 +1209 +1211 +1205 +1228 +1230 +1232 +1233 +1226 +1216 +1204 +1194 +1196 +1165 +1176 +1186 +1198 +1195 +1204 +1218 +1216 +1219 +1220 +1225 +1229 +1227 +1231 +1241 +1244 +1241 +1249 +1248 +1253 +1254 +1247 +1248 +1249 +1258 +1266 +1270 +1269 +1283 +1298 +1295 +1306 +1309 +1330 +1335 +1339 +1326 +1327 +1291 +1302 +1301 +1313 +1314 +1315 +1318 +1315 +1316 +1315 +1338 +1336 +1341 +1347 +1343 +1368 +1374 +1377 +1378 +1383 +1384 +1367 +1368 +1367 +1378 +1371 +1372 +1373 +1365 +1367 +1366 +1369 +1365 +1367 +1361 +1360 +1368 +1366 +1363 +1366 +1374 +1380 +1364 +1339 +1341 +1340 +1339 +1340 +1341 +1348 +1356 +1358 +1359 +1351 +1356 +1345 +1322 +1323 +1324 +1325 +1326 +1336 +1335 +1331 +1330 +1339 +1331 +1329 +1346 +1343 +1350 +1357 +1358 +1334 +1336 +1335 +1338 +1348 +1346 +1363 +1365 +1368 +1365 +1386 +1383 +1381 +1383 +1379 +1386 +1381 +1384 +1378 +1379 +1372 +1389 +1393 +1389 +1414 +1415 +1414 +1405 +1417 +1418 +1415 +1427 +1429 +1428 +1447 +1430 +1426 +1425 +1410 +1412 +1413 +1427 +1424 +1413 +1401 +1402 +1423 +1431 +1436 +1440 +1447 +1446 +1447 +1446 +1447 +1446 +1451 +1450 +1451 +1450 +1446 +1451 +1456 +1453 +1456 +1459 +1490 +1494 +1493 +1502 +1504 +1524 +1523 +1522 +1539 +1546 +1545 +1552 +1554 +1555 +1557 +1563 +1562 +1566 +1567 +1566 +1567 +1566 +1565 +1568 +1570 +1572 +1573 +1586 +1588 +1590 +1591 +1589 +1607 +1608 +1595 +1596 +1595 +1594 +1599 +1604 +1612 +1608 +1609 +1606 +1603 +1602 +1601 +1613 +1597 +1598 +1585 +1604 +1625 +1626 +1627 +1634 +1636 +1637 +1642 +1637 +1638 +1630 +1632 +1631 +1630 +1639 +1640 +1668 +1647 +1663 +1668 +1646 +1653 +1665 +1667 +1668 +1671 +1679 +1673 +1678 +1679 +1684 +1677 +1678 +1688 +1687 +1686 +1691 +1697 +1699 +1705 +1717 +1685 +1708 +1707 +1708 +1706 +1709 +1699 +1700 +1699 +1710 +1709 +1708 +1714 +1728 +1721 +1715 +1717 +1694 +1706 +1720 +1722 +1730 +1722 +1728 +1730 +1737 +1755 +1763 +1747 +1742 +1743 +1727 +1736 +1730 +1742 +1744 +1734 +1726 +1707 +1720 +1719 +1725 +1683 +1682 +1683 +1688 +1682 +1681 +1682 +1684 +1689 +1649 +1650 +1652 +1655 +1662 +1665 +1666 +1667 +1689 +1684 +1677 +1678 +1667 +1666 +1670 +1672 +1670 +1675 +1672 +1659 +1660 +1689 +1688 +1691 +1696 +1687 +1689 +1688 +1689 +1690 +1695 +1705 +1710 +1713 +1715 +1706 +1703 +1707 +1683 +1677 +1670 +1664 +1675 +1676 +1681 +1682 +1679 +1673 +1678 +1668 +1685 +1703 +1716 +1712 +1709 +1715 +1720 +1730 +1735 +1741 +1754 +1740 +1749 +1750 +1753 +1746 +1753 +1768 +1780 +1781 +1818 +1821 +1831 +1830 +1838 +1839 +1838 +1843 +1829 +1833 +1835 +1847 +1845 +1849 +1850 +1852 +1828 +1830 +1836 +1839 +1855 +1857 +1837 +1838 +1843 +1830 +1825 +1848 +1838 +1840 +1843 +1831 +1813 +1816 +1815 +1810 +1809 +1817 +1816 +1818 +1806 +1802 +1803 +1807 +1805 +1770 +1759 +1757 +1756 +1759 +1751 +1752 +1753 +1747 +1755 +1762 +1766 +1767 +1777 +1778 +1772 +1784 +1783 +1789 +1795 +1797 +1823 +1824 +1820 +1823 +1824 +1843 +1866 +1868 +1864 +1860 +1861 +1864 +1862 +1849 +1850 +1862 +1860 +1862 +1863 +1862 +1870 +1893 +1896 +1897 +1888 +1889 +1913 +1914 +1911 +1924 +1928 +1943 +1958 +1957 +1951 +1939 +1929 +1931 +1930 +1928 +1930 +1946 +1954 +1955 +1944 +1934 +1935 +1950 +1957 +1956 +1957 +1958 +1952 +1951 +1954 +1953 +1941 +1949 +1950 +1968 +1961 +1960 +1955 +1949 +1946 +1918 +1919 +1920 +1933 +1934 +1936 +1937 +1942 +1913 +1919 +1920 +1921 +1925 +1924 +1925 +1932 +1935 +1937 +1927 +1913 +1916 +1922 +1906 +1907 +1908 +1901 +1897 +1901 +1899 +1900 +1902 +1903 +1896 +1901 +1904 +1909 +1901 +1912 +1914 +1910 +1913 +1914 +1915 +1917 +1921 +1922 +1920 +1919 +1912 +1909 +1911 +1908 +1909 +1950 +1953 +1983 +1989 +1993 +1992 +1994 +1997 +1980 +1990 +1991 +2011 +2016 +2015 +2026 +2030 +2033 +2044 +2039 +2040 +2042 +2044 +2053 +2054 +2033 +2030 +2029 +2030 +2013 +2016 +2027 +2021 +2017 +2018 +2011 +2009 +2008 +2007 +2004 +1994 +1992 +1973 +1974 +1969 +1963 +1968 +1969 +1967 +1980 +1981 +1984 +1981 +1977 +1982 +2002 +2007 +2003 +2000 +2019 +2013 +2014 +2017 +2054 +2081 +2079 +2077 +2078 +2064 +2063 +2065 +2061 +2051 +2069 +2095 +2093 +2098 +2095 +2084 +2085 +2087 +2088 +2082 +2080 +2081 +2082 +2079 +2068 +2072 +2073 +2092 +2096 +2097 +2078 +2083 +2090 +2081 +2093 +2077 +2084 +2087 +2074 +2075 +2061 +2052 +2058 +2065 +2052 +2053 +2055 +2067 +2063 +2072 +2077 +2075 +2081 +2082 +2089 +2109 +2110 +2107 +2102 +2098 +2085 +2089 +2091 +2097 +2087 +2077 +2073 +2079 +2074 +2076 +2077 +2078 +2061 +2076 +2077 +2080 +2091 +2074 +2075 +2080 +2085 +2090 +2095 +2103 +2106 +2108 +2116 +2120 +2128 +2129 +2130 +2146 +2153 +2166 +2165 +2169 +2173 +2158 +2149 +2154 +2162 +2161 +2162 +2164 +2165 +2166 +2167 +2159 +2180 +2181 +2177 +2193 +2208 +2206 +2214 +2216 +2239 +2218 +2219 +2228 +2203 +2204 +2212 +2211 +2219 +2227 +2228 +2229 +2230 +2231 +2228 +2237 +2236 +2245 +2246 +2244 +2252 +2262 +2260 +2270 +2269 +2270 +2289 +2290 +2313 +2289 +2292 +2293 +2295 +2300 +2301 +2302 +2314 +2317 +2329 +2330 +2310 +2313 +2314 +2293 +2294 +2299 +2300 +2323 +2325 +2320 +2317 +2323 +2310 +2296 +2297 +2293 +2320 +2310 +2311 +2315 +2319 +2320 +2328 +2338 +2345 +2349 +2370 +2374 +2376 +2375 +2370 +2372 +2373 +2374 +2377 +2388 +2392 +2355 +2361 +2397 +2398 +2386 +2400 +2398 +2399 +2383 +2384 +2394 +2397 +2400 +2401 +2406 +2409 +2411 +2426 +2447 +2441 +2443 +2418 +2417 +2418 +2407 +2408 +2409 +2423 +2420 +2394 +2393 +2401 +2410 +2404 +2423 +2429 +2431 +2432 +2405 +2406 +2407 +2400 +2401 +2390 +2389 +2391 +2387 +2388 +2399 +2415 +2416 +2421 +2420 +2424 +2432 +2436 +2419 +2422 +2421 +2411 +2426 +2427 +2441 +2433 +2439 +2431 +2429 +2431 +2434 +2442 +2456 +2439 +2440 +2443 +2452 +2453 +2456 +2459 +2458 +2470 +2471 +2470 +2471 +2474 +2475 +2480 +2477 +2473 +2472 +2501 +2500 +2507 +2516 +2530 +2548 +2557 +2589 +2587 +2589 +2593 +2598 +2600 +2603 +2605 +2604 +2605 +2606 +2614 +2615 +2623 +2626 +2638 +2632 +2635 +2641 +2642 +2641 +2660 +2661 +2685 +2683 +2689 +2693 +2674 +2676 +2698 +2727 +2725 +2716 +2735 +2729 +2753 +2756 +2765 +2766 +2774 +2775 +2774 +2775 +2779 +2785 +2806 +2803 +2813 +2803 +2801 +2802 +2781 +2782 +2780 +2785 +2788 +2784 +2779 +2755 +2758 +2759 +2773 +2774 +2776 +2779 +2802 +2787 +2781 +2785 +2779 +2778 +2776 +2779 +2781 +2777 +2772 +2771 +2756 +2758 +2764 +2776 +2775 +2768 +2771 +2769 +2764 +2765 +2764 +2754 +2755 +2753 +2767 +2770 +2774 +2783 +2782 +2783 +2778 +2782 +2784 +2775 +2778 +2774 +2773 +2774 +2776 +2784 +2796 +2797 +2796 +2807 +2798 +2799 +2800 +2801 +2802 +2805 +2817 +2818 +2809 +2819 +2818 +2800 +2796 +2795 +2796 +2797 +2799 +2805 +2833 +2835 +2804 +2809 +2810 +2784 +2806 +2815 +2824 +2849 +2837 +2832 +2831 +2839 +2841 +2843 +2844 +2856 +2855 +2858 +2857 +2852 +2858 +2850 +2845 +2841 +2831 +2825 +2818 +2820 +2819 +2822 +2831 +2832 +2825 +2824 +2821 +2822 +2807 +2808 +2810 +2823 +2811 +2821 +2813 +2822 +2810 +2818 +2824 +2837 +2851 +2852 +2835 +2831 +2832 +2820 +2801 +2802 +2803 +2812 +2840 +2838 +2841 +2843 +2846 +2854 +2856 +2857 +2886 +2900 +2906 +2907 +2902 +2910 +2918 +2925 +2926 +2924 +2925 +2918 +2925 +2913 +2912 +2932 +2938 +2936 +2941 +2948 +2950 +2951 +2954 +2958 +2961 +2966 +2995 +2999 +3005 +3017 +3025 +3024 +3025 +3027 +3030 +3034 +3030 +3032 +3035 +3034 +3033 +3032 +3033 +3024 +3027 +3028 +3029 +3030 +3034 +3064 +3050 +3056 +3053 +3065 +3072 +3067 +3065 +3068 +3086 +3089 +3100 +3109 +3104 +3105 +3108 +3098 +3105 +3110 +3111 +3129 +3137 +3138 +3121 +3113 +3125 +3133 +3135 +3137 +3143 +3133 +3134 +3133 +3137 +3145 +3164 +3169 +3170 +3184 +3165 +3168 +3166 +3159 +3158 +3165 +3162 +3145 +3133 +3134 +3149 +3153 +3151 +3158 +3160 +3161 +3164 +3165 +3159 +3145 +3146 +3147 +3148 +3131 +3140 +3148 +3144 +3167 +3149 +3150 +3142 +3115 +3129 +3134 +3136 +3141 +3164 +3165 +3162 +3161 +3169 +3170 +3169 +3171 +3167 +3173 +3181 +3186 +3187 +3186 +3190 +3191 +3193 +3194 +3204 +3205 +3222 +3221 +3231 +3232 +3233 +3234 +3231 +3240 +3246 +3258 +3260 +3277 +3278 +3274 +3275 +3273 +3276 +3270 +3290 +3292 +3300 +3320 +3324 +3323 +3321 +3320 +3301 +3308 +3305 +3306 +3301 +3309 +3306 +3327 +3334 +3333 +3338 +3339 +3341 +3342 +3353 +3325 +3333 +3342 +3329 +3330 +3323 +3320 +3334 +3347 +3336 +3324 +3330 +3328 +3324 +3321 +3322 +3325 +3311 +3313 +3311 +3340 +3342 +3346 +3350 +3351 +3334 +3360 +3344 +3347 +3341 +3344 +3358 +3350 +3344 +3354 +3349 +3363 +3380 +3372 +3375 +3369 +3365 +3376 +3375 +3381 +3380 +3385 +3405 +3407 +3408 +3411 +3406 +3408 +3410 +3414 +3438 +3459 +3456 +3457 +3449 +3452 +3455 +3460 +3465 +3466 +3468 +3466 +3465 +3466 +3467 +3472 +3468 +3462 +3489 +3492 +3494 +3470 +3466 +3478 +3494 +3481 +3497 +3498 +3499 +3500 +3502 +3492 +3489 +3502 +3503 +3518 +3523 +3526 +3534 +3536 +3542 +3545 +3548 +3549 +3551 +3554 +3546 +3570 +3584 +3585 +3552 +3551 +3558 +3559 +3560 +3558 +3551 +3556 +3549 +3541 +3544 +3559 +3577 +3581 +3562 +3564 +3565 +3547 +3551 +3552 +3557 +3569 +3571 +3563 +3575 +3587 +3591 +3595 +3596 \ No newline at end of file diff --git a/inputs/day2.input b/inputs/day2.input new file mode 100644 index 0000000..c7e02c8 --- /dev/null +++ b/inputs/day2.input @@ -0,0 +1,1000 @@ +forward 2 +down 7 +down 8 +forward 9 +down 8 +forward 9 +forward 8 +down 3 +forward 8 +forward 5 +up 2 +down 9 +down 4 +forward 4 +forward 3 +down 8 +down 9 +forward 5 +down 1 +up 1 +forward 4 +up 5 +forward 2 +down 6 +forward 9 +forward 3 +forward 7 +down 6 +down 1 +forward 8 +down 3 +forward 1 +up 6 +down 1 +down 2 +forward 9 +down 7 +down 1 +down 7 +down 7 +up 5 +down 8 +forward 6 +up 8 +up 2 +forward 6 +up 1 +down 9 +forward 8 +forward 4 +up 3 +forward 7 +down 2 +down 8 +forward 5 +down 9 +up 4 +forward 7 +forward 5 +down 5 +down 5 +forward 3 +forward 2 +down 2 +up 4 +up 7 +down 8 +up 8 +forward 1 +up 4 +forward 4 +down 2 +forward 5 +forward 7 +down 4 +forward 8 +down 2 +forward 5 +forward 9 +forward 6 +forward 5 +down 5 +forward 4 +forward 3 +down 7 +down 8 +forward 9 +forward 7 +down 3 +down 6 +forward 4 +down 7 +up 9 +down 8 +up 7 +up 3 +forward 6 +forward 9 +down 2 +down 3 +down 1 +down 3 +forward 8 +forward 3 +forward 9 +down 5 +up 1 +up 2 +down 9 +up 9 +down 5 +down 9 +forward 1 +down 3 +down 5 +down 1 +forward 7 +down 6 +forward 7 +forward 4 +up 2 +up 1 +forward 9 +down 2 +down 6 +down 5 +down 6 +forward 8 +down 5 +forward 1 +forward 2 +down 7 +down 5 +down 7 +up 9 +down 9 +up 4 +down 7 +up 8 +down 9 +forward 3 +down 6 +down 2 +forward 9 +down 4 +up 7 +forward 3 +down 5 +forward 8 +forward 9 +down 2 +up 5 +forward 2 +forward 9 +up 5 +down 2 +forward 8 +forward 6 +down 7 +down 3 +forward 4 +forward 3 +forward 9 +up 4 +up 4 +forward 7 +up 3 +forward 6 +down 7 +up 8 +forward 2 +up 1 +down 6 +forward 4 +up 6 +up 6 +up 3 +forward 4 +forward 2 +forward 5 +forward 8 +down 9 +down 4 +down 3 +down 1 +down 6 +down 4 +down 5 +down 7 +down 5 +up 4 +forward 3 +down 4 +down 7 +down 7 +down 2 +forward 2 +forward 9 +up 6 +down 3 +up 9 +forward 8 +down 9 +up 2 +up 2 +up 2 +up 1 +down 6 +forward 9 +forward 2 +forward 2 +forward 2 +forward 5 +up 3 +down 7 +down 6 +down 8 +up 3 +up 9 +down 3 +forward 1 +forward 7 +down 7 +down 1 +forward 3 +down 7 +down 9 +down 7 +down 3 +up 2 +down 6 +up 6 +down 1 +up 2 +forward 7 +up 2 +down 7 +up 2 +down 9 +down 3 +forward 6 +down 5 +down 1 +forward 5 +down 2 +down 6 +down 1 +down 3 +down 3 +down 5 +forward 2 +forward 4 +forward 8 +forward 6 +forward 4 +forward 9 +up 8 +down 5 +forward 1 +down 1 +forward 1 +forward 6 +up 1 +down 6 +down 3 +forward 9 +forward 5 +forward 4 +up 3 +up 7 +down 2 +up 4 +up 2 +down 1 +forward 6 +forward 9 +forward 4 +forward 2 +down 8 +forward 4 +forward 3 +up 5 +down 4 +forward 3 +down 8 +down 5 +down 5 +forward 1 +forward 6 +forward 4 +forward 5 +forward 9 +forward 5 +down 4 +forward 3 +forward 8 +down 8 +down 1 +up 4 +down 4 +up 7 +forward 2 +forward 6 +down 3 +down 5 +down 5 +down 8 +up 3 +down 2 +forward 4 +forward 2 +forward 4 +forward 9 +up 2 +down 7 +up 7 +down 2 +forward 4 +up 7 +forward 4 +down 2 +forward 7 +up 2 +down 3 +forward 5 +down 7 +down 2 +up 2 +up 1 +up 7 +up 9 +down 3 +forward 1 +forward 3 +down 2 +down 3 +forward 6 +down 7 +forward 9 +down 9 +forward 3 +forward 2 +down 1 +up 9 +down 4 +forward 4 +up 4 +forward 7 +up 3 +down 4 +down 9 +down 3 +forward 7 +down 6 +down 7 +down 6 +up 5 +forward 3 +forward 9 +up 2 +up 4 +up 9 +down 2 +forward 5 +up 1 +down 7 +down 5 +up 2 +forward 8 +down 8 +up 3 +forward 4 +down 9 +forward 6 +down 9 +down 5 +forward 6 +down 8 +up 6 +down 3 +forward 6 +forward 3 +down 3 +down 5 +down 7 +down 1 +down 5 +down 7 +down 5 +forward 3 +down 2 +forward 4 +up 4 +up 1 +up 7 +forward 1 +forward 5 +down 4 +down 8 +down 3 +forward 4 +down 3 +up 7 +down 6 +forward 9 +up 8 +forward 2 +forward 5 +down 6 +up 4 +forward 8 +forward 5 +down 6 +forward 2 +down 7 +forward 3 +forward 1 +forward 6 +down 9 +up 6 +down 4 +down 2 +up 8 +forward 4 +down 8 +forward 8 +up 9 +forward 7 +down 6 +up 9 +down 4 +up 6 +down 4 +down 3 +up 7 +up 4 +forward 5 +up 9 +down 9 +up 6 +down 3 +forward 8 +down 9 +forward 7 +up 3 +up 9 +forward 8 +down 3 +forward 3 +forward 5 +down 6 +forward 3 +down 4 +up 6 +forward 3 +forward 7 +down 1 +down 6 +down 4 +forward 6 +up 6 +down 5 +down 6 +down 4 +up 2 +down 7 +down 9 +down 2 +down 6 +forward 3 +forward 4 +down 5 +up 5 +down 5 +forward 3 +forward 6 +down 4 +down 7 +up 2 +forward 7 +down 7 +up 6 +up 3 +forward 9 +forward 8 +up 6 +forward 2 +down 2 +forward 8 +forward 4 +up 6 +forward 6 +down 8 +up 3 +up 5 +forward 6 +up 8 +down 1 +down 4 +up 9 +forward 6 +up 5 +down 6 +down 8 +down 9 +forward 5 +up 3 +down 7 +forward 3 +forward 6 +down 3 +down 1 +down 9 +up 9 +down 4 +down 7 +forward 2 +forward 4 +down 7 +forward 7 +up 5 +down 9 +up 7 +down 4 +forward 6 +down 5 +forward 4 +up 8 +down 4 +down 7 +forward 3 +down 6 +down 1 +forward 3 +down 4 +up 6 +up 5 +up 7 +forward 5 +down 4 +forward 7 +up 1 +down 4 +forward 4 +down 2 +down 6 +forward 1 +up 3 +up 8 +forward 6 +forward 6 +down 5 +forward 7 +down 6 +down 8 +forward 6 +down 6 +forward 3 +forward 5 +down 9 +down 5 +up 4 +down 5 +down 1 +forward 1 +forward 5 +down 2 +forward 5 +forward 2 +forward 5 +up 3 +forward 5 +up 8 +forward 9 +forward 3 +down 2 +up 2 +forward 7 +down 5 +up 1 +down 3 +down 7 +up 2 +forward 8 +forward 6 +forward 1 +forward 6 +forward 6 +down 5 +forward 4 +down 5 +forward 9 +forward 7 +down 7 +down 7 +down 9 +forward 4 +down 4 +forward 3 +down 6 +forward 5 +down 9 +forward 6 +up 7 +down 3 +up 4 +up 4 +down 1 +down 2 +up 5 +forward 6 +forward 2 +down 7 +up 6 +up 3 +down 8 +forward 1 +down 3 +up 9 +down 2 +forward 6 +forward 1 +forward 4 +up 1 +down 8 +down 2 +down 9 +down 5 +forward 3 +down 1 +down 6 +down 5 +down 3 +forward 1 +forward 9 +up 2 +down 3 +down 3 +down 9 +down 7 +forward 6 +forward 8 +forward 4 +up 7 +down 2 +forward 3 +forward 1 +up 4 +forward 8 +up 9 +forward 8 +forward 2 +down 5 +forward 2 +down 6 +down 6 +down 4 +forward 8 +down 6 +forward 2 +forward 8 +down 7 +down 6 +forward 2 +down 1 +down 8 +forward 2 +forward 9 +up 6 +forward 6 +down 3 +down 2 +up 5 +up 6 +down 6 +up 7 +forward 5 +forward 7 +down 1 +forward 7 +forward 9 +down 3 +forward 4 +forward 5 +down 1 +up 3 +forward 2 +up 5 +forward 2 +forward 1 +down 5 +down 4 +down 8 +up 8 +forward 3 +down 3 +forward 4 +down 6 +up 8 +down 5 +up 2 +down 1 +up 3 +forward 8 +up 6 +forward 9 +up 9 +down 5 +forward 2 +forward 9 +up 6 +forward 1 +down 2 +forward 4 +forward 4 +forward 1 +forward 5 +forward 1 +forward 4 +down 5 +down 1 +down 2 +down 2 +forward 7 +down 7 +down 7 +down 4 +down 7 +down 4 +down 3 +up 7 +up 1 +forward 2 +forward 3 +down 4 +down 5 +forward 9 +up 7 +forward 6 +down 1 +forward 6 +forward 6 +forward 8 +down 3 +forward 2 +down 6 +forward 9 +up 6 +up 6 +forward 7 +down 5 +down 6 +up 3 +down 5 +up 4 +forward 3 +down 7 +forward 9 +up 1 +down 1 +up 6 +down 3 +up 2 +down 5 +forward 3 +forward 6 +down 9 +down 4 +forward 7 +down 1 +up 1 +forward 3 +forward 5 +up 7 +down 3 +up 9 +up 9 +down 4 +up 4 +forward 8 +up 9 +down 8 +forward 6 +forward 4 +forward 9 +forward 8 +down 2 +forward 3 +forward 2 +down 3 +up 1 +forward 6 +down 3 +down 7 +down 3 +down 5 +down 9 +up 9 +forward 8 +forward 6 +down 8 +forward 3 +down 4 +down 2 +down 9 +forward 4 +forward 2 +up 4 +forward 1 +up 8 +up 1 +down 4 +up 2 +down 1 +up 7 +down 2 +down 4 +up 4 +forward 2 +down 3 +forward 2 +forward 3 +down 5 +forward 9 +forward 7 +down 1 +up 3 +down 3 +forward 3 +down 6 +forward 5 +up 3 +up 3 +up 1 +forward 7 +forward 1 +forward 2 +forward 2 +down 4 +up 7 +forward 1 +forward 1 +forward 6 +down 8 +up 8 +down 8 +down 4 +down 6 +forward 8 +forward 4 +forward 5 +down 2 +down 3 +forward 7 +down 6 +forward 4 +forward 1 +up 7 +up 5 +up 2 +forward 1 +forward 8 +forward 2 +up 9 +forward 4 +forward 5 +down 2 +forward 5 +forward 7 +down 3 +forward 1 +down 3 +up 5 +up 2 +up 2 +up 2 +forward 4 +forward 4 +forward 8 +forward 2 +down 3 +up 7 +down 4 +down 2 +down 7 +forward 2 +down 2 +forward 7 +up 9 +up 7 +forward 7 +forward 7 +down 3 +down 4 +up 4 +down 2 +down 8 +forward 4 +down 1 +up 6 +forward 4 +down 2 +up 8 +down 1 +down 8 +down 6 +up 9 +forward 4 +up 1 +down 2 +down 9 +down 7 +down 4 +down 8 +down 8 +up 1 +down 5 +up 5 +down 7 +up 7 +forward 5 +down 3 +forward 7 +up 5 +down 3 +forward 9 +up 5 +down 7 +forward 8 +forward 8 +down 2 +forward 7 +forward 8 +down 4 +up 7 +down 2 +up 7 +forward 5 +down 1 +down 3 +forward 9 +up 4 +forward 6 +forward 4 +down 5 +down 7 +forward 2 +forward 4 +down 2 +forward 1 +down 5 +up 2 +down 8 +down 1 +down 4 +down 8 +down 6 +forward 9 +forward 2 +forward 6 +forward 4 +down 1 +forward 8 +up 4 +forward 6 +down 4 +forward 4 +forward 3 +forward 6 +forward 9 +forward 8 +down 1 +forward 5 +down 8 +forward 7 +up 1 +down 3 +up 6 +forward 5 +forward 8 +forward 8 +forward 5 +forward 5 +forward 1 +up 9 +forward 7 +up 3 +down 2 +down 4 +forward 6 +up 2 +forward 5 +up 8 +forward 8 +forward 2 +forward 6 +forward 3 +up 4 +forward 3 +forward 6 \ No newline at end of file diff --git a/inputs/day3.input b/inputs/day3.input new file mode 100644 index 0000000..f3acbf0 --- /dev/null +++ b/inputs/day3.input @@ -0,0 +1,1000 @@ +000001100010 +100111011010 +001100011001 +011010001010 +011010101011 +001001110101 +100110001101 +100010010011 +011110000110 +011000110110 +011111111110 +100111110011 +110000100101 +011010011111 +001010011101 +110110001010 +101111110101 +000010101101 +111010111110 +111110001110 +100110111011 +101011010101 +001001000101 +111101000100 +001100000010 +010001100101 +001010011111 +101010010100 +100001110011 +100000111010 +100101010101 +000000101000 +011010100011 +110100111110 +010010011000 +000101000010 +001100011100 +011101000000 +010110111010 +101101100100 +000000010011 +000101001111 +011011100111 +101111100101 +101001101011 +101100010100 +001001110111 +110011011110 +111001101000 +101101111111 +001100110100 +000001000111 +000111101111 +110101011100 +010111011100 +010011101000 +100011101011 +110000110011 +110000100010 +100101001110 +011000001100 +100000101110 +101010110001 +000111101110 +011111101111 +000000100010 +101000010100 +011000111001 +001011001101 +011111111111 +100111000100 +101010011010 +001100100011 +011101011110 +011111100010 +110111110011 +111011111010 +000101101011 +001111011011 +000011101000 +000101111011 +000010100110 +111001000100 +011110001111 +010001011000 +100010100100 +100100111100 +010010010101 +001101110011 +000000010000 +000110001100 +100110110111 +001000100100 +101010111010 +000011101100 +100000100001 +011111110000 +101001001111 +100000111111 +110111000111 +111000010001 +011011011111 +110011011010 +100011010101 +011110010100 +001001101010 +100100111000 +100110110011 +010010111000 +111011101111 +111001101010 +100000010011 +011011101111 +011100101011 +110101011000 +101111011110 +100111000010 +001110110101 +111001111100 +010000110111 +011100001010 +110111110101 +011011100010 +111101101000 +101000000111 +110000001001 +001100101101 +100111100010 +000100010100 +111101100110 +101001010001 +011000000001 +010100100100 +010001001000 +010000010111 +100011110001 +000011100110 +001001000001 +000100001100 +001001101111 +001001100000 +000111011100 +100001010110 +101010001110 +010010101001 +110010001100 +101011101100 +111000110111 +100011010100 +001110001101 +101011011010 +110101011010 +011100010001 +010011010011 +001011111001 +100011101100 +011101100011 +010000011111 +011001101011 +011110011100 +001100011010 +101100001110 +011001111101 +100101011111 +011111100001 +111001010111 +010111000100 +111110110111 +100011011001 +100000010000 +111110111111 +101111101011 +110011010011 +100001111110 +101011011011 +110111111110 +101110101001 +011100001100 +000101011100 +011010100111 +110111011000 +100110111100 +111010001100 +010010011111 +000011010100 +010111101111 +111111000011 +000111111010 +000011111111 +010010001010 +100101110010 +111110010100 +111110000000 +111110111110 +110010100111 +110011000010 +001101010011 +100100010001 +101010110110 +110110011100 +111111001011 +000011010001 +010111011001 +010100100010 +010001101100 +001101001110 +010101000100 +111010010010 +000100100101 +000011001001 +011000110111 +010111110111 +011000100110 +011110001110 +011100111010 +001111101100 +100100001100 +001100110101 +011101111001 +100001000000 +110100001010 +110111111000 +010110010001 +110010011101 +101101011111 +111111100110 +101110001000 +111100110100 +110001111011 +001011000011 +011000000100 +101100000001 +001110000100 +111110001111 +100001001101 +111111111011 +101101110001 +111001110111 +100001101000 +001100101001 +000101000000 +001011111011 +000001011111 +100000101011 +101100000000 +101110001001 +110111111010 +010000011000 +110111100100 +001100010011 +111111100100 +101011010100 +101101001100 +110110101001 +011001101000 +011101110001 +010010010000 +110001010101 +110111110001 +100011111110 +110011111101 +011111110110 +110110101101 +000010111000 +111110011000 +100111101110 +101011000010 +111101111000 +001001110010 +011000100101 +011010100100 +101111010001 +111101101011 +101110100110 +011111100000 +000101100001 +110100100000 +010011110111 +001011010011 +010001101111 +100111110010 +100111010001 +110001111111 +000110110011 +000100000101 +011111111001 +110011100110 +111011000110 +100101101101 +001111000010 +001101011100 +011001101111 +101110111100 +110011001110 +011001011000 +110010001001 +000100000110 +011101001000 +100111010111 +000101010000 +011110110110 +010110111001 +111110100101 +100100011010 +111011100110 +100111010000 +011111100111 +101010100001 +110001101110 +000101000001 +010011011100 +111101011111 +101001100111 +011101111000 +100001100111 +110011001001 +011101000111 +000011011100 +100111001001 +001001101100 +101101111101 +100100001111 +111100111011 +010011000001 +000101010101 +000100100010 +100001011100 +110011100010 +010110011010 +001110100001 +001110111011 +101110100111 +011101101110 +110100101110 +111101110010 +001001110110 +100011010111 +111110101100 +011100111101 +001010000100 +000111001111 +110101010110 +101010101011 +011101011000 +111000111010 +000010011001 +011010111101 +000111111101 +000010111101 +111011000000 +111100001100 +110101111111 +000111011000 +010010001111 +100011101000 +110100010001 +110101001111 +100011100100 +000010111100 +011010010011 +111001000010 +101010101111 +110100101010 +001100101011 +001111101011 +000011100111 +111011001001 +110110000010 +010000010011 +010110110010 +110100100101 +001101110101 +001011001011 +010100100000 +000010000000 +110110011101 +101001100011 +010111000001 +001111100111 +110111111101 +011010100000 +011011110101 +011110100001 +010100110001 +100000000101 +010011101111 +101111110111 +101000100100 +011010101001 +010000000110 +110011110111 +010011011011 +101101101111 +001111011101 +100111101111 +000111000101 +100100101010 +011110011110 +010011101110 +000000100110 +010100110101 +101101010100 +101001000010 +111000000110 +010001000000 +000100010110 +110101101001 +010010111110 +010011100001 +001011111111 +111001101001 +111100001110 +101110010101 +111101111011 +110011010000 +111101011011 +111100101101 +111010100110 +111000001011 +011011001011 +000000010010 +100100000000 +110011111001 +010000101000 +111010110100 +010101101011 +111111001111 +010101001110 +101110111011 +011101111010 +101110110011 +000110111101 +111100011100 +000010101001 +000011011010 +100010011100 +000110100001 +101001111110 +000010100010 +001110000000 +100011100110 +010011110110 +110000111000 +010110001110 +110001100011 +001010000011 +101001010000 +101110110100 +111010000100 +111011011001 +000100001011 +011010001101 +011000101000 +011101011100 +110111110100 +101000000010 +101000100011 +011101110011 +011100011010 +001010001111 +001011101011 +100001010010 +111110111101 +110000010001 +011001010101 +100100101000 +110000000111 +001111110101 +101000010010 +011110111100 +101111111000 +000011101101 +110001100110 +001111011000 +000011000100 +001101000010 +011111111000 +011111001010 +000110000010 +010000010110 +101111000010 +001101111101 +101011101010 +101110110010 +001000000111 +100000101001 +011111110010 +011001100100 +011010010111 +001010110011 +001001011010 +000111000001 +000111000000 +011000001111 +010001001101 +001100010110 +010100000011 +110110110100 +011100000100 +101111000101 +110101010010 +001110010111 +110000011010 +000110100000 +111101000011 +000100011100 +010010100010 +000000010001 +110001111101 +100011001101 +010011110011 +000101010001 +110111101001 +110010000011 +100100000101 +100001010101 +111111111110 +100011101101 +100100100011 +110000001111 +010101001010 +101000111000 +010010011100 +110011101001 +011101011111 +011111001011 +111110011100 +010001111111 +100011110100 +010000001101 +100111111100 +101000101011 +110110101011 +110101001100 +101010110010 +110110100011 +001001010001 +011110010000 +000001111111 +101010101000 +010001111101 +100110101111 +100101000011 +001010110010 +001111001100 +100101011100 +111001000101 +010100100101 +100010101101 +100101110001 +101000100010 +110101111110 +111100110110 +100101100100 +001000001100 +010011110001 +011100101000 +101111101010 +100101100001 +000110000000 +001001001111 +001111100000 +111110001011 +011110011010 +111001100110 +000010100000 +010110110001 +100111001101 +111101010110 +110001010100 +110110100000 +011100000011 +100101110111 +000001000011 +100100100110 +111100000010 +100110110100 +000101111110 +001110100110 +010101110100 +111010110101 +000001100111 +100010001101 +101011011111 +010011111101 +101010011111 +000011111000 +110001100000 +100010111011 +010111101011 +010100101011 +100010001110 +111100000100 +101011101110 +000101100011 +100000111000 +110011001010 +000001110011 +000111010100 +111110110100 +100101011001 +110010010001 +010100111101 +111100100000 +101000110000 +011101111111 +001101111111 +001001000110 +000001100110 +110100101000 +001111000000 +111101100010 +100111001011 +001001100101 +100000001001 +101010100101 +010001000010 +111100000000 +001100010101 +101111111101 +110100010100 +101000100101 +111001010000 +011001000100 +011110011011 +101100010011 +100100110111 +111100101011 +011100100110 +000111001001 +111101101001 +001111101111 +101111111001 +101100110101 +101000011000 +100100011111 +101011001011 +001101111001 +111010011100 +001011000001 +100011001110 +101101010010 +111000101010 +101101100110 +101111010100 +101011000100 +100111111010 +110110001011 +100101001001 +110001101100 +010000100000 +110100010010 +101011110001 +001000011010 +001011110000 +101111010110 +000101110111 +110111110000 +101110001100 +111010110001 +010001110001 +100010001000 +001001000111 +100010110010 +000011100101 +111111000111 +010010001110 +011011011110 +111110100011 +101111111111 +000010011111 +010101011101 +101101011011 +001111010111 +001010010100 +101010111001 +010110111111 +000110111110 +001101101100 +011000101001 +110011000001 +100111001010 +001101011010 +100000100111 +110100010111 +100000111001 +100011011111 +010111100011 +110111000010 +011110101001 +010110101000 +011110111110 +110000110001 +100100001010 +011111001000 +110110110010 +011000101011 +000000000010 +000010000100 +110000000011 +011111101101 +011000101101 +110011101110 +000000001001 +101001110010 +101101000001 +011011001111 +110010010010 +000100101011 +010111010001 +111101000110 +111010111111 +111001010100 +011010110101 +001001000010 +011001000010 +000000101101 +010000111110 +010011100101 +100111000110 +111111001100 +101100100110 +011110100110 +001110101101 +001101001000 +111111011000 +011100100000 +001000011001 +001001111111 +111010011011 +001001111101 +101000110110 +100000111101 +001011000110 +100010010010 +101010011001 +101010110011 +101010110000 +000001000110 +001101110110 +010010011011 +101111110000 +011110001011 +001011111100 +111011111111 +101101010111 +000001010101 +010110101111 +111100000001 +010101100010 +101111010011 +010001011010 +011100101101 +111100101010 +001100111001 +001101000111 +011010111010 +010011100000 +110000011001 +111101100101 +010111101110 +011110001010 +011101000100 +011000110011 +110111001000 +011000001001 +010111111001 +111001110010 +110110110000 +000100110000 +101011110110 +111000011010 +011001110100 +100011101001 +111010110110 +000110100010 +011101010110 +001100111010 +010010101101 +000101110011 +100000000010 +100111100011 +101110111000 +100001111011 +001111001000 +000110010110 +010001110101 +111100010011 +100000010101 +111111111101 +000001001100 +100111111110 +111100110001 +111000100011 +110101100110 +000101010100 +010000001001 +011010000011 +011011011000 +101100011010 +101001001011 +000010110111 +101111000111 +100101010001 +001111011001 +000010111111 +010001010100 +011110101111 +001110101010 +010000001100 +011011101011 +100111110100 +101101100101 +101101000011 +111110101111 +110010110110 +100011000101 +011011110011 +101010101100 +001101000001 +100010111010 +100101011101 +101011000001 +101100000011 +001011000100 +000011100000 +010110001011 +000111111100 +111011000011 +110100111001 +001110001110 +001010100001 +110111111001 +011011101110 +010100010000 +101011111000 +010001100001 +000001010111 +110011101010 +001110111110 +011101110110 +010110001000 +110101111010 +100101100000 +000100111001 +110110111010 +111010010101 +110111111100 +010101010111 +100001011110 +010101001001 +001101011101 +011100100100 +010001110111 +100111001100 +101010111011 +100000111110 +101111011011 +011110110001 +000100000100 +010111100100 +110101010111 +101101101011 +110101101010 +001010000111 +111001111111 +100100011001 +101111010000 +110111011010 +110001110101 +011100001001 +001111100011 +000100010111 +100110010011 +011110011001 +010110001111 +011111011010 +111011111000 +011110111101 +000001000100 +111000010000 +010010000101 +011100100111 +110001001000 +110100111111 +100000010110 +110111100011 +101001110100 +001001011001 +010011100111 +101001010011 +101000001101 +000100001111 +111111011111 +000101001010 +011011010010 +101010000101 +001101001010 +000001100001 +010010110100 +010011000010 +111110011111 +010011111011 +111100010111 +000000010100 +110011011111 +000100110100 +011001000101 +010110100011 +100011010011 +010111001110 +100101010000 +001001010110 +110000001000 +101111110001 +101101001101 +010100000100 +100101111010 +001111011010 +101110011111 +110000010111 +100011011110 +000000100111 +010111010111 +100001011011 +101001011010 +001111001111 +110101100001 +010010011101 +010010101011 +111100111111 +000110110000 +000100100110 +100100111001 +011100101001 +110011100000 +100111111001 +101011110100 +001010101001 +011111010110 +110010110100 +111101011000 +100110011000 +100100001000 +010111100001 +111001110011 +100110100011 +011000011001 +000000000100 +000010110010 +011010111000 +010111010000 +011000100010 +100110011100 +101110011000 +001100100010 +010100111100 +001101101010 +110111100001 +101110010000 +000000110100 +111010000001 +010011001001 +000010001100 +001001101101 +010010000011 +011111100110 +111010000101 +110101110000 +010011001100 +100101111111 +000010001110 +111100001011 +111100110111 +110101000100 +000111110111 +011100011101 +110011101101 +000101100111 +101100101100 +111110101000 +000110101011 +010110011110 +000000111000 +100000000100 +110101101000 +101011100101 +101111000000 +110111000001 +010001100110 +110010010100 +111011010111 +101110011110 +111100110000 +001101110010 +010010100001 +000111100110 +010000110000 +001011010000 +110011010100 \ No newline at end of file diff --git a/inputs/day4_1.input b/inputs/day4_1.input new file mode 100644 index 0000000..5755041 --- /dev/null +++ b/inputs/day4_1.input @@ -0,0 +1 @@ +83,5,71,61,88,55,95,6,0,97,20,16,27,7,79,25,81,29,22,52,43,21,53,59,99,18,35,96,51,93,14,77,15,3,57,28,58,17,50,32,74,63,76,84,65,9,62,67,48,12,8,68,31,19,36,85,98,30,91,89,66,80,75,47,4,23,60,70,87,90,13,38,56,34,46,24,41,92,37,49,73,10,94,26,42,40,33,54,86,82,72,39,2,45,78,11,1,44,69,64 \ No newline at end of file diff --git a/inputs/day4_2.input b/inputs/day4_2.input new file mode 100644 index 0000000..e1d14a7 --- /dev/null +++ b/inputs/day4_2.input @@ -0,0 +1,599 @@ +97 62 17 5 79 + 1 99 98 80 84 +44 16 2 40 94 +68 95 49 32 8 +38 35 23 89 3 + +48 53 59 99 43 +77 24 62 50 27 +28 8 10 86 18 +96 9 92 66 67 +20 55 87 52 31 + +79 51 62 33 5 +15 39 21 48 90 +88 29 7 92 98 +87 49 84 6 14 +72 85 46 71 26 + + 3 86 40 61 65 + 4 82 28 46 32 +31 5 33 96 98 +30 62 68 75 70 + 9 18 92 19 72 + +82 24 95 21 79 +85 84 38 89 50 + 7 10 5 25 20 +99 37 48 86 12 +68 93 6 66 43 + + 9 95 75 14 1 +94 90 40 84 24 +43 72 93 4 87 +48 50 53 20 6 +65 11 38 25 46 + +41 22 47 34 55 +74 57 42 85 33 +40 21 52 78 7 +51 58 37 4 49 +53 75 11 48 76 + +90 6 98 25 80 +41 81 30 87 33 +11 21 79 62 92 +27 60 46 56 88 + 4 69 70 13 84 + + 1 22 72 43 58 +78 97 52 61 62 +27 48 81 2 63 +33 37 4 82 18 +65 28 70 31 59 + +78 51 69 47 16 +48 55 58 70 37 + 7 59 66 5 76 +94 52 82 22 10 +13 83 95 24 79 + + 8 38 40 67 24 +45 9 21 7 89 +82 96 72 92 4 +86 49 80 79 22 +26 11 84 78 70 + +32 73 0 37 86 +78 42 13 30 53 +44 99 51 12 96 +45 57 63 34 58 +41 91 7 49 52 + + 1 66 8 6 7 +47 96 25 77 72 +23 22 31 42 24 +52 27 53 51 99 +21 65 35 84 5 + +49 1 79 39 82 + 7 96 13 33 85 + 3 53 32 12 50 +36 30 27 55 95 +16 24 2 66 77 + +45 75 85 35 72 +99 25 91 68 28 +29 52 1 80 98 +62 46 63 22 44 +82 86 57 24 58 + +70 19 79 7 24 +35 71 93 42 76 +17 88 62 25 12 +54 0 11 32 58 +38 64 29 75 80 + +58 93 63 52 23 +77 60 1 38 87 +75 89 85 25 91 +64 39 96 49 66 +14 45 84 13 29 + +85 10 21 33 80 +78 86 77 41 36 +98 58 53 82 72 +75 20 65 3 46 +52 16 74 45 99 + +45 97 96 23 62 +79 59 60 87 64 +75 2 30 47 50 +85 81 56 11 38 +17 26 40 7 66 + +94 99 67 88 82 +96 5 21 53 52 +41 15 49 35 89 +54 39 66 24 51 + 9 6 62 33 70 + +33 89 48 4 20 +46 66 45 76 7 +12 77 43 60 15 +54 58 91 95 69 +11 8 32 31 18 + +63 78 55 7 60 +95 14 38 10 45 + 3 16 72 53 37 + 1 89 70 75 44 + 5 6 66 13 46 + +74 65 27 53 39 +67 66 76 13 31 +75 51 11 49 59 +18 12 71 9 89 +98 24 73 26 43 + +90 21 75 77 97 +80 29 54 16 10 +55 98 65 19 7 +96 76 20 28 88 +94 83 91 26 86 + +60 57 22 95 23 +81 4 34 36 14 +77 1 45 24 19 +33 88 8 28 74 + 2 17 37 32 94 + +34 82 45 65 44 +70 89 95 20 79 +88 18 62 68 37 +85 17 54 86 69 +97 25 13 42 67 + +70 30 59 94 86 +40 87 20 69 25 +46 44 41 17 79 +75 99 3 91 8 +71 39 73 88 37 + +90 76 12 80 58 +60 45 35 10 33 +79 19 65 54 21 +63 51 77 15 92 +34 53 7 59 44 + +40 14 68 43 37 +12 35 29 82 48 +47 28 97 44 93 +95 56 33 96 27 +38 85 88 49 6 + +88 36 81 42 10 +85 99 29 70 86 +64 15 37 96 61 +66 76 87 17 62 +91 16 60 13 65 + +45 71 66 80 69 +53 39 29 92 99 +23 0 72 36 52 +75 70 33 2 14 +22 77 21 26 3 + +52 32 14 66 47 +53 7 9 69 11 +19 36 57 54 65 +17 26 76 51 42 +13 8 44 63 39 + +23 84 34 35 19 +29 71 81 32 92 +22 49 54 6 56 +64 94 53 89 2 +74 68 11 13 47 + +34 25 67 59 66 +68 27 69 91 33 + 4 56 46 99 21 +51 13 24 41 12 +90 65 19 26 55 + +15 85 8 65 79 +95 51 39 75 96 +18 45 68 81 71 +67 28 21 61 20 +70 29 92 74 36 + +25 75 23 2 38 +66 52 42 62 16 +93 63 78 31 65 + 0 91 77 4 14 +61 59 53 17 10 + +16 95 72 67 17 +71 3 38 90 14 +34 8 55 49 33 +54 79 20 27 80 +96 31 18 70 61 + +60 46 4 56 49 + 2 36 8 51 54 +71 82 97 1 18 +45 69 37 6 26 +85 61 27 92 77 + +62 90 59 67 25 +41 45 7 91 17 +10 29 75 43 82 +12 78 95 37 32 +28 66 76 2 49 + +26 6 49 44 74 +94 34 73 70 64 +14 91 23 88 31 +90 55 62 75 43 + 4 1 63 57 19 + + 2 30 11 55 52 +51 92 73 54 96 +89 22 67 56 17 +49 50 9 95 45 +23 74 13 75 7 + + 6 31 78 64 89 +76 13 83 56 34 +95 29 97 49 37 +66 77 74 73 90 +87 41 62 39 85 + +51 80 38 15 44 +53 23 83 61 63 +27 33 79 40 32 +84 2 82 20 93 +72 92 48 39 98 + +36 78 46 84 14 +56 53 51 92 89 +39 99 77 22 32 +65 38 42 76 7 +62 31 1 87 95 + +74 99 6 4 20 +95 81 27 59 88 +63 69 30 25 87 +92 96 89 42 18 +11 77 91 8 46 + +29 62 77 3 89 +54 12 55 44 34 +66 78 83 98 22 +17 10 67 82 75 +43 16 84 41 19 + +67 24 9 89 48 +56 7 44 47 68 +12 38 35 54 14 +95 58 78 13 28 +97 5 37 99 42 + +48 64 21 23 92 +29 99 75 2 53 +41 97 74 39 89 +66 63 22 45 73 +20 68 30 35 78 + +76 3 47 40 72 +41 7 68 5 58 +12 32 81 62 93 +91 80 17 78 61 +22 95 94 38 33 + +42 27 70 13 5 +77 38 50 3 44 +29 56 36 15 97 +68 20 94 12 54 +64 83 25 55 80 + +77 63 37 68 73 +34 30 22 91 10 +16 80 89 98 45 +46 36 90 95 83 +54 52 57 61 55 + +55 3 33 66 69 +51 97 36 57 50 +56 74 35 84 44 +45 92 18 42 52 +85 13 27 70 20 + +56 68 71 11 63 +12 93 57 94 84 +91 13 29 31 75 +54 49 51 73 5 +81 7 60 53 89 + +73 55 87 35 84 +37 63 41 54 39 +58 42 85 66 68 +96 24 86 72 27 +40 28 4 80 33 + +29 79 8 76 31 +30 20 12 0 61 +14 37 49 45 74 +64 17 1 91 51 +87 67 3 77 47 + +72 15 46 71 75 +41 16 68 14 43 +97 25 78 26 39 +59 57 88 4 52 +20 49 3 23 29 + +33 78 31 35 6 +85 43 7 87 18 +68 93 4 80 96 +98 13 61 77 23 +10 29 34 36 5 + + 0 78 44 49 14 +72 88 30 31 81 +34 87 55 27 11 +58 64 76 40 62 +47 18 38 35 26 + +16 2 67 56 74 +50 41 86 38 39 +32 96 59 40 8 +17 82 49 55 89 +34 88 81 73 94 + +52 18 32 56 61 +40 5 48 64 62 +22 57 19 26 91 +31 3 95 27 87 +74 83 75 99 73 + + 6 65 91 22 86 +82 72 60 41 87 + 2 71 9 12 84 +51 90 43 49 80 +15 20 54 66 29 + +39 64 35 23 10 +73 25 1 45 93 +50 37 95 86 78 +52 6 2 0 13 +26 89 27 62 80 + +65 67 95 33 60 +55 49 64 92 7 +56 75 73 35 99 + 8 72 80 0 46 +41 25 2 69 4 + +26 51 31 44 25 +21 6 70 12 71 +67 69 13 63 79 +81 74 8 89 30 +16 48 88 72 66 + +99 69 61 29 86 +67 88 5 20 2 +70 60 27 82 6 +95 65 30 9 85 +23 58 59 87 66 + +40 90 43 57 26 +10 52 27 64 72 + 3 83 11 54 42 +39 20 87 15 81 +49 28 58 33 29 + +11 32 63 96 81 +77 82 0 30 15 +88 31 41 46 6 +17 55 76 42 87 +24 93 70 66 40 + +35 6 28 90 21 +72 74 78 43 3 +47 17 13 41 96 +68 12 76 81 11 +70 34 33 25 54 + +94 9 58 91 38 +84 7 22 30 63 +23 26 49 93 48 +79 75 99 96 67 +90 19 66 57 47 + +35 98 24 31 41 +79 63 92 70 11 +36 3 72 50 93 +90 21 40 38 77 + 0 14 42 99 67 + +96 45 75 97 94 +68 35 9 30 67 +25 88 40 46 37 +82 79 90 76 55 +50 59 58 22 21 + +96 73 49 36 56 + 6 45 30 81 76 +10 95 70 88 98 +43 47 74 66 84 +77 83 68 54 28 + +96 48 64 89 6 +76 12 47 8 30 +39 55 95 11 62 +68 25 50 63 31 +59 17 46 52 78 + +66 27 61 79 73 +37 88 47 84 72 +50 18 99 7 76 +97 11 53 43 30 +42 56 98 39 63 + +64 13 45 7 72 +66 35 18 68 86 +38 30 89 11 29 +37 76 23 14 67 +36 61 87 26 46 + +20 72 10 30 17 +25 14 74 71 58 +34 51 45 43 76 +38 75 50 98 42 + 2 12 67 66 82 + +44 23 73 56 88 + 4 96 90 0 32 +40 86 47 87 50 +28 30 42 39 17 +10 12 16 8 14 + +21 33 7 20 78 +81 46 77 42 79 +84 28 82 93 68 +90 63 60 0 34 +35 70 40 29 54 + +93 8 11 2 39 +74 40 95 69 57 +86 21 31 88 63 +52 16 19 20 22 +72 7 25 90 77 + +83 29 90 48 46 +97 21 2 65 15 +89 28 60 69 26 +77 75 9 35 96 +82 49 66 5 16 + +80 57 2 73 46 +22 50 87 60 89 +95 74 98 93 62 +86 61 10 69 9 +48 31 53 88 84 + +46 17 28 56 50 +64 65 43 73 22 +32 31 89 20 38 +13 49 18 55 72 +83 41 78 94 57 + +39 8 68 87 21 +78 59 27 0 14 +25 3 96 51 63 +92 35 19 57 99 +83 75 69 37 72 + +42 36 34 77 69 +21 55 47 52 89 +61 90 3 23 41 +45 80 29 27 99 +79 86 87 93 74 + +59 8 97 48 73 +40 31 29 49 85 +41 68 11 9 45 +87 74 77 75 91 +67 27 70 90 16 + +80 47 53 81 36 +75 35 87 90 89 +19 5 56 28 26 + 8 44 77 31 20 +61 96 27 99 79 + +35 16 40 94 65 +60 28 46 51 61 +45 53 36 89 80 +33 93 12 39 42 +13 68 57 64 26 + +39 55 88 78 72 + 6 82 52 1 60 +41 23 97 44 11 + 3 15 21 93 38 +24 90 7 80 2 + +81 46 31 56 30 +94 22 58 69 41 +42 91 20 0 14 +71 11 17 37 12 + 7 73 79 9 26 + +38 32 24 98 79 +48 49 4 17 90 +12 20 95 99 10 +94 23 30 92 97 +84 18 57 11 53 + +75 22 42 59 55 +23 33 90 2 52 +94 13 78 0 16 +39 72 67 45 31 +11 53 7 83 28 + +43 33 52 89 40 +53 94 87 90 19 +98 51 64 63 62 +66 65 57 93 18 +80 79 59 99 73 + +57 63 96 3 27 +88 74 9 60 99 +48 30 1 18 15 +23 77 89 24 55 +37 58 67 91 10 + +36 73 27 72 8 +75 74 87 55 7 + 2 67 34 84 51 +94 18 23 62 11 +65 41 3 29 53 + +63 67 73 53 13 +28 54 19 72 93 +48 41 55 64 33 +83 70 65 26 22 +11 86 35 16 18 + +13 50 19 48 58 +28 42 83 20 29 + 5 96 92 90 3 +87 93 56 23 78 +98 57 0 72 62 + +95 76 16 5 56 +55 28 52 88 73 + 6 99 75 90 18 +12 25 22 44 57 +62 37 36 30 48 + +24 41 73 90 46 +55 91 63 86 44 + 0 74 72 47 76 +34 13 33 65 62 +49 75 10 15 27 + +85 63 62 11 38 +53 29 2 8 13 +87 64 31 69 58 +88 84 17 3 26 + 5 32 23 33 39 + +25 8 81 29 95 +65 56 86 34 17 +38 66 85 43 26 +39 12 70 32 19 +49 68 10 4 13 \ No newline at end of file diff --git a/inputs/day5.input b/inputs/day5.input new file mode 100644 index 0000000..9d2a0c8 --- /dev/null +++ b/inputs/day5.input @@ -0,0 +1,500 @@ +299,462 -> 299,747 +855,314 -> 855,140 +981,328 -> 798,328 +610,444 -> 680,374 +797,242 -> 606,242 +217,42 -> 147,42 +735,378 -> 735,188 +247,192 -> 912,192 +377,341 -> 768,341 +472,701 -> 66,701 +48,970 -> 885,133 +893,35 -> 664,35 +617,237 -> 951,237 +540,643 -> 190,293 +575,815 -> 302,815 +146,380 -> 146,562 +568,481 -> 568,161 +38,101 -> 921,984 +613,12 -> 185,12 +967,30 -> 17,980 +823,620 -> 584,859 +672,822 -> 413,822 +259,626 -> 385,752 +752,415 -> 857,310 +758,659 -> 758,76 +909,893 -> 35,19 +964,913 -> 105,54 +697,196 -> 697,913 +389,821 -> 163,821 +783,65 -> 281,65 +775,732 -> 558,732 +818,817 -> 42,817 +499,537 -> 896,140 +81,957 -> 81,844 +851,256 -> 559,548 +268,970 -> 268,170 +106,216 -> 68,178 +107,371 -> 850,371 +160,107 -> 748,107 +300,619 -> 524,395 +940,196 -> 780,356 +752,498 -> 752,94 +807,619 -> 728,619 +831,89 -> 313,89 +56,389 -> 191,524 +206,75 -> 206,816 +486,924 -> 486,389 +280,708 -> 542,446 +562,917 -> 190,545 +40,231 -> 40,404 +804,327 -> 726,249 +538,670 -> 170,302 +473,229 -> 912,668 +645,195 -> 645,916 +502,13 -> 502,266 +639,955 -> 639,434 +87,56 -> 943,912 +143,798 -> 699,798 +469,261 -> 79,651 +715,98 -> 104,709 +914,339 -> 463,790 +456,263 -> 456,101 +656,105 -> 109,105 +28,944 -> 123,944 +981,652 -> 270,652 +953,681 -> 605,333 +474,858 -> 310,858 +542,736 -> 807,736 +234,412 -> 620,26 +615,786 -> 36,207 +169,56 -> 169,132 +133,930 -> 989,74 +342,34 -> 516,34 +210,97 -> 947,834 +43,857 -> 824,76 +673,840 -> 673,156 +718,123 -> 896,123 +673,311 -> 673,564 +639,352 -> 72,919 +552,571 -> 661,462 +819,335 -> 953,335 +756,84 -> 823,84 +250,969 -> 287,969 +551,260 -> 378,433 +417,412 -> 465,412 +621,260 -> 249,632 +226,633 -> 394,465 +475,179 -> 602,306 +272,571 -> 272,839 +820,666 -> 820,829 +988,608 -> 974,608 +124,318 -> 124,589 +303,516 -> 839,516 +983,477 -> 983,786 +299,870 -> 927,242 +284,875 -> 213,875 +427,493 -> 545,493 +74,755 -> 17,698 +294,326 -> 294,23 +331,193 -> 391,193 +381,671 -> 408,644 +805,537 -> 805,155 +721,956 -> 10,956 +918,36 -> 918,915 +981,891 -> 445,355 +591,288 -> 933,288 +199,256 -> 250,307 +318,810 -> 789,339 +250,245 -> 522,517 +592,248 -> 958,614 +722,215 -> 235,215 +654,496 -> 654,905 +76,860 -> 678,258 +29,20 -> 954,945 +379,851 -> 567,851 +722,161 -> 13,870 +965,302 -> 390,877 +114,892 -> 114,348 +265,681 -> 26,920 +94,463 -> 94,160 +340,150 -> 340,759 +727,612 -> 175,60 +457,951 -> 154,648 +602,200 -> 602,841 +487,194 -> 27,654 +356,699 -> 887,168 +915,237 -> 262,890 +81,225 -> 815,959 +227,877 -> 694,877 +441,674 -> 441,968 +865,201 -> 865,528 +969,214 -> 511,214 +802,748 -> 802,86 +662,313 -> 636,313 +308,447 -> 308,545 +245,236 -> 532,236 +621,195 -> 621,140 +889,159 -> 197,851 +68,683 -> 179,572 +859,261 -> 56,261 +982,539 -> 982,619 +144,362 -> 851,362 +304,905 -> 304,553 +551,905 -> 637,905 +432,316 -> 142,606 +104,588 -> 104,862 +316,392 -> 680,392 +372,413 -> 866,413 +874,53 -> 697,53 +499,668 -> 499,329 +32,207 -> 802,977 +403,108 -> 100,411 +578,442 -> 578,489 +134,161 -> 848,875 +851,935 -> 95,179 +485,190 -> 485,57 +411,47 -> 680,47 +378,878 -> 378,127 +908,717 -> 516,717 +432,863 -> 328,863 +212,278 -> 212,326 +552,426 -> 933,807 +419,329 -> 492,402 +975,750 -> 424,750 +40,54 -> 915,929 +570,349 -> 576,349 +32,784 -> 32,473 +854,407 -> 343,407 +18,932 -> 425,932 +223,571 -> 468,816 +939,330 -> 939,870 +126,637 -> 105,616 +84,310 -> 84,788 +491,890 -> 229,890 +737,831 -> 737,726 +137,471 -> 137,957 +642,429 -> 253,429 +319,103 -> 903,103 +38,872 -> 38,110 +809,183 -> 809,653 +877,87 -> 56,908 +455,136 -> 693,374 +218,647 -> 727,647 +626,544 -> 797,544 +147,46 -> 122,46 +316,430 -> 495,430 +608,469 -> 331,192 +353,769 -> 714,769 +649,90 -> 410,90 +105,311 -> 105,674 +594,600 -> 484,600 +822,933 -> 279,933 +478,267 -> 478,341 +114,912 -> 114,387 +843,480 -> 754,480 +747,701 -> 747,143 +646,88 -> 646,375 +195,129 -> 757,691 +470,895 -> 470,673 +450,595 -> 334,711 +165,872 -> 165,155 +744,947 -> 987,947 +153,15 -> 357,15 +272,222 -> 272,201 +535,551 -> 120,966 +102,748 -> 102,281 +348,482 -> 129,482 +499,679 -> 499,821 +399,875 -> 399,285 +695,585 -> 733,547 +40,509 -> 95,564 +199,857 -> 228,886 +491,885 -> 978,885 +926,887 -> 104,65 +492,128 -> 957,593 +302,904 -> 302,906 +706,782 -> 706,217 +721,506 -> 721,675 +847,725 -> 583,989 +225,734 -> 942,17 +141,161 -> 161,161 +858,736 -> 858,433 +183,724 -> 13,554 +299,647 -> 299,420 +623,39 -> 358,304 +657,373 -> 657,976 +452,714 -> 452,735 +857,537 -> 392,72 +758,979 -> 758,457 +141,609 -> 141,100 +266,76 -> 974,784 +527,66 -> 236,357 +971,176 -> 865,282 +961,935 -> 74,48 +328,434 -> 328,663 +384,670 -> 12,670 +534,508 -> 334,508 +336,603 -> 202,469 +690,140 -> 807,140 +491,511 -> 491,166 +265,493 -> 236,493 +552,113 -> 552,329 +370,542 -> 370,688 +919,556 -> 488,125 +142,949 -> 107,949 +917,824 -> 360,267 +866,109 -> 624,109 +714,657 -> 714,155 +727,567 -> 727,570 +235,920 -> 235,683 +329,261 -> 55,261 +672,718 -> 113,159 +469,380 -> 66,783 +884,289 -> 884,15 +412,197 -> 496,197 +971,875 -> 20,875 +831,245 -> 831,946 +22,985 -> 391,985 +984,136 -> 187,933 +845,334 -> 660,519 +367,299 -> 367,912 +25,985 -> 946,64 +487,416 -> 487,453 +89,223 -> 723,857 +890,953 -> 19,82 +199,256 -> 199,521 +785,981 -> 710,906 +673,160 -> 673,682 +65,730 -> 421,730 +957,89 -> 832,89 +647,361 -> 33,361 +243,347 -> 784,888 +50,760 -> 50,372 +564,278 -> 564,846 +344,652 -> 832,652 +219,586 -> 219,502 +976,500 -> 976,650 +515,265 -> 744,36 +930,730 -> 930,332 +479,48 -> 592,48 +979,326 -> 374,326 +790,520 -> 375,520 +129,919 -> 511,537 +203,558 -> 212,558 +688,842 -> 502,842 +979,976 -> 90,87 +78,929 -> 78,478 +578,203 -> 802,427 +788,360 -> 260,888 +847,342 -> 212,977 +256,578 -> 821,13 +493,561 -> 712,342 +90,116 -> 181,116 +317,736 -> 963,90 +453,548 -> 37,548 +15,472 -> 514,971 +972,579 -> 956,579 +456,66 -> 349,66 +102,771 -> 769,771 +320,741 -> 327,748 +981,150 -> 592,150 +739,978 -> 739,804 +861,10 -> 142,729 +457,596 -> 580,596 +358,287 -> 237,408 +705,719 -> 59,73 +27,770 -> 27,133 +846,690 -> 846,464 +138,351 -> 174,315 +380,942 -> 380,985 +490,421 -> 803,734 +559,449 -> 761,449 +709,218 -> 718,218 +271,877 -> 271,814 +89,845 -> 918,16 +613,436 -> 976,73 +27,88 -> 867,88 +541,965 -> 739,767 +187,746 -> 916,17 +294,13 -> 333,13 +600,647 -> 925,647 +915,942 -> 41,68 +38,625 -> 176,763 +468,905 -> 468,727 +337,89 -> 337,581 +48,969 -> 732,285 +555,301 -> 555,610 +155,525 -> 985,525 +235,167 -> 700,167 +728,134 -> 728,289 +696,595 -> 892,595 +983,696 -> 401,114 +581,40 -> 515,40 +171,837 -> 975,33 +588,683 -> 734,683 +880,132 -> 231,132 +847,145 -> 332,660 +657,179 -> 657,18 +49,957 -> 496,510 +791,497 -> 552,736 +988,989 -> 10,11 +937,659 -> 937,461 +403,458 -> 403,637 +237,765 -> 237,813 +35,504 -> 35,663 +556,897 -> 802,897 +382,491 -> 786,895 +103,566 -> 528,566 +598,570 -> 623,570 +345,343 -> 345,985 +537,59 -> 537,386 +207,811 -> 974,44 +463,623 -> 463,21 +966,915 -> 966,965 +569,281 -> 569,183 +470,648 -> 470,666 +441,420 -> 817,796 +451,723 -> 908,266 +300,297 -> 840,297 +902,201 -> 902,912 +598,930 -> 654,930 +874,433 -> 874,176 +551,967 -> 795,967 +892,23 -> 137,778 +306,463 -> 679,90 +16,78 -> 16,980 +782,749 -> 782,117 +235,240 -> 244,231 +461,183 -> 981,183 +608,170 -> 608,640 +75,711 -> 645,141 +49,238 -> 488,238 +14,963 -> 947,30 +120,56 -> 120,73 +630,978 -> 316,664 +219,389 -> 803,973 +106,918 -> 978,46 +941,439 -> 788,592 +313,943 -> 325,943 +325,683 -> 325,67 +774,816 -> 774,908 +608,833 -> 608,679 +447,289 -> 447,135 +405,650 -> 405,406 +622,467 -> 636,467 +855,606 -> 855,663 +918,640 -> 918,831 +640,869 -> 640,904 +481,405 -> 481,791 +185,582 -> 21,746 +556,772 -> 114,330 +490,144 -> 490,591 +60,74 -> 974,988 +967,978 -> 10,21 +159,669 -> 486,342 +302,636 -> 302,771 +841,427 -> 793,427 +670,743 -> 234,743 +47,676 -> 233,490 +877,768 -> 123,14 +139,462 -> 139,541 +204,59 -> 204,300 +720,702 -> 720,525 +171,341 -> 787,341 +699,899 -> 293,899 +431,513 -> 431,849 +904,278 -> 124,278 +919,67 -> 815,67 +401,519 -> 688,232 +675,279 -> 675,137 +376,786 -> 362,786 +57,817 -> 801,73 +809,468 -> 410,867 +669,171 -> 669,65 +520,36 -> 218,36 +702,159 -> 709,159 +399,646 -> 399,828 +853,759 -> 853,91 +58,143 -> 867,952 +896,939 -> 42,85 +677,120 -> 646,120 +947,714 -> 737,714 +515,107 -> 752,344 +793,142 -> 793,789 +86,896 -> 967,15 +663,493 -> 833,493 +986,766 -> 293,766 +71,874 -> 71,417 +471,426 -> 148,426 +444,982 -> 142,982 +124,582 -> 846,582 +336,436 -> 257,436 +877,750 -> 177,50 +69,73 -> 911,915 +315,363 -> 315,45 +620,272 -> 556,272 +616,186 -> 331,186 +766,756 -> 59,49 +555,271 -> 555,183 +437,246 -> 454,246 +169,57 -> 169,688 +448,605 -> 420,605 +194,149 -> 960,915 +597,308 -> 597,512 +328,337 -> 328,349 +506,331 -> 506,144 +608,633 -> 838,863 +37,99 -> 767,829 +128,487 -> 128,246 +473,303 -> 473,529 +754,890 -> 754,269 +854,958 -> 957,958 +704,360 -> 526,360 +613,752 -> 260,752 +179,302 -> 805,302 +916,176 -> 519,176 +318,622 -> 161,622 +783,785 -> 322,785 +148,289 -> 802,943 +944,280 -> 671,280 +758,402 -> 442,86 +988,959 -> 56,27 +716,642 -> 429,642 +899,48 -> 899,111 +981,325 -> 168,325 +603,77 -> 474,77 +103,387 -> 112,387 +100,40 -> 160,40 +969,317 -> 109,317 +938,424 -> 938,179 +834,980 -> 527,980 +875,83 -> 22,83 +89,572 -> 582,79 +642,862 -> 642,247 +499,26 -> 499,242 +873,173 -> 206,840 +314,112 -> 314,388 +778,25 -> 778,944 +902,457 -> 964,519 +822,891 -> 623,891 +538,76 -> 618,156 +418,179 -> 204,179 +138,131 -> 300,131 +51,386 -> 51,764 +756,728 -> 330,302 +801,374 -> 801,506 +239,416 -> 781,958 +311,651 -> 848,651 +67,586 -> 67,250 +794,244 -> 794,515 +228,810 -> 368,670 +399,561 -> 682,561 +919,61 -> 868,61 +204,253 -> 224,253 +74,657 -> 74,235 +208,422 -> 722,422 +246,353 -> 441,548 +362,175 -> 362,688 +403,681 -> 403,821 +146,183 -> 23,183 \ No newline at end of file diff --git a/inputs/day6.input b/inputs/day6.input new file mode 100644 index 0000000..cf43597 --- /dev/null +++ b/inputs/day6.input @@ -0,0 +1 @@ +4,3,4,5,2,1,1,5,5,3,3,1,5,1,4,2,2,3,1,5,1,4,1,2,3,4,1,4,1,5,2,1,1,3,3,5,1,1,1,1,4,5,1,2,1,2,1,1,1,5,3,3,1,1,1,1,2,4,2,1,2,3,2,5,3,5,3,1,5,4,5,4,4,4,1,1,2,1,3,1,1,4,2,1,2,1,2,5,4,2,4,2,2,4,2,2,5,1,2,1,2,1,4,4,4,3,2,1,2,4,3,5,1,1,3,4,2,3,3,5,3,1,4,1,1,1,1,2,3,2,1,1,5,5,1,5,2,1,4,4,4,3,2,2,1,2,1,5,1,4,4,1,1,4,1,4,2,4,3,1,4,1,4,2,1,5,1,1,1,3,2,4,1,1,4,1,4,3,1,5,3,3,3,4,1,1,3,1,3,4,1,4,5,1,4,1,2,2,1,3,3,5,3,2,5,1,1,5,1,5,1,4,4,3,1,5,5,2,2,4,1,1,2,1,2,1,4,3,5,5,2,3,4,1,4,2,4,4,1,4,1,1,4,2,4,1,2,1,1,1,1,1,1,3,1,3,3,1,1,1,1,3,2,3,5,4,2,4,3,1,5,3,1,1,1,2,1,4,4,5,1,5,1,1,1,2,2,4,1,4,5,2,4,5,2,2,2,5,4,4 \ No newline at end of file diff --git a/inputs/day7.input b/inputs/day7.input new file mode 100644 index 0000000..3e0fecf --- /dev/null +++ b/inputs/day7.input @@ -0,0 +1 @@ +1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,62,461,1087,183,1096,431,412,200,486,1543,25,580,1030,15,65,1186,9,226,173,77,119,691,855,451,88,741,221,1465,190,779,327,179,627,366,288,174,1147,49,773,3,5,65,20,172,601,307,611,699,1168,933,1295,832,242,62,8,4,226,768,33,566,21,10,937,15,760,100,574,181,89,72,1054,225,28,0,685,661,131,281,933,90,233,109,1345,81,106,636,1262,193,172,1056,709,1176,447,536,1054,929,171,226,127,274,710,917,218,192,25,128,321,1816,515,181,759,20,258,134,281,151,99,479,623,534,72,576,534,337,54,293,450,230,963,14,357,446,1244,964,16,865,52,1,1171,77,7,275,313,894,577,305,1119,393,285,354,136,1147,241,441,166,1024,650,101,178,1514,186,902,367,5,431,374,56,507,857,1316,0,186,63,118,1062,62,446,266,47,354,168,65,1036,447,689,160,749,728,791,1066,99,675,194,891,153,737,801,254,905,1046,21,413,386,204,603,373,218,440,137,1340,1616,121,903,722,841,731,213,219,405,336,1345,144,329,285,213,272,717,47,126,1137,548,32,21,755,219,595,187,143,636,476,397,185,70,345,89,319,80,867,26,1166,509,24,16,151,605,1415,893,814,473,289,377,407,44,184,290,447,1669,116,319,455,294,145,513,58,247,186,1565,31,297,1,226,1051,1561,1233,254,1274,422,547,1638,354,1855,419,71,1003,626,519,109,96,996,117,32,226,424,184,181,720,1311,1162,11,86,438,408,1269,887,612,327,133,1117,1390,345,10,370,175,37,1154,659,707,193,665,65,359,758,1253,498,219,601,59,919,1371,289,9,437,392,626,981,2,51,733,780,101,541,770,464,28,616,81,1708,1515,719,780,1214,673,268,246,25,252,301,205,27,160,0,298,69,285,58,809,1369,812,628,353,47,632,123,168,135,277,303,614,365,330,1385,1117,1346,737,744,1403,385,215,437,276,726,673,668,494,164,1,763,696,487,252,375,1253,42,1111,963,58,63,11,1648,1080,964,526,454,1349,1098,95,59,78,36,42,654,1441,1129,464,740,355,370,44,4,154,986,439,828,287,969,765,565,836,196,387,556,34,586,438,1205,760,798,6,61,260,25,418,1628,566,3,530,753,758,16,92,30,1388,109,240,513,1048,1056,588,1634,418,297,195,447,1145,198,466,0,607,180,57,58,72,319,221,869,744,339,195,1295,268,1336,1310,38,714,326,393,445,422,102,389,188,147,21,805,381,520,561,282,438,115,431,156,482,50,890,470,22,60,46,1588,971,1219,82,380,1061,948,455,99,255,400,1832,91,225,280,520,279,91,172,92,946,434,182,164,142,83,91,281,538,962,77,1104,1522,310,4,961,62,9,1257,596,464,733,338,1166,334,380,509,773,90,498,480,1523,1632,530,543,413,589,748,4,861,11,233,192,699,33,615,1853,205,270,624,1132,1100,227,1402,349,183,179,645,4,1120,962,317,326,128,422,281,302,701,53,179,34,802,272,1254,375,764,418,16,160,943,479,416,717,644,1029,372,140,114,449,351,159,305,1299,749,488,502,180,210,17,533,258,120,333,1097,185,1911,451,360,66,1329,1260,209,1611,454,809,336,783,1438,20,26,609,720,155,578,367,231,1715,64,610,465,752,81,108,389,995,244,1291,1144,159,161,1630,561,813,261,67,1604,124,231,833,14,15,1245,1309,1165,103,1270,228,1,133,644,581,218,481,716,237,155,360,110,1408,931,99,216,5,21,67,348,927,325,759,1127,557,584,696,428,653,548,247,1519,1682,132,3,1648,230,229,136,253,543,1153,204,669,58,81,357,85,82,749,503,139,32,1170,1352,151,653,1441,51,392,474,2,114,64,418,125,514,838,473,794,331,13,327,1476,836,37,3,0,115,18,1784,300,190,99,997,1164,31,1255,96,64,1101,354,698,372,852,1508,100,289,32,704,292,504,191,1342,231,692,12,369,1182,62,809,566,688,218,2,539,234,996,444,228,456,369,115,23,29,226,940,95,404,349,1254,171,69,711,2,1405,1181,34,8,92,173,533,20,181,921,201,1236,185,457,526,2,106,12,601,58,339,457,590,15,1583,473,451,1124,1569,401,72,154,9,1331,471,165,516,463,543,298,197,43,1294,101,1058,1025,1099,4,634,90,104,870,480,412,290,11,924,338,30,281,83,268,20,848,1722,1060,987,9,196,266,28,402,267,199,814,986,440,906,796,1403,1394,62,136,442,412,1729,571,459,91,730,269,172,202,772,305 diff --git a/inputs/day8.input b/inputs/day8.input new file mode 100644 index 0000000..4cab38f --- /dev/null +++ b/inputs/day8.input @@ -0,0 +1,20 @@ +be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | +fdgacbe cefdb cefbgd gcbe +edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | +fcgedb cgb dgebacf gc +fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef | +cg cg fdcagb cbg +fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega | +efabcd cedba gadfec cb +aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga | +gecf egdcabf bgf bfgea +fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf | +gebdcfa ecba ca fadegcb +dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf | +cefg dcbef fcge gbcadfe +bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd | +ed bcgafe cdgba cbgef +egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg | +gbdfcae bgc cg cgb +gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc | +fgae cfgab fg bagce \ No newline at end of file