diff --git a/09/input.pl b/09/input.pl new file mode 100644 index 0000000..32d2d08 --- /dev/null +++ b/09/input.pl @@ -0,0 +1,202 @@ +input([ +[28, 38, 58, 115, 255, 558, 1167, 2343, 4564, 8699, 16328, 30378, 56447, 105549, 199601, 381868, 735876, 1418100, 2712150, 5115341, 9472583], +[24, 34, 56, 103, 191, 343, 593, 990, 1602, 2520, 3862, 5777, 8449, 12101, 16999, 23456, 31836, 42558, 56100, 73003, 93875], +[12, 30, 66, 118, 187, 291, 486, 901, 1807, 3760, 7885, 16402, 33536, 67001, 130303, 246169, 451478, 804146, 1392500, 2347766, 3860393], +[11, 7, -1, -10, 4, 101, 392, 1052, 2337, 4631, 8595, 15584, 28661, 54781, 109041, 222274, 453659, 910327, 1775963, 3349730, 6094694], +[13, 26, 56, 110, 200, 360, 677, 1347, 2785, 5847, 12267, 25493, 52275, 105732, 211455, 420013, 833076, 1658291, 3323777, 6713131, 13636877], +[24, 36, 50, 68, 92, 124, 166, 220, 288, 372, 474, 596, 740, 908, 1102, 1324, 1576, 1860, 2178, 2532, 2924], +[4, 10, 18, 35, 81, 207, 523, 1232, 2664, 5299, 9766, 16819, 27345, 42607, 65306, 103013, 177906, 352348, 792280, 1916515, 4732055], +[2, 4, 15, 46, 115, 246, 479, 915, 1841, 4022, 9326, 21995, 51143, 115539, 252570, 534754, 1099830, 2205374, 4328183, 8346246, 15873877], +[6, 16, 41, 104, 240, 508, 1016, 1959, 3670, 6684, 11815, 20246, 33632, 54216, 84958, 129677, 193206, 281560, 402117, 563812, 777344], +[10, 24, 59, 127, 240, 410, 649, 969, 1382, 1900, 2535, 3299, 4204, 5262, 6485, 7885, 9474, 11264, 13267, 15495, 17960], +[1, 3, 19, 65, 161, 334, 621, 1072, 1753, 2749, 4167, 6139, 8825, 12416, 17137, 23250, 31057, 40903, 53179, 68325, 86833], +[1, 3, 14, 46, 118, 256, 493, 869, 1431, 2233, 3336, 4808, 6724, 9166, 12223, 15991, 20573, 26079, 32626, 40338, 49346], +[5, 20, 54, 111, 200, 339, 551, 863, 1338, 2203, 4189, 9270, 22068, 52271, 118490, 254073, 515553, 994838, 1837662, 3275301, 5689494], +[11, 19, 37, 74, 152, 315, 630, 1176, 2019, 3189, 4728, 6991, 11599, 23863, 58350, 151043, 385257, 945993, 2232085, 5082986, 11226568], +[-6, -5, -1, 6, 16, 29, 45, 64, 86, 111, 139, 170, 204, 241, 281, 324, 370, 419, 471, 526, 584], +[19, 44, 79, 123, 175, 234, 299, 369, 443, 520, 599, 679, 759, 838, 915, 989, 1059, 1124, 1183, 1235, 1279], +[20, 26, 41, 76, 144, 261, 459, 824, 1572, 3189, 6707, 14297, 30581, 65483, 140200, 299218, 633600, 1324592, 2722729, 5487182, 10824554], +[2, 13, 49, 134, 316, 686, 1400, 2714, 5060, 9211, 16601, 29879, 53781, 96407, 171038, 298877, 513930, 873445, 1482345, 2550372, 4520094], +[7, 22, 55, 116, 218, 381, 645, 1090, 1862, 3209, 5540, 9533, 16335, 27918, 47680, 81409, 138761, 235440, 396309, 659706, 1083288], +[23, 34, 43, 54, 73, 105, 151, 202, 234, 223, 220, 555, 2284, 8074, 23894, 62315, 149406, 340397, 757350, 1681105, 3771572], +[-2, 9, 31, 72, 157, 346, 769, 1701, 3724, 8065, 17266, 36441, 75513, 153008, 302220, 580858, 1085650, 1973817, 3493849, 6028622, 10154597], +[17, 35, 83, 175, 326, 554, 878, 1305, 1800, 2233, 2292, 1349, -1702, -8485, -20570, -37084, -47977, -18173, 145725, 659887, 1980386], +[6, 19, 49, 119, 273, 598, 1257, 2530, 4856, 8858, 15310, 24963, 38082, 53479, 66865, 68818, 44405, -18660, -94790, -14282, 809438], +[17, 21, 22, 20, 15, 7, -4, -18, -35, -55, -78, -104, -133, -165, -200, -238, -279, -323, -370, -420, -473], +[8, 23, 59, 139, 312, 672, 1383, 2710, 5056, 9005, 15371, 25253, 40096, 61758, 92583, 135480, 194008, 272467, 375995, 510671, 683624], +[9, 16, 34, 63, 103, 154, 216, 289, 373, 468, 574, 691, 819, 958, 1108, 1269, 1441, 1624, 1818, 2023, 2239], +[8, 19, 59, 140, 275, 481, 794, 1315, 2308, 4381, 8817, 18206, 37692, 77458, 157694, 318613, 640892, 1287715, 2591041, 5226414, 10560561], +[8, 21, 37, 57, 82, 107, 117, 88, -4, -163, -339, -377, 54, 1555, 5117, 12270, 25264, 47285, 82709, 137397, 219034], +[22, 34, 44, 52, 58, 62, 64, 64, 62, 58, 52, 44, 34, 22, 8, -8, -26, -46, -68, -92, -118], +[28, 57, 114, 220, 416, 779, 1446, 2651, 4785, 8494, 14832, 25483, 43057, 71450, 116238, 185052, 287858, 437047, 647230, 934638, 1316054], +[16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96], +[28, 39, 48, 62, 97, 180, 347, 630, 1022, 1413, 1518, 905, -557, -1064, 7553, 50137, 189888, 570667, 1494764, 3559032, 7883557], +[5, 0, 3, 30, 106, 262, 542, 1035, 1947, 3728, 7269, 14184, 27192, 50614, 91000, 157901, 264801, 430224, 679031, 1043922, 1567158], +[4, 21, 55, 119, 239, 461, 864, 1591, 2913, 5356, 9967, 18894, 36631, 72557, 145803, 294037, 588486, 1158435, 2229571, 4181885, 7634411], +[8, 11, 15, 33, 81, 182, 384, 805, 1728, 3777, 8206, 17321, 35023, 67400, 123199, 213865, 352632, 551879, 817609, 1139457, 1474069], +[6, 15, 30, 69, 162, 358, 754, 1560, 3223, 6658, 13679, 27799, 55705, 109973, 214073, 411584, 783020, 1476065, 2758724, 5110417, 9373988], +[18, 26, 37, 54, 84, 138, 231, 382, 614, 954, 1433, 2086, 2952, 4074, 5499, 7278, 9466, 12122, 15309, 19094, 23548], +[3, -2, -7, -12, -17, -22, -27, -32, -37, -42, -47, -52, -57, -62, -67, -72, -77, -82, -87, -92, -97], +[16, 32, 61, 121, 242, 466, 847, 1451, 2356, 3652, 5441, 7837, 10966, 14966, 19987, 26191, 33752, 42856, 53701, 66497, 81466], +[13, 35, 79, 160, 302, 554, 1015, 1865, 3399, 6061, 10475, 17470, 28096, 43628, 65555, 95551, 135425, 187047, 252247, 332684, 429682], +[13, 6, -9, -20, 11, 156, 538, 1364, 2981, 5967, 11279, 20495, 36207, 62647, 106658, 179157, 297277, 487420, 789503, 1262734, 1993315], +[14, 11, 18, 51, 141, 348, 790, 1714, 3660, 7803, 16602, 34939, 71995, 144184, 279550, 524126, 950858, 1671811, 2854498, 4743307, 7687145], +[2, 7, 22, 56, 123, 242, 437, 737, 1176, 1793, 2632, 3742, 5177, 6996, 9263, 12047, 15422, 19467, 24266, 29908, 36487], +[19, 34, 68, 128, 220, 349, 519, 733, 993, 1300, 1654, 2054, 2498, 2983, 3505, 4059, 4639, 5238, 5848, 6460, 7064], +[21, 48, 85, 132, 195, 292, 468, 836, 1684, 3739, 8772, 20876, 48964, 111327, 243473, 510946, 1029407, 1994954, 3728471, 6738732, 11810049], +[11, 27, 55, 108, 210, 394, 696, 1143, 1733, 2405, 2997, 3190, 2436, -132, -5810, -16455, -34641, -63841, -108637, -174960, -270362], +[12, 12, 12, 25, 90, 292, 791, 1869, 4012, 8064, 15537, 29266, 54829, 103647, 199701, 393835, 793523, 1623291, 3344337, 6885726, 14081159], +[5, 13, 31, 72, 164, 358, 736, 1410, 2499, 4070, 6039, 8076, 9700, 11088, 15835, 38309, 120943, 371965, 1044017, 2693426, 6497234], +[-1, -4, 4, 46, 162, 411, 867, 1607, 2698, 4206, 6273, 9338, 14615, 24985, 46510, 90835, 178809, 345728, 648682, 1176574, 2063472], +[8, 16, 23, 40, 92, 216, 455, 847, 1408, 2108, 2839, 3374, 3316, 2036, -1401, -8323, -20552, -40520, -71401, -117260, -183220], +[27, 54, 93, 143, 215, 340, 581, 1059, 2009, 3892, 7603, 14833, 28665, 54510, 101519, 184641, 327535, 566586, 956321, 1576571, 2541779], +[18, 25, 37, 63, 114, 201, 333, 515, 746, 1017, 1309, 1591, 1818, 1929, 1845, 1467, 674, -679, -2763, -5777, -9950], +[11, 23, 58, 131, 266, 508, 956, 1834, 3618, 7240, 14408, 28142, 53779, 101035, 188408, 352630, 668776, 1292502, 2547568, 5104551, 10339633], +[20, 30, 55, 112, 230, 464, 919, 1792, 3444, 6514, 12092, 22012, 39486, 70717, 129039, 244932, 488666, 1018738, 2181538, 4711697, 10130222], +[8, 15, 22, 29, 36, 43, 50, 57, 64, 71, 78, 85, 92, 99, 106, 113, 120, 127, 134, 141, 148], +[8, 17, 18, 5, -32, -110, -256, -510, -928, -1585, -2578, -4029, -6088, -8936, -12788, -17896, -24552, -33091, -43894, -57391, -74064], +[0, 6, 28, 73, 155, 304, 573, 1043, 1826, 3066, 4938, 7645, 11413, 16484, 23107, 31527, 41972, 54638, 69672, 87153, 107071], +[8, 14, 26, 39, 49, 61, 112, 320, 974, 2687, 6657, 15139, 32341, 66134, 131237, 254984, 487637, 921079, 1723959, 3210704, 5981290], +[-3, 6, 32, 88, 209, 468, 1005, 2092, 4276, 8669, 17497, 35106, 69812, 137381, 267702, 517614, 995199, 1904592, 3626038, 6854228, 12829699], +[16, 14, 18, 32, 52, 64, 53, 40, 180, 979, 3722, 11247, 29252, 68383, 147421, 297965, 571096, 1046604, 1845466, 3146378, 5207268], +[0, 19, 60, 146, 330, 708, 1432, 2721, 4864, 8205, 13096, 19800, 28322, 38142, 47820, 54439, 52848, 34663, -13020, -109250, -281238], +[19, 37, 70, 119, 185, 269, 372, 495, 639, 805, 994, 1207, 1445, 1709, 2000, 2319, 2667, 3045, 3454, 3895, 4369], +[8, 18, 30, 51, 92, 174, 350, 764, 1787, 4310, 10347, 24225, 54843, 119816, 252855, 516572, 1024178, 1975442, 3715028, 6825207, 12270294], +[9, 31, 64, 108, 163, 229, 306, 394, 493, 603, 724, 856, 999, 1153, 1318, 1494, 1681, 1879, 2088, 2308, 2539], +[27, 36, 46, 65, 110, 223, 504, 1178, 2725, 6116, 13214, 27417, 54640, 104755, 193632, 345950, 598975, 1007532, 1650430, 2638633, 4125506], +[-3, -9, -19, -25, -9, 63, 252, 660, 1449, 2882, 5441, 10155, 19412, 38768, 80661, 171586, 365345, 766697, 1572457, 3141343, 6110353], +[9, 13, 16, 19, 30, 81, 256, 730, 1819, 4041, 8188, 15409, 27304, 46029, 74412, 116080, 175597, 258613, 372024, 524143, 724882], +[8, 17, 26, 35, 44, 53, 62, 71, 80, 89, 98, 107, 116, 125, 134, 143, 152, 161, 170, 179, 188], +[13, 29, 69, 150, 300, 564, 1014, 1770, 3055, 5340, 9688, 18482, 36824, 75023, 152753, 305660, 595433, 1124631, 2057879, 3651414, 6293380], +[19, 39, 64, 101, 169, 299, 534, 929, 1551, 2479, 3804, 5629, 8069, 11251, 15314, 20409, 26699, 34359, 43576, 54549, 67489], +[26, 48, 79, 119, 168, 226, 293, 369, 454, 548, 651, 763, 884, 1014, 1153, 1301, 1458, 1624, 1799, 1983, 2176], +[16, 28, 45, 62, 80, 120, 240, 563, 1330, 3003, 6482, 13603, 28310, 59352, 126262, 272164, 590489, 1279633, 2753130, 5858989, 12311553], +[16, 27, 38, 49, 60, 71, 82, 93, 104, 115, 126, 137, 148, 159, 170, 181, 192, 203, 214, 225, 236], +[16, 26, 52, 107, 212, 412, 806, 1601, 3204, 6384, 12578, 24502, 47411, 91748, 178785, 352718, 706597, 1437520, 2962583, 6158201, 12843931], +[15, 23, 44, 100, 234, 527, 1138, 2396, 4995, 10379, 21457, 43857, 88008, 172421, 328611, 608145, 1092295, 1904695, 3227218, 5318970, 8537806], +[19, 35, 67, 125, 219, 359, 555, 817, 1155, 1579, 2099, 2725, 3467, 4335, 5339, 6489, 7795, 9267, 10915, 12749, 14779], +[14, 9, -2, -25, -60, -96, -107, -38, 250, 1146, 3714, 10678, 28555, 72047, 172745, 395881, 871826, 1854119, 3824278, 7677249, 15042442], +[0, 14, 48, 119, 263, 559, 1175, 2446, 5004, 10002, 19512, 37235, 69743, 128583, 233715, 418934, 740144, 1287614, 2203656, 3707527, 6129775], +[-6, -13, -11, 9, 54, 127, 233, 409, 798, 1797, 4331, 10342, 23629, 51210, 105348, 206191, 384454, 682459, 1149765, 1826027, 2697892], +[14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6], +[9, 15, 23, 41, 93, 228, 528, 1127, 2265, 4422, 8622, 17094, 34685, 71869, 151157, 320706, 682873, 1452897, 3076233, 6455943, 13379245], +[26, 38, 54, 85, 154, 309, 648, 1354, 2736, 5284, 9786, 17637, 31605, 57512, 107535, 206117, 399770, 772302, 1467138, 2718337, 4891512], +[7, 2, -4, -11, -19, -28, -38, -49, -61, -74, -88, -103, -119, -136, -154, -173, -193, -214, -236, -259, -283], +[17, 40, 72, 120, 202, 355, 665, 1340, 2867, 6327, 14000, 30508, 64985, 135242, 275772, 552897, 1092529, 2128842, 4085140, 7700052, 14210216], +[-3, -4, -7, -12, -19, -28, -39, -52, -67, -84, -103, -124, -147, -172, -199, -228, -259, -292, -327, -364, -403], +[9, 21, 38, 62, 99, 161, 268, 450, 749, 1221, 1938, 2990, 4487, 6561, 9368, 13090, 17937, 24149, 31998, 41790, 53867], +[2, 9, 39, 99, 204, 393, 760, 1519, 3132, 6545, 13600, 27720, 54996, 105835, 197349, 356668, 625334, 1064865, 1763453, 2843561, 4469892], +[20, 33, 49, 75, 125, 228, 457, 1004, 2337, 5480, 12453, 26893, 54846, 105671, 192927, 335020, 555266, 880875, 1340177, 1957191, 2742379], +[18, 21, 16, 6, 5, 57, 270, 860, 2190, 4774, 9202, 15936, 24945, 35235, 44593, 50493, 54394, 73951, 171296, 510662, 1464845], +[10, 11, 18, 38, 71, 100, 71, -142, -790, -2316, -5409, -10945, -19511, -29701, -33227, -2480, 138638, 579164, 1757487, 4641596, 11293649], +[25, 33, 43, 67, 138, 323, 742, 1611, 3346, 6797, 13731, 27756, 55976, 111792, 219447, 421300, 789851, 1449309, 2618271, 4700169, 8479106], +[27, 42, 62, 88, 120, 169, 286, 615, 1492, 3635, 8492, 18826, 39628, 79522, 153115, 285551, 522357, 951296, 1749478, 3279940, 6279276], +[-1, 11, 47, 125, 280, 574, 1106, 2022, 3525, 5885, 9449, 14651, 22022, 32200, 45940, 64124, 87771, 118047, 156275, 203945, 262724], +[13, 21, 51, 115, 225, 393, 631, 951, 1365, 1885, 2523, 3291, 4201, 5265, 6495, 7903, 9501, 11301, 13315, 15555, 18033], +[20, 35, 53, 83, 140, 245, 425, 713, 1148, 1775, 2645, 3815, 5348, 7313, 9785, 12845, 16580, 21083, 26453, 32795, 40220], +[10, 26, 63, 132, 248, 429, 694, 1074, 1663, 2751, 5098, 10427, 22235, 47044, 96239, 188667, 354200, 638496, 1109225, 1864062, 3040786], +[6, -1, -9, -15, -17, -13, 13, 141, 635, 2188, 6391, 16606, 39556, 88146, 186315, 377108, 735668, 1389501, 2549183, 4553679, 7935653], +[9, 15, 43, 117, 265, 514, 885, 1388, 2017, 2745, 3519, 4255, 4833, 5092, 4825, 3774, 1625, -1997, -7533, -15495, -26471], +[7, 22, 41, 65, 106, 207, 489, 1245, 3117, 7431, 16845, 36609, 76972, 157632, 315649, 618971, 1188707, 2234572, 4109585, 7392185, 13006510], +[10, 9, 5, -1, 3, 51, 224, 700, 1840, 4321, 9327, 18809, 35825, 64971, 112914, 189038, 306214, 481705, 738217, 1105107, 1619759], +[12, 16, 30, 69, 148, 282, 486, 775, 1164, 1668, 2302, 3081, 4020, 5134, 6438, 7947, 9676, 11640, 13854, 16333, 19092], +[1, 0, 10, 42, 98, 172, 270, 462, 979, 2368, 5718, 12970, 27324, 53756, 99658, 175614, 296325, 481696, 758098, 1159818, 1730710], +[8, 19, 38, 73, 142, 283, 562, 1079, 1973, 3430, 5708, 9217, 14739, 23954, 40566, 72513, 136014, 262573, 510546, 983505, 1858428], +[9, 24, 57, 114, 205, 359, 643, 1184, 2197, 4026, 7209, 12582, 21441, 35785, 58667, 94684, 150641, 236428, 366153, 559578, 843909], +[8, 14, 22, 32, 44, 58, 74, 92, 112, 134, 158, 184, 212, 242, 274, 308, 344, 382, 422, 464, 508], +[24, 34, 44, 54, 64, 74, 84, 94, 104, 114, 124, 134, 144, 154, 164, 174, 184, 194, 204, 214, 224], +[16, 30, 63, 126, 233, 405, 686, 1187, 2184, 4316, 8979, 19130, 40965, 87415, 185254, 389023, 807192, 1649322, 3307839, 6494862, 12463897], +[-7, -7, 1, 32, 121, 335, 787, 1666, 3321, 6479, 12739, 25563, 52073, 106047, 212569, 414805, 783321, 1428197, 2513885, 4276266, 7040633], +[-2, 1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58], +[13, 27, 38, 41, 36, 48, 177, 688, 2156, 5707, 13455, 29337, 60698, 121182, 235783, 449463, 842011, 1554867, 2842648, 5177133, 9461476], +[15, 42, 93, 182, 326, 549, 884, 1374, 2086, 3178, 5119, 9300, 19562, 45721, 111199, 268798, 632393, 1439844, 3177921, 6832092, 14389654], +[7, 28, 73, 151, 265, 408, 559, 679, 707, 556, 109, -785, -2315, -4712, -8253, -13265, -20129, -29284, -41231, -56537, -75839], +[8, 5, 13, 42, 97, 177, 284, 446, 766, 1532, 3473, 8340, 20149, 47680, 109278, 241921, 518597, 1082840, 2220086, 4508651, 9140126], +[17, 27, 40, 71, 149, 317, 632, 1165, 2001, 3239, 4992, 7387, 10565, 14681, 19904, 26417, 34417, 44115, 55736, 69519, 85717], +[24, 37, 47, 65, 117, 257, 594, 1347, 2963, 6367, 13474, 28217, 58615, 120994, 248715, 510261, 1046343, 2144574, 4386122, 8926186, 18016274], +[11, 16, 36, 80, 158, 277, 445, 706, 1254, 2711, 6703, 16929, 40991, 93338, 199774, 404089, 777493, 1431666, 2536382, 4342822, 7213860], +[0, -2, 8, 48, 141, 321, 657, 1303, 2580, 5096, 9915, 18799, 34571, 61685, 107144, 181982, 303624, 499562, 812938, 1310810, 2096097], +[4, 15, 39, 91, 211, 473, 995, 1967, 3741, 7078, 13740, 27774, 58093, 123376, 261026, 543285, 1106377, 2204300, 4310572, 8314176, 15899538], +[-7, 6, 36, 87, 163, 272, 446, 788, 1568, 3411, 7651, 16966, 36460, 75419, 150039, 287505, 531891, 952452, 1654990, 2797097, 4608209], +[13, 29, 56, 95, 152, 244, 405, 692, 1191, 2023, 3350, 5381, 8378, 12662, 18619, 26706, 37457, 51489, 69508, 92315, 120812], +[15, 27, 59, 125, 237, 417, 722, 1283, 2361, 4428, 8300, 15415, 28528, 53504, 103742, 210470, 445527, 969865, 2133765, 4678765, 10135083], +[20, 31, 57, 122, 274, 596, 1223, 2377, 4439, 8101, 14695, 26909, 50338, 96812, 191434, 387177, 794467, 1639641, 3377468, 6902112, 13932807], +[10, 37, 91, 200, 416, 820, 1528, 2716, 4696, 8091, 14175, 25464, 46666, 86122, 157896, 284700, 501870, 862641, 1445003, 2360456, 3765020], +[6, 24, 54, 95, 153, 251, 440, 812, 1516, 2778, 4926, 8421, 13895, 22197, 34448, 52106, 77042, 111628, 158838, 222363, 306741], +[9, 24, 49, 84, 125, 162, 193, 281, 693, 2172, 6405, 16762, 39393, 84782, 169869, 320863, 576881, 994560, 1653801, 2664816, 4176661], +[3, 10, 23, 57, 149, 386, 945, 2142, 4499, 8866, 16685, 30566, 55492, 101260, 187366, 352765, 675303, 1309938, 2562335, 5026719, 9836291], +[15, 29, 55, 109, 226, 481, 1024, 2134, 4299, 8344, 15672, 28779, 52397, 95981, 178896, 340733, 660899, 1294259, 2533505, 4914517, 9388784], +[14, 33, 78, 166, 331, 644, 1248, 2423, 4711, 9165, 17861, 34963, 68917, 136884, 273538, 548338, 1099300, 2198986, 4383250, 8701159, 17195603], +[7, 5, 5, 7, 11, 17, 25, 35, 47, 61, 77, 95, 115, 137, 161, 187, 215, 245, 277, 311, 347], +[0, 2, 9, 21, 38, 60, 87, 119, 156, 198, 245, 297, 354, 416, 483, 555, 632, 714, 801, 893, 990], +[8, 11, 29, 79, 200, 478, 1087, 2365, 4957, 10076, 19965, 38689, 73433, 136495, 248086, 439830, 758518, 1269449, 2059289, 3241351, 4974534], +[9, 26, 71, 154, 282, 459, 686, 961, 1279, 1632, 2009, 2396, 2776, 3129, 3432, 3659, 3781, 3766, 3579, 3182, 2534], +[-8, -9, -1, 23, 70, 147, 261, 419, 628, 895, 1227, 1631, 2114, 2683, 3345, 4107, 4976, 5959, 7063, 8295, 9662], +[14, 38, 88, 183, 349, 621, 1047, 1694, 2656, 4064, 6098, 9001, 13095, 18799, 26649, 37320, 51650, 70666, 95612, 127979, 169537], +[1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 61], +[10, 17, 33, 71, 156, 319, 593, 1016, 1655, 2681, 4550, 8393, 16823, 35591, 76964, 166498, 356232, 749489, 1545759, 3118955, 6149158], +[-2, 5, 20, 55, 147, 378, 896, 1945, 3924, 7507, 13868, 25067, 44665, 78648, 136752, 234293, 394618, 652305, 1057252, 1679807, 2617103], +[-2, -3, -3, 12, 76, 250, 640, 1443, 3044, 6202, 12405, 24581, 48599, 96524, 193673, 393656, 809674, 1677915, 3482413, 7194006, 14714566], +[-5, -2, 2, 11, 40, 131, 388, 1045, 2594, 6015, 13162, 27362, 54272, 103007, 187497, 327953, 552225, 896728, 1406510, 2133961, 3135644], +[-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21], +[6, 23, 51, 90, 140, 201, 273, 356, 450, 555, 671, 798, 936, 1085, 1245, 1416, 1598, 1791, 1995, 2210, 2436], +[22, 44, 78, 135, 237, 421, 758, 1410, 2772, 5783, 12540, 27421, 59046, 123639, 250801, 493519, 945638, 1772306, 3262446, 5917591, 10599023], +[24, 37, 60, 106, 197, 375, 727, 1435, 2867, 5730, 11311, 21837, 40990, 74618, 131688, 225532, 375442, 608675, 962934, 1489396, 2256363], +[12, 20, 49, 112, 222, 392, 635, 964, 1392, 1932, 2597, 3400, 4354, 5472, 6767, 8252, 9940, 11844, 13977, 16352, 18982], +[2, 7, 24, 61, 126, 227, 372, 569, 826, 1151, 1552, 2037, 2614, 3291, 4076, 4977, 6002, 7159, 8456, 9901, 11502], +[12, 11, 22, 60, 158, 379, 821, 1618, 2953, 5122, 8728, 15159, 27666, 53731, 110255, 234858, 510014, 1112985, 2415218, 5172306, 10872818], +[17, 24, 49, 120, 294, 677, 1456, 2952, 5715, 10719, 19792, 36560, 68444, 130715, 254454, 501802, 994701, 1968430, 3870295, 7539464, 14530122], +[25, 40, 65, 122, 253, 535, 1117, 2293, 4630, 9184, 17861, 34010, 63355, 115342, 204806, 353380, 588983, 939636, 1414390, 1959381, 2372399], +[25, 52, 90, 138, 195, 260, 332, 410, 493, 580, 670, 762, 855, 948, 1040, 1130, 1217, 1300, 1378, 1450, 1515], +[0, 2, 24, 87, 221, 468, 885, 1547, 2550, 4014, 6086, 8943, 12795, 17888, 24507, 32979, 43676, 57018, 73476, 93575, 117897], +[19, 32, 61, 117, 214, 369, 603, 947, 1457, 2242, 3509, 5629, 9228, 15307, 25395, 41739, 67535, 107204, 166717, 253973, 379234], +[23, 32, 38, 44, 60, 103, 197, 373, 669, 1130, 1808, 2762, 4058, 5769, 7975, 10763, 14227, 18468, 23594, 29720, 36968], +[4, 11, 19, 35, 76, 180, 439, 1069, 2539, 5797, 12662, 26510, 53500, 104832, 201057, 380617, 717363, 1357502, 2598934, 5062820, 10063437], +[10, 19, 23, 14, -24, -121, -314, -610, -897, -761, 888, 6598, 22021, 59353, 144459, 331532, 733040, 1580211, 3343069, 6963206, 14293206], +[3, 17, 48, 105, 201, 354, 600, 1028, 1847, 3495, 6800, 13203, 25053, 45984, 81384, 138966, 229451, 367373, 572016, 868493, 1288977], +[-4, -3, 10, 49, 132, 289, 583, 1147, 2252, 4449, 8873, 17855, 36050, 72341, 142802, 274973, 513588, 927669, 1618516, 2727541, 4442064], +[19, 39, 74, 133, 236, 422, 765, 1415, 2696, 5313, 10758, 22099, 45557, 93732, 192181, 392487, 797276, 1606233, 3197558, 6267150, 12058959], +[-7, -10, -13, -16, -19, -22, -25, -28, -31, -34, -37, -40, -43, -46, -49, -52, -55, -58, -61, -64, -67], +[21, 44, 74, 122, 221, 432, 849, 1603, 2865, 4848, 7808, 12044, 17897, 25748, 36015, 49149, 65629, 85956, 110646, 140222, 175205], +[18, 26, 39, 66, 116, 198, 321, 494, 726, 1026, 1403, 1866, 2424, 3086, 3861, 4758, 5786, 6954, 8271, 9746, 11388], +[21, 40, 78, 164, 356, 766, 1605, 3259, 6420, 12322, 23187, 43106, 79841, 148586, 279840, 535679, 1042583, 2055644, 4079972, 8092520, 15934162], +[20, 37, 62, 95, 136, 185, 242, 307, 380, 461, 550, 647, 752, 865, 986, 1115, 1252, 1397, 1550, 1711, 1880], +[0, 2, 15, 48, 121, 283, 642, 1407, 2942, 5832, 10961, 19602, 33519, 55081, 87388, 134409, 201132, 293726, 419715, 588164, 809877], +[8, 13, 15, 13, 15, 42, 131, 338, 755, 1592, 3455, 8105, 20256, 51423, 127543, 303162, 686530, 1482119, 3060047, 6065853, 11589253], +[12, 30, 59, 93, 125, 157, 214, 361, 722, 1498, 2987, 5640, 10262, 18599, 34737, 67942, 137708, 281702, 566759, 1101727, 2048287], +[-3, 10, 49, 127, 264, 492, 863, 1464, 2440, 4028, 6633, 11078, 19417, 37246, 79490, 183510, 436575, 1030078, 2361565, 5219525, 11107638], +[16, 33, 54, 90, 174, 378, 846, 1849, 3867, 7702, 14625, 26559, 46299, 77769, 126315, 199032, 305122, 456279, 667096, 955488, 1343124], +[19, 43, 88, 176, 343, 647, 1194, 2198, 4111, 7897, 15598, 31482, 64323, 131829, 269087, 544536, 1090317, 2160903, 4249054, 8320480, 16296305], +[22, 41, 67, 112, 212, 447, 969, 2039, 4084, 7808, 14445, 26357, 48398, 90840, 175255, 345646, 688410, 1366499, 2675535, 5132758, 9613680], +[12, 25, 47, 89, 162, 277, 445, 677, 984, 1377, 1867, 2465, 3182, 4029, 5017, 6157, 7460, 8937, 10599, 12457, 14522], +[5, 0, -7, -1, 49, 197, 534, 1225, 2596, 5304, 10634, 21018, 41034, 79540, 154415, 302881, 602927, 1215420, 2462671, 4968277, 9895903], +[-9, -14, -15, 1, 65, 237, 627, 1430, 2974, 5775, 10594, 18507, 31038, 50464, 80459, 127293, 201992, 324897, 538038, 942790, 1811370], +[2, 4, 0, -10, -11, 41, 233, 709, 1684, 3458, 6430, 11112, 18143, 28303, 42527, 61919, 87766, 121552, 164972, 219946, 288633], +[7, 26, 67, 150, 317, 656, 1342, 2714, 5434, 10819, 21508, 42739, 84695, 166680, 324376, 622208, 1174037, 2177180, 3967333, 7105608, 12513901], +[12, 22, 38, 64, 119, 247, 532, 1123, 2276, 4424, 8309, 15295, 28210, 53572, 107038, 225653, 493336, 1090494, 2385292, 5093646, 10548309], +[14, 12, 10, 19, 59, 159, 357, 700, 1244, 2054, 3204, 4777, 6865, 9569, 12999, 17274, 22522, 28880, 36494, 45519, 56119], +[2, 14, 43, 115, 280, 632, 1341, 2710, 5286, 10076, 18959, 35465, 66244, 123814, 231609, 433008, 806986, 1494370, 2740499, 4962479, 8852304], +[16, 36, 82, 165, 307, 556, 1007, 1841, 3405, 6374, 12066, 23034, 44170, 84820, 163047, 314653, 612780, 1210538, 2432293, 4964944, 10250289], +[10, 8, 10, 20, 58, 188, 557, 1451, 3382, 7223, 14402, 27147, 48738, 83665, 137509, 216252, 324578, 462546, 619794, 766166, 837338], +[9, 22, 46, 85, 154, 288, 571, 1200, 2601, 5616, 11777, 23672, 45407, 83249, 146871, 252546, 431725, 752582, 1369644, 2629419, 5280540], +[16, 20, 35, 87, 210, 449, 878, 1653, 3133, 6129, 12402, 25663, 53593, 111897, 232285, 477770, 971150, 1946550, 3840269, 7447123, 14183748], +[22, 44, 94, 197, 405, 821, 1643, 3250, 6376, 12465, 24392, 47913, 94545, 187207, 371116, 734593, 1448530, 2841203, 5540681, 10747619, 20760527], +[4, 15, 42, 101, 226, 487, 1024, 2115, 4318, 8768, 17778, 36006, 72647, 145461, 288069, 563007, 1084756, 2059673, 3853830, 7105719, 12909204], +[15, 23, 48, 115, 271, 611, 1319, 2724, 5371, 10107, 18182, 31365, 52075, 83527, 129893, 196478, 289911, 418351, 591708, 821879, 1122999], +[7, 6, 17, 48, 107, 202, 341, 532, 783, 1102, 1497, 1976, 2547, 3218, 3997, 4892, 5911, 7062, 8353, 9792, 11387], +[-4, 3, 25, 70, 153, 309, 619, 1270, 2682, 5750, 12268, 25628, 51937, 101824, 193553, 358902, 655155, 1190487, 2177891, 4048307, 7684230], +[-2, 4, 19, 40, 65, 112, 264, 766, 2210, 5847, 14057, 30979, 63235, 120551, 215877, 364424, 581237, 878545, 1269600, 1800115, 2661524], +[18, 30, 45, 58, 64, 58, 35, -10, -82, -186, -327, -510, -740, -1022, -1361, -1762, -2230, -2770, -3387, -4086, -4872], +[8, 20, 59, 143, 292, 523, 844, 1247, 1700, 2138, 2453, 2483, 2000, 697, -1826, -6077, -12688, -22432, -36241, -55225, -80692], +[11, 12, 8, -7, -28, -26, 65, 361, 1041, 2360, 4662, 8393, 14114, 22514, 34423, 50825, 72871, 101892, 139412, 187161, 247088], +[6, 6, 19, 54, 113, 189, 264, 307, 272, 96, -303, -1028, -2205, -3985, -6546, -10095, -14870, -21142, -29217, -39438, -52187], +[26, 40, 63, 112, 222, 455, 906, 1708, 3036, 5116, 8278, 13187, 21602, 38439, 76677, 167925, 383519, 874229, 1941697, 4162964, 8603981], +[12, 19, 31, 58, 110, 209, 412, 843, 1741, 3551, 7128, 14215, 28539, 58216, 120779, 253209, 531098, 1103839, 2256973, 4519124, 8840092], +[14, 28, 47, 71, 102, 153, 266, 539, 1162, 2462, 4957, 9419, 16946, 29043, 47712, 75551, 115862, 172768, 251339, 357727, 499310], +[19, 22, 38, 89, 208, 457, 958, 1941, 3833, 7447, 14380, 27796, 53861, 104226, 200137, 378978, 704206, 1279303, 2264473, 3888958, 6437241], +[20, 38, 83, 177, 353, 665, 1204, 2120, 3650, 6152, 10145, 16355, 25767, 39683, 59786, 88210, 127616, 181274, 253151, 348005, 471485], +[18, 33, 52, 75, 103, 147, 258, 596, 1573, 4137, 10313, 24197, 53757, 114135, 233848, 466630, 914030, 1767831, 3387708, 6439669, 12137157], +[16, 32, 61, 98, 136, 164, 171, 173, 281, 836, 2678, 7743, 20501, 51456, 125378, 299753, 704238, 1621680, 3648963, 8007452, 17127734], +[0, 9, 25, 62, 141, 293, 566, 1037, 1844, 3286, 6097, 12096, 25583, 56164, 124287, 271914, 582905, 1221701, 2506400, 5046590, 10003946], +[-4, 12, 56, 141, 280, 486, 772, 1151, 1636, 2240, 2976, 3857, 4896, 6106, 7500, 9091, 10892, 12916, 15176, 17685, 20456] +]). diff --git a/09/input.txt b/09/input.txt new file mode 100644 index 0000000..24b4351 --- /dev/null +++ b/09/input.txt @@ -0,0 +1,200 @@ +28 38 58 115 255 558 1167 2343 4564 8699 16328 30378 56447 105549 199601 381868 735876 1418100 2712150 5115341 9472583 +24 34 56 103 191 343 593 990 1602 2520 3862 5777 8449 12101 16999 23456 31836 42558 56100 73003 93875 +12 30 66 118 187 291 486 901 1807 3760 7885 16402 33536 67001 130303 246169 451478 804146 1392500 2347766 3860393 +11 7 -1 -10 4 101 392 1052 2337 4631 8595 15584 28661 54781 109041 222274 453659 910327 1775963 3349730 6094694 +13 26 56 110 200 360 677 1347 2785 5847 12267 25493 52275 105732 211455 420013 833076 1658291 3323777 6713131 13636877 +24 36 50 68 92 124 166 220 288 372 474 596 740 908 1102 1324 1576 1860 2178 2532 2924 +4 10 18 35 81 207 523 1232 2664 5299 9766 16819 27345 42607 65306 103013 177906 352348 792280 1916515 4732055 +2 4 15 46 115 246 479 915 1841 4022 9326 21995 51143 115539 252570 534754 1099830 2205374 4328183 8346246 15873877 +6 16 41 104 240 508 1016 1959 3670 6684 11815 20246 33632 54216 84958 129677 193206 281560 402117 563812 777344 +10 24 59 127 240 410 649 969 1382 1900 2535 3299 4204 5262 6485 7885 9474 11264 13267 15495 17960 +1 3 19 65 161 334 621 1072 1753 2749 4167 6139 8825 12416 17137 23250 31057 40903 53179 68325 86833 +1 3 14 46 118 256 493 869 1431 2233 3336 4808 6724 9166 12223 15991 20573 26079 32626 40338 49346 +5 20 54 111 200 339 551 863 1338 2203 4189 9270 22068 52271 118490 254073 515553 994838 1837662 3275301 5689494 +11 19 37 74 152 315 630 1176 2019 3189 4728 6991 11599 23863 58350 151043 385257 945993 2232085 5082986 11226568 +-6 -5 -1 6 16 29 45 64 86 111 139 170 204 241 281 324 370 419 471 526 584 +19 44 79 123 175 234 299 369 443 520 599 679 759 838 915 989 1059 1124 1183 1235 1279 +20 26 41 76 144 261 459 824 1572 3189 6707 14297 30581 65483 140200 299218 633600 1324592 2722729 5487182 10824554 +2 13 49 134 316 686 1400 2714 5060 9211 16601 29879 53781 96407 171038 298877 513930 873445 1482345 2550372 4520094 +7 22 55 116 218 381 645 1090 1862 3209 5540 9533 16335 27918 47680 81409 138761 235440 396309 659706 1083288 +23 34 43 54 73 105 151 202 234 223 220 555 2284 8074 23894 62315 149406 340397 757350 1681105 3771572 +-2 9 31 72 157 346 769 1701 3724 8065 17266 36441 75513 153008 302220 580858 1085650 1973817 3493849 6028622 10154597 +17 35 83 175 326 554 878 1305 1800 2233 2292 1349 -1702 -8485 -20570 -37084 -47977 -18173 145725 659887 1980386 +6 19 49 119 273 598 1257 2530 4856 8858 15310 24963 38082 53479 66865 68818 44405 -18660 -94790 -14282 809438 +17 21 22 20 15 7 -4 -18 -35 -55 -78 -104 -133 -165 -200 -238 -279 -323 -370 -420 -473 +8 23 59 139 312 672 1383 2710 5056 9005 15371 25253 40096 61758 92583 135480 194008 272467 375995 510671 683624 +9 16 34 63 103 154 216 289 373 468 574 691 819 958 1108 1269 1441 1624 1818 2023 2239 +8 19 59 140 275 481 794 1315 2308 4381 8817 18206 37692 77458 157694 318613 640892 1287715 2591041 5226414 10560561 +8 21 37 57 82 107 117 88 -4 -163 -339 -377 54 1555 5117 12270 25264 47285 82709 137397 219034 +22 34 44 52 58 62 64 64 62 58 52 44 34 22 8 -8 -26 -46 -68 -92 -118 +28 57 114 220 416 779 1446 2651 4785 8494 14832 25483 43057 71450 116238 185052 287858 437047 647230 934638 1316054 +16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 +28 39 48 62 97 180 347 630 1022 1413 1518 905 -557 -1064 7553 50137 189888 570667 1494764 3559032 7883557 +5 0 3 30 106 262 542 1035 1947 3728 7269 14184 27192 50614 91000 157901 264801 430224 679031 1043922 1567158 +4 21 55 119 239 461 864 1591 2913 5356 9967 18894 36631 72557 145803 294037 588486 1158435 2229571 4181885 7634411 +8 11 15 33 81 182 384 805 1728 3777 8206 17321 35023 67400 123199 213865 352632 551879 817609 1139457 1474069 +6 15 30 69 162 358 754 1560 3223 6658 13679 27799 55705 109973 214073 411584 783020 1476065 2758724 5110417 9373988 +18 26 37 54 84 138 231 382 614 954 1433 2086 2952 4074 5499 7278 9466 12122 15309 19094 23548 +3 -2 -7 -12 -17 -22 -27 -32 -37 -42 -47 -52 -57 -62 -67 -72 -77 -82 -87 -92 -97 +16 32 61 121 242 466 847 1451 2356 3652 5441 7837 10966 14966 19987 26191 33752 42856 53701 66497 81466 +13 35 79 160 302 554 1015 1865 3399 6061 10475 17470 28096 43628 65555 95551 135425 187047 252247 332684 429682 +13 6 -9 -20 11 156 538 1364 2981 5967 11279 20495 36207 62647 106658 179157 297277 487420 789503 1262734 1993315 +14 11 18 51 141 348 790 1714 3660 7803 16602 34939 71995 144184 279550 524126 950858 1671811 2854498 4743307 7687145 +2 7 22 56 123 242 437 737 1176 1793 2632 3742 5177 6996 9263 12047 15422 19467 24266 29908 36487 +19 34 68 128 220 349 519 733 993 1300 1654 2054 2498 2983 3505 4059 4639 5238 5848 6460 7064 +21 48 85 132 195 292 468 836 1684 3739 8772 20876 48964 111327 243473 510946 1029407 1994954 3728471 6738732 11810049 +11 27 55 108 210 394 696 1143 1733 2405 2997 3190 2436 -132 -5810 -16455 -34641 -63841 -108637 -174960 -270362 +12 12 12 25 90 292 791 1869 4012 8064 15537 29266 54829 103647 199701 393835 793523 1623291 3344337 6885726 14081159 +5 13 31 72 164 358 736 1410 2499 4070 6039 8076 9700 11088 15835 38309 120943 371965 1044017 2693426 6497234 +-1 -4 4 46 162 411 867 1607 2698 4206 6273 9338 14615 24985 46510 90835 178809 345728 648682 1176574 2063472 +8 16 23 40 92 216 455 847 1408 2108 2839 3374 3316 2036 -1401 -8323 -20552 -40520 -71401 -117260 -183220 +27 54 93 143 215 340 581 1059 2009 3892 7603 14833 28665 54510 101519 184641 327535 566586 956321 1576571 2541779 +18 25 37 63 114 201 333 515 746 1017 1309 1591 1818 1929 1845 1467 674 -679 -2763 -5777 -9950 +11 23 58 131 266 508 956 1834 3618 7240 14408 28142 53779 101035 188408 352630 668776 1292502 2547568 5104551 10339633 +20 30 55 112 230 464 919 1792 3444 6514 12092 22012 39486 70717 129039 244932 488666 1018738 2181538 4711697 10130222 +8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 113 120 127 134 141 148 +8 17 18 5 -32 -110 -256 -510 -928 -1585 -2578 -4029 -6088 -8936 -12788 -17896 -24552 -33091 -43894 -57391 -74064 +0 6 28 73 155 304 573 1043 1826 3066 4938 7645 11413 16484 23107 31527 41972 54638 69672 87153 107071 +8 14 26 39 49 61 112 320 974 2687 6657 15139 32341 66134 131237 254984 487637 921079 1723959 3210704 5981290 +-3 6 32 88 209 468 1005 2092 4276 8669 17497 35106 69812 137381 267702 517614 995199 1904592 3626038 6854228 12829699 +16 14 18 32 52 64 53 40 180 979 3722 11247 29252 68383 147421 297965 571096 1046604 1845466 3146378 5207268 +0 19 60 146 330 708 1432 2721 4864 8205 13096 19800 28322 38142 47820 54439 52848 34663 -13020 -109250 -281238 +19 37 70 119 185 269 372 495 639 805 994 1207 1445 1709 2000 2319 2667 3045 3454 3895 4369 +8 18 30 51 92 174 350 764 1787 4310 10347 24225 54843 119816 252855 516572 1024178 1975442 3715028 6825207 12270294 +9 31 64 108 163 229 306 394 493 603 724 856 999 1153 1318 1494 1681 1879 2088 2308 2539 +27 36 46 65 110 223 504 1178 2725 6116 13214 27417 54640 104755 193632 345950 598975 1007532 1650430 2638633 4125506 +-3 -9 -19 -25 -9 63 252 660 1449 2882 5441 10155 19412 38768 80661 171586 365345 766697 1572457 3141343 6110353 +9 13 16 19 30 81 256 730 1819 4041 8188 15409 27304 46029 74412 116080 175597 258613 372024 524143 724882 +8 17 26 35 44 53 62 71 80 89 98 107 116 125 134 143 152 161 170 179 188 +13 29 69 150 300 564 1014 1770 3055 5340 9688 18482 36824 75023 152753 305660 595433 1124631 2057879 3651414 6293380 +19 39 64 101 169 299 534 929 1551 2479 3804 5629 8069 11251 15314 20409 26699 34359 43576 54549 67489 +26 48 79 119 168 226 293 369 454 548 651 763 884 1014 1153 1301 1458 1624 1799 1983 2176 +16 28 45 62 80 120 240 563 1330 3003 6482 13603 28310 59352 126262 272164 590489 1279633 2753130 5858989 12311553 +16 27 38 49 60 71 82 93 104 115 126 137 148 159 170 181 192 203 214 225 236 +16 26 52 107 212 412 806 1601 3204 6384 12578 24502 47411 91748 178785 352718 706597 1437520 2962583 6158201 12843931 +15 23 44 100 234 527 1138 2396 4995 10379 21457 43857 88008 172421 328611 608145 1092295 1904695 3227218 5318970 8537806 +19 35 67 125 219 359 555 817 1155 1579 2099 2725 3467 4335 5339 6489 7795 9267 10915 12749 14779 +14 9 -2 -25 -60 -96 -107 -38 250 1146 3714 10678 28555 72047 172745 395881 871826 1854119 3824278 7677249 15042442 +0 14 48 119 263 559 1175 2446 5004 10002 19512 37235 69743 128583 233715 418934 740144 1287614 2203656 3707527 6129775 +-6 -13 -11 9 54 127 233 409 798 1797 4331 10342 23629 51210 105348 206191 384454 682459 1149765 1826027 2697892 +14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 +9 15 23 41 93 228 528 1127 2265 4422 8622 17094 34685 71869 151157 320706 682873 1452897 3076233 6455943 13379245 +26 38 54 85 154 309 648 1354 2736 5284 9786 17637 31605 57512 107535 206117 399770 772302 1467138 2718337 4891512 +7 2 -4 -11 -19 -28 -38 -49 -61 -74 -88 -103 -119 -136 -154 -173 -193 -214 -236 -259 -283 +17 40 72 120 202 355 665 1340 2867 6327 14000 30508 64985 135242 275772 552897 1092529 2128842 4085140 7700052 14210216 +-3 -4 -7 -12 -19 -28 -39 -52 -67 -84 -103 -124 -147 -172 -199 -228 -259 -292 -327 -364 -403 +9 21 38 62 99 161 268 450 749 1221 1938 2990 4487 6561 9368 13090 17937 24149 31998 41790 53867 +2 9 39 99 204 393 760 1519 3132 6545 13600 27720 54996 105835 197349 356668 625334 1064865 1763453 2843561 4469892 +20 33 49 75 125 228 457 1004 2337 5480 12453 26893 54846 105671 192927 335020 555266 880875 1340177 1957191 2742379 +18 21 16 6 5 57 270 860 2190 4774 9202 15936 24945 35235 44593 50493 54394 73951 171296 510662 1464845 +10 11 18 38 71 100 71 -142 -790 -2316 -5409 -10945 -19511 -29701 -33227 -2480 138638 579164 1757487 4641596 11293649 +25 33 43 67 138 323 742 1611 3346 6797 13731 27756 55976 111792 219447 421300 789851 1449309 2618271 4700169 8479106 +27 42 62 88 120 169 286 615 1492 3635 8492 18826 39628 79522 153115 285551 522357 951296 1749478 3279940 6279276 +-1 11 47 125 280 574 1106 2022 3525 5885 9449 14651 22022 32200 45940 64124 87771 118047 156275 203945 262724 +13 21 51 115 225 393 631 951 1365 1885 2523 3291 4201 5265 6495 7903 9501 11301 13315 15555 18033 +20 35 53 83 140 245 425 713 1148 1775 2645 3815 5348 7313 9785 12845 16580 21083 26453 32795 40220 +10 26 63 132 248 429 694 1074 1663 2751 5098 10427 22235 47044 96239 188667 354200 638496 1109225 1864062 3040786 +6 -1 -9 -15 -17 -13 13 141 635 2188 6391 16606 39556 88146 186315 377108 735668 1389501 2549183 4553679 7935653 +9 15 43 117 265 514 885 1388 2017 2745 3519 4255 4833 5092 4825 3774 1625 -1997 -7533 -15495 -26471 +7 22 41 65 106 207 489 1245 3117 7431 16845 36609 76972 157632 315649 618971 1188707 2234572 4109585 7392185 13006510 +10 9 5 -1 3 51 224 700 1840 4321 9327 18809 35825 64971 112914 189038 306214 481705 738217 1105107 1619759 +12 16 30 69 148 282 486 775 1164 1668 2302 3081 4020 5134 6438 7947 9676 11640 13854 16333 19092 +1 0 10 42 98 172 270 462 979 2368 5718 12970 27324 53756 99658 175614 296325 481696 758098 1159818 1730710 +8 19 38 73 142 283 562 1079 1973 3430 5708 9217 14739 23954 40566 72513 136014 262573 510546 983505 1858428 +9 24 57 114 205 359 643 1184 2197 4026 7209 12582 21441 35785 58667 94684 150641 236428 366153 559578 843909 +8 14 22 32 44 58 74 92 112 134 158 184 212 242 274 308 344 382 422 464 508 +24 34 44 54 64 74 84 94 104 114 124 134 144 154 164 174 184 194 204 214 224 +16 30 63 126 233 405 686 1187 2184 4316 8979 19130 40965 87415 185254 389023 807192 1649322 3307839 6494862 12463897 +-7 -7 1 32 121 335 787 1666 3321 6479 12739 25563 52073 106047 212569 414805 783321 1428197 2513885 4276266 7040633 +-2 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 +13 27 38 41 36 48 177 688 2156 5707 13455 29337 60698 121182 235783 449463 842011 1554867 2842648 5177133 9461476 +15 42 93 182 326 549 884 1374 2086 3178 5119 9300 19562 45721 111199 268798 632393 1439844 3177921 6832092 14389654 +7 28 73 151 265 408 559 679 707 556 109 -785 -2315 -4712 -8253 -13265 -20129 -29284 -41231 -56537 -75839 +8 5 13 42 97 177 284 446 766 1532 3473 8340 20149 47680 109278 241921 518597 1082840 2220086 4508651 9140126 +17 27 40 71 149 317 632 1165 2001 3239 4992 7387 10565 14681 19904 26417 34417 44115 55736 69519 85717 +24 37 47 65 117 257 594 1347 2963 6367 13474 28217 58615 120994 248715 510261 1046343 2144574 4386122 8926186 18016274 +11 16 36 80 158 277 445 706 1254 2711 6703 16929 40991 93338 199774 404089 777493 1431666 2536382 4342822 7213860 +0 -2 8 48 141 321 657 1303 2580 5096 9915 18799 34571 61685 107144 181982 303624 499562 812938 1310810 2096097 +4 15 39 91 211 473 995 1967 3741 7078 13740 27774 58093 123376 261026 543285 1106377 2204300 4310572 8314176 15899538 +-7 6 36 87 163 272 446 788 1568 3411 7651 16966 36460 75419 150039 287505 531891 952452 1654990 2797097 4608209 +13 29 56 95 152 244 405 692 1191 2023 3350 5381 8378 12662 18619 26706 37457 51489 69508 92315 120812 +15 27 59 125 237 417 722 1283 2361 4428 8300 15415 28528 53504 103742 210470 445527 969865 2133765 4678765 10135083 +20 31 57 122 274 596 1223 2377 4439 8101 14695 26909 50338 96812 191434 387177 794467 1639641 3377468 6902112 13932807 +10 37 91 200 416 820 1528 2716 4696 8091 14175 25464 46666 86122 157896 284700 501870 862641 1445003 2360456 3765020 +6 24 54 95 153 251 440 812 1516 2778 4926 8421 13895 22197 34448 52106 77042 111628 158838 222363 306741 +9 24 49 84 125 162 193 281 693 2172 6405 16762 39393 84782 169869 320863 576881 994560 1653801 2664816 4176661 +3 10 23 57 149 386 945 2142 4499 8866 16685 30566 55492 101260 187366 352765 675303 1309938 2562335 5026719 9836291 +15 29 55 109 226 481 1024 2134 4299 8344 15672 28779 52397 95981 178896 340733 660899 1294259 2533505 4914517 9388784 +14 33 78 166 331 644 1248 2423 4711 9165 17861 34963 68917 136884 273538 548338 1099300 2198986 4383250 8701159 17195603 +7 5 5 7 11 17 25 35 47 61 77 95 115 137 161 187 215 245 277 311 347 +0 2 9 21 38 60 87 119 156 198 245 297 354 416 483 555 632 714 801 893 990 +8 11 29 79 200 478 1087 2365 4957 10076 19965 38689 73433 136495 248086 439830 758518 1269449 2059289 3241351 4974534 +9 26 71 154 282 459 686 961 1279 1632 2009 2396 2776 3129 3432 3659 3781 3766 3579 3182 2534 +-8 -9 -1 23 70 147 261 419 628 895 1227 1631 2114 2683 3345 4107 4976 5959 7063 8295 9662 +14 38 88 183 349 621 1047 1694 2656 4064 6098 9001 13095 18799 26649 37320 51650 70666 95612 127979 169537 +1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 +10 17 33 71 156 319 593 1016 1655 2681 4550 8393 16823 35591 76964 166498 356232 749489 1545759 3118955 6149158 +-2 5 20 55 147 378 896 1945 3924 7507 13868 25067 44665 78648 136752 234293 394618 652305 1057252 1679807 2617103 +-2 -3 -3 12 76 250 640 1443 3044 6202 12405 24581 48599 96524 193673 393656 809674 1677915 3482413 7194006 14714566 +-5 -2 2 11 40 131 388 1045 2594 6015 13162 27362 54272 103007 187497 327953 552225 896728 1406510 2133961 3135644 +-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 +6 23 51 90 140 201 273 356 450 555 671 798 936 1085 1245 1416 1598 1791 1995 2210 2436 +22 44 78 135 237 421 758 1410 2772 5783 12540 27421 59046 123639 250801 493519 945638 1772306 3262446 5917591 10599023 +24 37 60 106 197 375 727 1435 2867 5730 11311 21837 40990 74618 131688 225532 375442 608675 962934 1489396 2256363 +12 20 49 112 222 392 635 964 1392 1932 2597 3400 4354 5472 6767 8252 9940 11844 13977 16352 18982 +2 7 24 61 126 227 372 569 826 1151 1552 2037 2614 3291 4076 4977 6002 7159 8456 9901 11502 +12 11 22 60 158 379 821 1618 2953 5122 8728 15159 27666 53731 110255 234858 510014 1112985 2415218 5172306 10872818 +17 24 49 120 294 677 1456 2952 5715 10719 19792 36560 68444 130715 254454 501802 994701 1968430 3870295 7539464 14530122 +25 40 65 122 253 535 1117 2293 4630 9184 17861 34010 63355 115342 204806 353380 588983 939636 1414390 1959381 2372399 +25 52 90 138 195 260 332 410 493 580 670 762 855 948 1040 1130 1217 1300 1378 1450 1515 +0 2 24 87 221 468 885 1547 2550 4014 6086 8943 12795 17888 24507 32979 43676 57018 73476 93575 117897 +19 32 61 117 214 369 603 947 1457 2242 3509 5629 9228 15307 25395 41739 67535 107204 166717 253973 379234 +23 32 38 44 60 103 197 373 669 1130 1808 2762 4058 5769 7975 10763 14227 18468 23594 29720 36968 +4 11 19 35 76 180 439 1069 2539 5797 12662 26510 53500 104832 201057 380617 717363 1357502 2598934 5062820 10063437 +10 19 23 14 -24 -121 -314 -610 -897 -761 888 6598 22021 59353 144459 331532 733040 1580211 3343069 6963206 14293206 +3 17 48 105 201 354 600 1028 1847 3495 6800 13203 25053 45984 81384 138966 229451 367373 572016 868493 1288977 +-4 -3 10 49 132 289 583 1147 2252 4449 8873 17855 36050 72341 142802 274973 513588 927669 1618516 2727541 4442064 +19 39 74 133 236 422 765 1415 2696 5313 10758 22099 45557 93732 192181 392487 797276 1606233 3197558 6267150 12058959 +-7 -10 -13 -16 -19 -22 -25 -28 -31 -34 -37 -40 -43 -46 -49 -52 -55 -58 -61 -64 -67 +21 44 74 122 221 432 849 1603 2865 4848 7808 12044 17897 25748 36015 49149 65629 85956 110646 140222 175205 +18 26 39 66 116 198 321 494 726 1026 1403 1866 2424 3086 3861 4758 5786 6954 8271 9746 11388 +21 40 78 164 356 766 1605 3259 6420 12322 23187 43106 79841 148586 279840 535679 1042583 2055644 4079972 8092520 15934162 +20 37 62 95 136 185 242 307 380 461 550 647 752 865 986 1115 1252 1397 1550 1711 1880 +0 2 15 48 121 283 642 1407 2942 5832 10961 19602 33519 55081 87388 134409 201132 293726 419715 588164 809877 +8 13 15 13 15 42 131 338 755 1592 3455 8105 20256 51423 127543 303162 686530 1482119 3060047 6065853 11589253 +12 30 59 93 125 157 214 361 722 1498 2987 5640 10262 18599 34737 67942 137708 281702 566759 1101727 2048287 +-3 10 49 127 264 492 863 1464 2440 4028 6633 11078 19417 37246 79490 183510 436575 1030078 2361565 5219525 11107638 +16 33 54 90 174 378 846 1849 3867 7702 14625 26559 46299 77769 126315 199032 305122 456279 667096 955488 1343124 +19 43 88 176 343 647 1194 2198 4111 7897 15598 31482 64323 131829 269087 544536 1090317 2160903 4249054 8320480 16296305 +22 41 67 112 212 447 969 2039 4084 7808 14445 26357 48398 90840 175255 345646 688410 1366499 2675535 5132758 9613680 +12 25 47 89 162 277 445 677 984 1377 1867 2465 3182 4029 5017 6157 7460 8937 10599 12457 14522 +5 0 -7 -1 49 197 534 1225 2596 5304 10634 21018 41034 79540 154415 302881 602927 1215420 2462671 4968277 9895903 +-9 -14 -15 1 65 237 627 1430 2974 5775 10594 18507 31038 50464 80459 127293 201992 324897 538038 942790 1811370 +2 4 0 -10 -11 41 233 709 1684 3458 6430 11112 18143 28303 42527 61919 87766 121552 164972 219946 288633 +7 26 67 150 317 656 1342 2714 5434 10819 21508 42739 84695 166680 324376 622208 1174037 2177180 3967333 7105608 12513901 +12 22 38 64 119 247 532 1123 2276 4424 8309 15295 28210 53572 107038 225653 493336 1090494 2385292 5093646 10548309 +14 12 10 19 59 159 357 700 1244 2054 3204 4777 6865 9569 12999 17274 22522 28880 36494 45519 56119 +2 14 43 115 280 632 1341 2710 5286 10076 18959 35465 66244 123814 231609 433008 806986 1494370 2740499 4962479 8852304 +16 36 82 165 307 556 1007 1841 3405 6374 12066 23034 44170 84820 163047 314653 612780 1210538 2432293 4964944 10250289 +10 8 10 20 58 188 557 1451 3382 7223 14402 27147 48738 83665 137509 216252 324578 462546 619794 766166 837338 +9 22 46 85 154 288 571 1200 2601 5616 11777 23672 45407 83249 146871 252546 431725 752582 1369644 2629419 5280540 +16 20 35 87 210 449 878 1653 3133 6129 12402 25663 53593 111897 232285 477770 971150 1946550 3840269 7447123 14183748 +22 44 94 197 405 821 1643 3250 6376 12465 24392 47913 94545 187207 371116 734593 1448530 2841203 5540681 10747619 20760527 +4 15 42 101 226 487 1024 2115 4318 8768 17778 36006 72647 145461 288069 563007 1084756 2059673 3853830 7105719 12909204 +15 23 48 115 271 611 1319 2724 5371 10107 18182 31365 52075 83527 129893 196478 289911 418351 591708 821879 1122999 +7 6 17 48 107 202 341 532 783 1102 1497 1976 2547 3218 3997 4892 5911 7062 8353 9792 11387 +-4 3 25 70 153 309 619 1270 2682 5750 12268 25628 51937 101824 193553 358902 655155 1190487 2177891 4048307 7684230 +-2 4 19 40 65 112 264 766 2210 5847 14057 30979 63235 120551 215877 364424 581237 878545 1269600 1800115 2661524 +18 30 45 58 64 58 35 -10 -82 -186 -327 -510 -740 -1022 -1361 -1762 -2230 -2770 -3387 -4086 -4872 +8 20 59 143 292 523 844 1247 1700 2138 2453 2483 2000 697 -1826 -6077 -12688 -22432 -36241 -55225 -80692 +11 12 8 -7 -28 -26 65 361 1041 2360 4662 8393 14114 22514 34423 50825 72871 101892 139412 187161 247088 +6 6 19 54 113 189 264 307 272 96 -303 -1028 -2205 -3985 -6546 -10095 -14870 -21142 -29217 -39438 -52187 +26 40 63 112 222 455 906 1708 3036 5116 8278 13187 21602 38439 76677 167925 383519 874229 1941697 4162964 8603981 +12 19 31 58 110 209 412 843 1741 3551 7128 14215 28539 58216 120779 253209 531098 1103839 2256973 4519124 8840092 +14 28 47 71 102 153 266 539 1162 2462 4957 9419 16946 29043 47712 75551 115862 172768 251339 357727 499310 +19 22 38 89 208 457 958 1941 3833 7447 14380 27796 53861 104226 200137 378978 704206 1279303 2264473 3888958 6437241 +20 38 83 177 353 665 1204 2120 3650 6152 10145 16355 25767 39683 59786 88210 127616 181274 253151 348005 471485 +18 33 52 75 103 147 258 596 1573 4137 10313 24197 53757 114135 233848 466630 914030 1767831 3387708 6439669 12137157 +16 32 61 98 136 164 171 173 281 836 2678 7743 20501 51456 125378 299753 704238 1621680 3648963 8007452 17127734 +0 9 25 62 141 293 566 1037 1844 3286 6097 12096 25583 56164 124287 271914 582905 1221701 2506400 5046590 10003946 +-4 12 56 141 280 486 772 1151 1636 2240 2976 3857 4896 6106 7500 9091 10892 12916 15176 17685 20456 diff --git a/09/part1.pl b/09/part1.pl new file mode 100644 index 0000000..6d6271b --- /dev/null +++ b/09/part1.pl @@ -0,0 +1,25 @@ +% :- use_module(library(readln)). +% :- initialization(start, main). + +start :- + input(Input), + findall(P, (member(L, Input), predict(L, P)), Ps), + sum_list(Ps, Answer), + writef('Answer=%t\n', [Answer]). + +predict(L, 0) :- maplist(=:=(0), L), !. +predict(L, X) :- + foldl([Li1, Li2, C, D]>>(Li2 is Li1 - C, D = Li1), L, [_ | NewL], 0, _), + predict(NewL, SubX), + last(L, LastL), + X is SubX + LastL. + +% this does not work very lame readln cannot handle negative numbers +% input(Lines) :- +% readln(LineTmp), +% ( (last(LineTmp, end_of_file); LineTmp = []) +% -> Lines = [] +% ; Line = LineTmp, +% input(CdrLine), +% Lines = [Line | CdrLine] +% ). diff --git a/09/part2.pl b/09/part2.pl new file mode 100644 index 0000000..9a06c70 --- /dev/null +++ b/09/part2.pl @@ -0,0 +1,12 @@ +start :- + input(Input), + findall(P, (member(L, Input), predict(L, P)), Ps), + sum_list(Ps, Answer), + writef('Answer=%t\n', [Answer]). + +predict(L, 0) :- maplist(=:=(0), L), !. +predict(L, X) :- + L = [L1 | CdrL], + foldl([Li1, Li2, C, D]>>(Li2 is Li1 - C, D = Li1), L, [_ | NewL], 0, _), + predict(NewL, SubX), + X is L1 - SubX. diff --git a/09/test.pl b/09/test.pl new file mode 100644 index 0000000..ee65d18 --- /dev/null +++ b/09/test.pl @@ -0,0 +1,5 @@ +input([ +[0, 3, 6, 9, 12, 15], +[1, 3, 6, 10, 15, 21], +[10, 13, 16, 21, 30, 45] +]). diff --git a/09/test.txt b/09/test.txt new file mode 100644 index 0000000..539a763 --- /dev/null +++ b/09/test.txt @@ -0,0 +1,3 @@ +0 3 6 9 12 15 +1 3 6 10 15 21 +10 13 16 21 30 45