Author: Nicholas Prado <nmprado@nzen.ws>
Date: Mon Dec 6 01:34:47 UTC 2021
Parent: 4791e0e2024b718a556efcec9285e62c82d3d6a8
Log message:
feat 21 05 map of intersections
1: diff --git a/src/java/y2021/Exercise210501.java b/src/java/y2021/Exercise210501.java 2: new file mode 100644 3: index 0000000..5974bdd 4: --- /dev/null 5: +++ b/src/java/y2021/Exercise210501.java 6: @@ -0,0 +1,143 @@ 7: + 8: +import java.io.IOException; 9: +import java.nio.file.*; 10: +import java.util.*; 11: + 12: +public class Exercise210501 13: +{ 14: + 15: + public static void main( 16: + String args[] 17: + ) { 18: + final String here = "e210501.m "; 19: + if ( args.length < 1 ) 20: + { 21: + throw new RuntimeException( here +"add a filename argument" ); 22: + } 23: + String userSaysFile = args[ 0 ]; 24: + List<String> fileLines = new LinkedList<>(); 25: + try 26: + { 27: + Path where = Paths.get( userSaysFile ); 28: + fileLines = Files.readAllLines( where ); 29: + } 30: + catch ( IOException | InvalidPathException ie ) 31: + { 32: + System.err.println( here +"couldn't read file "+ userSaysFile +" because "+ ie ); 33: + return; 34: + } 35: + /* 36: + - interpretation of spec - 37: + for lines 38: + parse as first and last points 39: + if vertical or horizontal 40: + save points 41: + // diagonal are for later 42: + for values in map 43: + add if total > 1 44: + print total 45: + */ 46: + new Exercise210501().findVents( fileLines ); 47: + } 48: + 49: + 50: + private void findVents( 51: + List<String> fileLines 52: + ) { 53: + boolean testing = true; 54: + Map<String, Integer> point_intersections = new HashMap<>(); 55: + for ( String line : fileLines ) 56: + { 57: + if ( line.isEmpty() ) 58: + continue; 59: + Line computedLine = lineAsPointsAndDirection( line ); 60: + if ( computedLine.direction != Direction.diagonal ) 61: + { 62: + for ( String point : computedLine.points ) 63: + { 64: + if ( testing ) 65: + System.out.print( point +" | " ); 66: + if ( point_intersections.containsKey( point ) ) 67: + point_intersections.put( point, point_intersections.get( point ) +1 ); 68: + else 69: + point_intersections.put( point, 1 ); 70: + } 71: + } 72: + if ( testing ) 73: + System.out.println( "\t"+ computedLine.direction.name() ); 74: + } 75: + int totalIntersections = 0; 76: + for ( Integer linesThere : point_intersections.values() ) 77: + if ( linesThere > 1 ) 78: + totalIntersections++; 79: + System.out.println( "\t"+ totalIntersections ); 80: + } 81: + 82: + 83: + private Line lineAsPointsAndDirection( 84: + String line 85: + ) { 86: + int firstInd = 0, secondInd = firstInd +1; 87: + int xxInd = 0, yyInd = xxInd +1; 88: + String comma = ","; 89: + String[] barePoints = line.split( " -> " ); 90: + 91: + String[] xyFirst = barePoints[ firstInd ].split( comma ); 92: + int xxFirst = Integer.parseInt( xyFirst[ xxInd ] ); 93: + int yyFirst = Integer.parseInt( xyFirst[ yyInd ] ); 94: + 95: + String[] xySecond = barePoints[ secondInd ].split( comma ); 96: + int xxSecond = Integer.parseInt( xySecond[ xxInd ] ); 97: + int yySecond = Integer.parseInt( xySecond[ yyInd ] ); 98: + 99: + Line computedLine = new Line(); 100: + Direction direction; 101: + 102: + if ( xxFirst == xxSecond ) 103: + { 104: + computedLine.direction = Direction.horizontal; 105: + int yyGreater = yyFirst > yySecond ? yyFirst : yySecond; 106: + int yyLesser = yyFirst < yySecond ? yyFirst : yySecond; 107: + int distance = yyGreater - yyLesser; 108: + computedLine.points = new String[ distance +1 ]; 109: + for ( int ind = 0; ind < distance +1; ind++ ) 110: + { 111: + int yyVal = yyLesser + ind; 112: + String point = xyFirst[ xxInd ] +","+ Integer.toString( yyVal ); 113: + computedLine.points[ ind ] = point; 114: + } 115: + } 116: + else if ( yyFirst == yySecond ) 117: + { 118: + computedLine.direction = Direction.vertical; 119: + int xxGreater = xxFirst > xxSecond ? xxFirst : xxSecond; 120: + int xxLesser = xxFirst < xxSecond ? xxFirst : xxSecond; 121: + int distance = xxGreater - xxLesser; 122: + computedLine.points = new String[ distance +1 ]; 123: + for ( int ind = 0; ind < distance +1; ind++ ) 124: + { 125: + int xxVal = xxLesser + ind; 126: + String point = Integer.toString( xxVal ) +","+ xyFirst[ yyInd ]; 127: + computedLine.points[ ind ] = point; 128: + } 129: + } 130: + else 131: + { 132: + computedLine.direction = Direction.diagonal; 133: + } 134: + 135: + return computedLine; 136: + } 137: + 138: + enum Direction { horizontal, vertical, diagonal }; 139: + 140: + class Line 141: + { 142: + Direction direction; 143: + String[] points = {}; 144: + } 145: + 146: +} 147: + 148: + 149: + 150: diff --git a/src/java/y2021/Exercise210502.java b/src/java/y2021/Exercise210502.java 151: new file mode 100644 152: index 0000000..673eca4 153: --- /dev/null 154: +++ b/src/java/y2021/Exercise210502.java 155: @@ -0,0 +1,225 @@ 156: + 157: +import java.io.IOException; 158: +import java.nio.file.*; 159: +import java.util.*; 160: + 161: +public class Exercise210502 162: +{ 163: + 164: + public static void main( 165: + String args[] 166: + ) { 167: + final String here = "e210502.m "; 168: + if ( args.length < 1 ) 169: + { 170: + throw new RuntimeException( here +"add a filename argument" ); 171: + } 172: + String userSaysFile = args[ 0 ]; 173: + List<String> fileLines = new LinkedList<>(); 174: + try 175: + { 176: + Path where = Paths.get( userSaysFile ); 177: + fileLines = Files.readAllLines( where ); 178: + } 179: + catch ( IOException | InvalidPathException ie ) 180: + { 181: + System.err.println( here +"couldn't read file "+ userSaysFile +" because "+ ie ); 182: + return; 183: + } 184: + /* 185: + - interpretation of spec - 186: + for lines 187: + parse as first and last points 188: + if vertical or horizontal 189: + save points 190: + // diagonal are for later 191: + for values in map 192: + add if total > 1 193: + print total 194: + */ 195: + new Exercise210502().findVents( fileLines ); 196: + } 197: + 198: + 199: + private void findVents( 200: + List<String> fileLines 201: + ) { 202: + boolean testing = false; 203: + Map<String, Integer> point_intersections = new HashMap<>(); 204: + for ( String line : fileLines ) 205: + { 206: + if ( line.isEmpty() ) 207: + continue; 208: + Line computedLine = lineAsPointsAndDirection( line ); 209: + //if ( computedLine.direction != Direction.diagonal ) 210: + //continue; 211: + for ( String point : computedLine.points ) 212: + { 213: + if ( testing ) 214: + System.out.print( point +" | " ); 215: + if ( point_intersections.containsKey( point ) ) 216: + point_intersections.put( point, point_intersections.get( point ) +1 ); 217: + else 218: + point_intersections.put( point, 1 ); 219: + } 220: + if ( testing ) 221: + System.out.println( "\t"+ computedLine.direction.name() ); 222: + } 223: + int totalIntersections = 0; 224: + for ( Integer linesThere : point_intersections.values() ) 225: + if ( linesThere > 1 ) 226: + totalIntersections++; 227: + if ( testing ) 228: + showPoints( point_intersections, 10 ); 229: + System.out.println( "\ttotal "+ totalIntersections ); 230: + } 231: + 232: + 233: + private Line lineAsPointsAndDirection( 234: + String line 235: + ) { 236: + int firstInd = 0, secondInd = firstInd +1; 237: + int xxInd = 0, yyInd = xxInd +1; 238: + String comma = ","; 239: + String[] barePoints = line.split( " -> " ); 240: + 241: + String[] xyFirst = barePoints[ firstInd ].split( comma ); 242: + int xxFirst = Integer.parseInt( xyFirst[ xxInd ] ); 243: + int yyFirst = Integer.parseInt( xyFirst[ yyInd ] ); 244: + 245: + String[] xySecond = barePoints[ secondInd ].split( comma ); 246: + int xxSecond = Integer.parseInt( xySecond[ xxInd ] ); 247: + int yySecond = Integer.parseInt( xySecond[ yyInd ] ); 248: + 249: + Line computedLine = new Line(); 250: + 251: + if ( xxFirst == xxSecond ) 252: + { 253: + computedLine.direction = Direction.horizontal; 254: + int yyGreater = yyFirst > yySecond ? yyFirst : yySecond; 255: + int yyLesser = yyFirst < yySecond ? yyFirst : yySecond; 256: + int distance = yyGreater - yyLesser; 257: + computedLine.points = new String[ distance +1 ]; 258: + for ( int ind = 0; ind < distance +1; ind++ ) 259: + { 260: + int yyVal = yyLesser + ind; 261: + String point = xyFirst[ xxInd ] +","+ Integer.toString( yyVal ); 262: + computedLine.points[ ind ] = point; 263: + } 264: + } 265: + else if ( yyFirst == yySecond ) 266: + { 267: + computedLine.direction = Direction.vertical; 268: + int xxGreater = xxFirst > xxSecond ? xxFirst : xxSecond; 269: + int xxLesser = xxFirst < xxSecond ? xxFirst : xxSecond; 270: + int distance = xxGreater - xxLesser; 271: + computedLine.points = new String[ distance +1 ]; 272: + for ( int ind = 0; ind < distance +1; ind++ ) 273: + { 274: + int xxVal = xxLesser + ind; 275: + String point = Integer.toString( xxVal ) +","+ xyFirst[ yyInd ]; 276: + computedLine.points[ ind ] = point; 277: + } 278: + } 279: + else 280: + { 281: + computedLine.direction = Direction.diagonal; 282: + /* 283: + is \ when slope is negative 284: + if \ then increment both 285: + if / then increment x and decrement y 286: + */ 287: + boolean firstIsLeftmost = xxFirst < xxSecond; 288: + boolean yyIncreases = ( firstIsLeftmost && yyFirst < yySecond ) 289: + || ( ! firstIsLeftmost && yyFirst > yySecond ); 290: + int xxDistance = firstIsLeftmost 291: + ? ( xxSecond - xxFirst ) : ( xxFirst - xxSecond ); 292: + computedLine.points = new String[ xxDistance +1 ]; 293: + int xxLeft, yyLeft, xxRight, yyRight; 294: + if ( firstIsLeftmost ) 295: + { 296: + xxLeft = xxFirst; 297: + yyLeft = yyFirst; 298: + xxRight = xxSecond; 299: + yyRight = yySecond; 300: + } 301: + else 302: + { 303: + xxLeft = xxSecond; 304: + yyLeft = yySecond; 305: + xxRight = xxFirst; 306: + yyRight = yyFirst; 307: + } 308: + if ( yyIncreases ) 309: + { 310: + for ( int ind = 0; ind < xxDistance +1; ind++ ) 311: + { 312: + String point = Integer.toString( xxLeft + ind ) 313: + +","+ Integer.toString( yyLeft + ind ); 314: + computedLine.points[ ind ] = point; 315: + //System.out.println( " "+ point ); 316: + } 317: + } 318: + else 319: + { 320: + for ( int ind = 0; ind < xxDistance +1; ind++ ) 321: + { 322: + String point = Integer.toString( xxLeft + ind ) 323: + +","+ Integer.toString( yyLeft - ind ); 324: + computedLine.points[ ind ] = point; 325: + //System.out.println( " "+ point ); 326: + } 327: + } 328: + } 329: + 330: + return computedLine; 331: + } 332: + 333: + 334: + private void showPoints( 335: + Map<String, Integer> point_intersections, int squareMagnitude 336: + ) { 337: + String[][] board = new String[ squareMagnitude ][ squareMagnitude ]; 338: + for ( int xx = 0; xx < squareMagnitude; xx++ ) 339: + for ( int yy = 0; yy < squareMagnitude; yy++ ) 340: + board[ xx ][ yy ] = " "; 341: + 342: + int xxInd = 0, yyInd = xxInd +1; 343: + String comma = ","; 344: + 345: + for ( String pointStr : point_intersections.keySet() ) 346: + { 347: + String[] xyFirst = pointStr.split( comma ); 348: + int xxFirst = Integer.parseInt( xyFirst[ xxInd ] ); 349: + int yyFirst = Integer.parseInt( xyFirst[ yyInd ] ); 350: + 351: + board[ xxFirst ][ yyFirst ] = Integer.toString( point_intersections.get( pointStr ) ); 352: + } 353: + 354: + System.out.print( "\n | " ); 355: + for ( int xx = 0; xx < squareMagnitude; xx++ ) 356: + System.out.print( xx +" " ); 357: + System.out.println(); 358: + for ( int xx = 0; xx < squareMagnitude; xx++ ) 359: + // for ( int xx = squareMagnitude -1; xx >= 0; xx-- ) 360: + { 361: + System.out.print( xx +"|" ); 362: + for ( int yy = 0; yy < squareMagnitude; yy++ ) 363: + System.out.print( " "+ board[ yy ][ xx ] ); 364: + System.out.println(); 365: + } 366: + 367: + } 368: + 369: + enum Direction { horizontal, vertical, diagonal }; 370: + 371: + class Line 372: + { 373: + Direction direction; 374: + String[] points = {}; 375: + } 376: + 377: +} 378: + 379: + 380: + 381: diff --git a/src/res/y2021/21_05_example.txt b/src/res/y2021/21_05_example.txt 382: new file mode 100644 383: index 0000000..1d4e36d 384: --- /dev/null 385: +++ b/src/res/y2021/21_05_example.txt 386: @@ -0,0 +1,10 @@ 387: +0,9 -> 5,9 388: +8,0 -> 0,8 389: +9,4 -> 3,4 390: +2,2 -> 2,1 391: +7,0 -> 7,4 392: +6,4 -> 2,0 393: +0,9 -> 2,9 394: +3,4 -> 1,4 395: +0,0 -> 8,8 396: +5,5 -> 8,2 397: \ No newline at end of file 398: diff --git a/src/res/y2021/21_05_input.txt b/src/res/y2021/21_05_input.txt 399: new file mode 100644 400: index 0000000..58fb409 401: --- /dev/null 402: +++ b/src/res/y2021/21_05_input.txt 403: @@ -0,0 +1,500 @@ 404: +682,519 -> 682,729 405: +852,131 -> 25,958 406: +303,481 -> 206,481 407: +199,682 -> 183,666 408: +363,190 -> 571,190 409: +930,290 -> 221,290 410: +364,627 -> 952,39 411: +234,309 -> 234,821 412: +130,864 -> 130,886 413: +462,347 -> 699,110 414: +375,969 -> 481,969 415: +989,859 -> 275,145 416: +221,748 -> 212,748 417: +870,173 -> 106,937 418: +604,33 -> 604,142 419: +780,35 -> 780,206 420: +636,808 -> 721,808 421: +944,989 -> 334,989 422: +477,113 -> 192,113 423: +879,265 -> 879,358 424: +754,974 -> 17,974 425: +10,989 -> 989,10 426: +337,320 -> 674,657 427: +225,96 -> 557,428 428: +129,354 -> 299,354 429: +717,695 -> 695,695 430: +94,255 -> 317,478 431: +90,87 -> 90,187 432: +77,942 -> 952,67 433: +804,315 -> 989,315 434: +619,470 -> 491,342 435: +466,90 -> 466,755 436: +840,121 -> 840,469 437: +638,127 -> 638,77 438: +844,40 -> 151,40 439: +653,987 -> 653,631 440: +195,583 -> 195,623 441: +88,985 -> 570,503 442: +921,897 -> 165,141 443: +230,27 -> 171,27 444: +737,771 -> 832,771 445: +563,365 -> 665,467 446: +942,940 -> 776,774 447: +12,903 -> 644,903 448: +308,390 -> 308,971 449: +572,943 -> 572,15 450: +104,389 -> 104,73 451: +346,721 -> 974,93 452: +30,53 -> 562,53 453: +804,682 -> 804,120 454: +952,45 -> 15,982 455: +475,456 -> 475,348 456: +409,247 -> 664,247 457: +345,18 -> 816,489 458: +571,158 -> 505,158 459: +59,195 -> 27,195 460: +230,681 -> 23,681 461: +258,711 -> 921,711 462: +658,112 -> 366,404 463: +842,220 -> 842,825 464: +815,744 -> 540,744 465: +192,314 -> 703,825 466: +869,573 -> 869,888 467: +603,268 -> 603,301 468: +816,668 -> 816,189 469: +148,606 -> 948,606 470: +117,461 -> 506,461 471: +986,955 -> 986,315 472: +131,250 -> 192,189 473: +988,148 -> 518,618 474: +682,900 -> 31,900 475: +652,839 -> 652,236 476: +466,812 -> 466,611 477: +881,346 -> 401,346 478: +229,639 -> 731,639 479: +104,476 -> 840,476 480: +10,988 -> 988,10 481: +29,15 -> 987,973 482: +825,348 -> 825,240 483: +989,989 -> 10,10 484: +430,796 -> 926,796 485: +49,293 -> 610,854 486: +325,288 -> 918,288 487: +625,309 -> 439,495 488: +536,150 -> 356,150 489: +834,558 -> 822,558 490: +315,408 -> 315,635 491: +257,973 -> 813,973 492: +713,52 -> 122,52 493: +323,970 -> 578,970 494: +447,49 -> 829,49 495: +941,709 -> 941,390 496: +148,323 -> 391,80 497: +23,171 -> 23,49 498: +475,265 -> 322,112 499: +506,407 -> 69,844 500: +567,284 -> 483,368 501: +114,745 -> 114,765 502: +392,252 -> 109,535 503: +65,188 -> 455,188 504: +732,779 -> 732,52 505: +233,214 -> 759,214 506: +232,969 -> 957,244 507: +20,669 -> 20,308 508: +49,972 -> 285,972 509: +501,383 -> 433,383 510: +918,15 -> 32,901 511: +255,268 -> 935,948 512: +757,588 -> 757,919 513: +530,803 -> 284,557 514: +688,926 -> 48,286 515: +331,245 -> 331,777 516: +448,544 -> 209,544 517: +10,970 -> 951,29 518: +233,11 -> 897,11 519: +145,392 -> 628,392 520: +935,971 -> 935,280 521: +169,632 -> 54,632 522: +155,244 -> 155,334 523: +56,284 -> 205,284 524: +553,428 -> 553,520 525: +977,176 -> 497,656 526: +323,339 -> 971,987 527: +616,355 -> 616,248 528: +72,660 -> 72,334 529: +644,822 -> 510,956 530: +356,841 -> 587,841 531: +413,468 -> 605,468 532: +85,22 -> 645,582 533: +924,850 -> 522,850 534: +448,45 -> 345,148 535: +102,566 -> 551,566 536: +80,39 -> 847,806 537: +936,436 -> 934,436 538: +53,24 -> 495,466 539: +234,173 -> 282,173 540: +145,680 -> 456,680 541: +960,759 -> 960,282 542: +984,814 -> 308,138 543: +398,808 -> 716,808 544: +509,536 -> 25,52 545: +289,777 -> 803,263 546: +766,892 -> 257,892 547: +301,733 -> 688,733 548: +24,109 -> 887,972 549: +180,32 -> 577,429 550: +985,801 -> 687,503 551: +901,582 -> 586,582 552: +50,56 -> 50,267 553: +344,373 -> 437,373 554: +542,133 -> 905,496 555: +420,624 -> 420,716 556: +645,106 -> 645,574 557: +356,37 -> 114,37 558: +324,919 -> 357,919 559: +126,797 -> 120,797 560: +288,689 -> 435,836 561: +93,915 -> 639,369 562: +106,391 -> 478,19 563: +277,501 -> 714,64 564: +253,277 -> 643,277 565: +568,972 -> 350,972 566: +213,235 -> 213,406 567: +595,888 -> 595,233 568: +577,63 -> 37,603 569: +649,732 -> 931,732 570: +469,892 -> 549,892 571: +953,895 -> 953,457 572: +222,213 -> 290,213 573: +841,800 -> 841,336 574: +685,143 -> 25,143 575: +441,127 -> 441,146 576: +646,586 -> 56,586 577: +698,122 -> 465,122 578: +641,502 -> 641,240 579: +111,91 -> 185,91 580: +927,755 -> 874,808 581: +108,151 -> 108,567 582: +309,453 -> 309,210 583: +890,657 -> 491,657 584: +404,244 -> 404,123 585: +939,28 -> 26,941 586: +596,970 -> 596,870 587: +489,556 -> 489,589 588: +607,621 -> 903,325 589: +912,284 -> 571,284 590: +921,702 -> 743,524 591: +719,36 -> 719,394 592: +100,905 -> 798,207 593: +316,260 -> 316,887 594: +799,940 -> 885,940 595: +835,287 -> 199,923 596: +422,760 -> 64,760 597: +727,113 -> 727,679 598: +733,56 -> 59,730 599: +141,399 -> 485,743 600: +769,629 -> 769,797 601: +62,486 -> 62,205 602: +192,332 -> 800,332 603: +15,931 -> 727,931 604: +854,915 -> 988,915 605: +349,610 -> 886,610 606: +72,110 -> 72,903 607: +955,110 -> 78,987 608: +591,553 -> 591,428 609: +708,467 -> 516,467 610: +397,589 -> 353,589 611: +930,336 -> 930,532 612: +639,50 -> 228,50 613: +472,17 -> 472,244 614: +420,825 -> 420,562 615: +203,197 -> 203,35 616: +984,964 -> 223,203 617: +944,269 -> 935,260 618: +933,119 -> 87,965 619: +696,290 -> 696,580 620: +925,960 -> 52,87 621: +451,470 -> 235,254 622: +562,71 -> 562,149 623: +405,126 -> 405,67 624: +356,424 -> 356,673 625: +859,649 -> 859,291 626: +210,651 -> 210,544 627: +403,783 -> 403,122 628: +672,87 -> 586,87 629: +409,668 -> 984,668 630: +917,352 -> 511,758 631: +395,953 -> 141,953 632: +152,795 -> 152,313 633: +839,344 -> 811,372 634: +114,649 -> 650,649 635: +60,517 -> 60,27 636: +448,392 -> 845,392 637: +33,849 -> 719,163 638: +151,988 -> 876,988 639: +805,556 -> 124,556 640: +361,538 -> 706,193 641: +974,941 -> 141,108 642: +271,813 -> 968,116 643: +500,697 -> 80,277 644: +586,731 -> 586,480 645: +128,147 -> 174,101 646: +882,681 -> 882,745 647: +531,730 -> 677,730 648: +989,11 -> 11,989 649: +74,332 -> 234,492 650: +360,326 -> 932,898 651: +136,288 -> 113,311 652: +666,645 -> 916,895 653: +977,478 -> 561,62 654: +20,83 -> 566,83 655: +331,942 -> 331,646 656: +180,291 -> 405,291 657: +637,763 -> 637,941 658: +120,138 -> 120,820 659: +951,24 -> 14,961 660: +204,304 -> 204,51 661: +84,168 -> 880,168 662: +955,145 -> 955,903 663: +437,427 -> 437,354 664: +875,67 -> 189,753 665: +46,767 -> 802,11 666: +52,59 -> 889,896 667: +926,56 -> 102,880 668: +500,30 -> 964,30 669: +329,488 -> 329,972 670: +63,11 -> 889,837 671: +707,168 -> 707,584 672: +580,10 -> 735,10 673: +105,620 -> 105,110 674: +187,531 -> 323,531 675: +82,947 -> 82,941 676: +737,199 -> 737,851 677: +612,650 -> 217,650 678: +971,15 -> 82,904 679: +16,590 -> 506,100 680: +950,877 -> 832,759 681: +570,470 -> 570,276 682: +213,411 -> 213,195 683: +670,755 -> 89,755 684: +906,963 -> 906,984 685: +458,463 -> 442,463 686: +956,969 -> 10,23 687: +87,215 -> 195,107 688: +819,454 -> 819,467 689: +594,793 -> 686,793 690: +395,724 -> 787,332 691: +315,461 -> 644,461 692: +448,247 -> 249,48 693: +620,302 -> 247,675 694: +607,134 -> 932,134 695: +312,776 -> 312,289 696: +850,942 -> 54,146 697: +31,538 -> 851,538 698: +729,126 -> 640,126 699: +702,199 -> 702,706 700: +402,783 -> 254,783 701: +110,59 -> 203,59 702: +27,10 -> 965,948 703: +747,261 -> 47,261 704: +628,742 -> 972,742 705: +712,742 -> 657,797 706: +877,871 -> 877,758 707: +665,313 -> 449,529 708: +498,157 -> 498,68 709: +870,922 -> 27,79 710: +856,697 -> 856,429 711: +447,271 -> 963,787 712: +495,302 -> 495,520 713: +526,47 -> 721,47 714: +826,179 -> 826,741 715: +565,461 -> 893,461 716: +512,328 -> 127,328 717: +487,920 -> 522,920 718: +614,452 -> 614,146 719: +331,574 -> 331,840 720: +985,79 -> 285,779 721: +812,320 -> 985,320 722: +118,69 -> 429,69 723: +644,525 -> 644,878 724: +271,132 -> 156,132 725: +955,782 -> 565,392 726: +630,939 -> 630,372 727: +51,203 -> 840,203 728: +202,490 -> 202,479 729: +579,868 -> 579,92 730: +979,336 -> 979,623 731: +843,865 -> 260,282 732: +685,872 -> 685,503 733: +721,193 -> 721,510 734: +908,661 -> 908,955 735: +19,950 -> 715,254 736: +233,730 -> 233,101 737: +922,954 -> 27,954 738: +399,444 -> 399,403 739: +380,712 -> 380,718 740: +238,264 -> 849,875 741: +458,577 -> 458,139 742: +418,244 -> 469,295 743: +460,375 -> 964,879 744: +276,445 -> 815,445 745: +463,910 -> 648,725 746: +26,384 -> 968,384 747: +955,385 -> 955,143 748: +942,775 -> 733,566 749: +425,326 -> 531,326 750: +364,545 -> 364,873 751: +182,759 -> 182,819 752: +390,757 -> 390,475 753: +217,417 -> 217,157 754: +669,286 -> 65,890 755: +257,11 -> 257,858 756: +557,397 -> 557,20 757: +888,946 -> 32,90 758: +971,938 -> 971,578 759: +874,248 -> 874,485 760: +87,268 -> 87,135 761: +756,679 -> 103,26 762: +771,250 -> 771,107 763: +320,711 -> 967,711 764: +293,219 -> 293,706 765: +103,565 -> 103,538 766: +388,256 -> 388,261 767: +468,953 -> 503,953 768: +424,142 -> 287,142 769: +24,930 -> 850,930 770: +316,167 -> 316,161 771: +481,421 -> 208,148 772: +938,926 -> 938,933 773: +701,653 -> 701,780 774: +536,390 -> 536,559 775: +40,954 -> 829,165 776: +404,985 -> 247,985 777: +94,628 -> 94,500 778: +441,637 -> 441,271 779: +766,946 -> 97,277 780: +428,363 -> 428,37 781: +542,694 -> 542,347 782: +11,16 -> 979,984 783: +938,651 -> 632,957 784: +779,127 -> 243,663 785: +636,294 -> 636,787 786: +533,744 -> 636,641 787: +521,950 -> 458,950 788: +988,12 -> 18,982 789: +954,621 -> 954,271 790: +638,951 -> 813,951 791: +822,911 -> 632,911 792: +714,849 -> 512,849 793: +696,88 -> 385,88 794: +65,451 -> 65,687 795: +976,973 -> 976,907 796: +368,489 -> 368,571 797: +358,831 -> 690,499 798: +436,704 -> 178,704 799: +690,619 -> 606,535 800: +96,701 -> 358,701 801: +885,562 -> 420,562 802: +581,480 -> 613,512 803: +44,970 -> 970,44 804: +216,796 -> 892,120 805: +72,623 -> 72,72 806: +896,283 -> 896,326 807: +794,195 -> 22,967 808: +134,326 -> 134,889 809: +420,141 -> 944,665 810: +941,194 -> 941,421 811: +940,525 -> 298,525 812: +653,300 -> 769,300 813: +227,424 -> 406,603 814: +275,850 -> 113,850 815: +648,850 -> 92,850 816: +638,389 -> 638,10 817: +379,404 -> 584,609 818: +833,931 -> 833,520 819: +772,286 -> 500,558 820: +372,262 -> 333,262 821: +689,18 -> 131,576 822: +687,499 -> 687,188 823: +344,499 -> 37,806 824: +778,496 -> 134,496 825: +938,87 -> 344,681 826: +788,401 -> 479,401 827: +828,903 -> 756,903 828: +423,625 -> 285,763 829: +218,489 -> 218,819 830: +488,384 -> 891,787 831: +817,532 -> 788,532 832: +512,27 -> 512,149 833: +369,794 -> 54,794 834: +534,590 -> 827,883 835: +84,310 -> 39,265 836: +357,545 -> 665,545 837: +539,807 -> 539,781 838: +378,683 -> 22,327 839: +71,909 -> 943,37 840: +740,552 -> 348,552 841: +698,315 -> 45,968 842: +516,835 -> 360,835 843: +629,141 -> 629,385 844: +695,908 -> 303,908 845: +795,707 -> 386,707 846: +211,397 -> 291,397 847: +64,620 -> 236,620 848: +97,638 -> 97,445 849: +46,103 -> 893,950 850: +468,122 -> 979,122 851: +810,486 -> 433,486 852: +532,899 -> 461,970 853: +232,60 -> 235,60 854: +549,708 -> 549,90 855: +294,978 -> 294,124 856: +865,406 -> 640,406 857: +755,305 -> 664,305 858: +12,989 -> 987,14 859: +275,249 -> 260,234 860: +502,783 -> 67,783 861: +863,938 -> 297,372 862: +516,961 -> 516,272 863: +67,510 -> 611,510 864: +980,951 -> 312,283 865: +325,512 -> 325,169 866: +142,429 -> 542,29 867: +273,964 -> 822,964 868: +370,217 -> 508,217 869: +131,131 -> 331,331 870: +734,824 -> 734,817 871: +75,89 -> 687,701 872: +155,255 -> 702,802 873: +577,395 -> 130,395 874: +684,94 -> 555,94 875: +393,881 -> 173,881 876: +894,750 -> 773,750 877: +380,269 -> 380,338 878: +427,36 -> 427,77 879: +637,107 -> 637,846 880: +53,437 -> 53,221 881: +128,979 -> 960,147 882: +838,211 -> 838,645 883: +898,39 -> 849,39 884: +862,495 -> 951,495 885: +754,406 -> 76,406 886: +951,960 -> 113,122 887: +830,125 -> 15,940 888: +190,117 -> 190,973 889: +192,956 -> 718,430 890: +895,162 -> 88,969 891: +135,196 -> 70,131 892: +578,642 -> 578,789 893: +713,268 -> 625,268 894: +938,719 -> 938,604 895: +30,863 -> 99,863 896: +844,309 -> 287,309 897: +131,837 -> 459,509 898: +61,206 -> 722,867 899: +95,974 -> 283,974 900: +746,672 -> 558,672 901: +552,32 -> 352,32 902: +21,637 -> 21,781 903: +945,847 -> 945,303 904: diff --git a/src/res/y2021/21_05_input_bonus.txt b/src/res/y2021/21_05_input_bonus.txt 905: new file mode 100644 906: index 0000000..919cabe 907: --- /dev/null 908: +++ b/src/res/y2021/21_05_input_bonus.txt 909: @@ -0,0 +1,500 @@ 910: +424,924 -> 206,706 911: +467,565 -> 432,565 912: +722,827 -> 794,899 913: +256,172 -> 810,172 914: +160,853 -> 148,853 915: +292,525 -> 292,699 916: +108,139 -> 108,187 917: +889,789 -> 889,554 918: +226,79 -> 371,79 919: +12,485 -> 265,232 920: +917,864 -> 917,157 921: +710,30 -> 710,988 922: +459,969 -> 459,812 923: +158,961 -> 330,961 924: +146,791 -> 146,220 925: +56,595 -> 24,563 926: +873,233 -> 873,764 927: +969,156 -> 847,278 928: +741,363 -> 621,363 929: +244,162 -> 244,170 930: +288,411 -> 288,668 931: +696,73 -> 696,743 932: +60,966 -> 974,52 933: +236,681 -> 200,681 934: +424,253 -> 56,253 935: +379,407 -> 784,407 936: +177,335 -> 765,923 937: +69,115 -> 921,967 938: +92,11 -> 92,644 939: +311,543 -> 311,106 940: +89,904 -> 661,332 941: +898,342 -> 576,342 942: +369,66 -> 140,295 943: +968,14 -> 511,471 944: +862,420 -> 343,939 945: +857,578 -> 181,578 946: +745,438 -> 243,940 947: +201,693 -> 201,151 948: +20,29 -> 973,982 949: +852,11 -> 852,95 950: +529,960 -> 357,960 951: +317,97 -> 967,747 952: +847,373 -> 321,373 953: +115,863 -> 850,128 954: +79,946 -> 836,189 955: +937,484 -> 937,839 956: +567,774 -> 557,774 957: +192,348 -> 192,630 958: +552,647 -> 272,367 959: +918,573 -> 710,573 960: +896,580 -> 896,305 961: +989,358 -> 775,358 962: +484,833 -> 869,448 963: +966,273 -> 884,355 964: +944,45 -> 171,45 965: +824,228 -> 593,228 966: +19,18 -> 893,892 967: +360,954 -> 417,954 968: +37,14 -> 960,937 969: +18,888 -> 742,888 970: +339,264 -> 339,848 971: +601,532 -> 601,628 972: +540,280 -> 540,615 973: +962,751 -> 255,44 974: +611,135 -> 611,934 975: +988,619 -> 778,409 976: +388,77 -> 388,266 977: +526,656 -> 526,341 978: +942,306 -> 942,309 979: +32,49 -> 931,948 980: +653,866 -> 306,866 981: +141,500 -> 235,500 982: +96,108 -> 883,108 983: +383,242 -> 106,242 984: +557,366 -> 340,366 985: +315,85 -> 262,85 986: +411,115 -> 867,115 987: +517,654 -> 517,735 988: +265,18 -> 807,560 989: +171,426 -> 449,426 990: +507,680 -> 507,823 991: +141,504 -> 141,578 992: +358,970 -> 358,599 993: +304,287 -> 245,287 994: +625,917 -> 625,555 995: +747,987 -> 456,987 996: +673,316 -> 71,316 997: +135,563 -> 95,563 998: +913,677 -> 819,677 999: +17,417 -> 100,417 1000: +524,727 -> 767,970 1001: +619,87 -> 695,87 1002: +748,425 -> 607,425 1003: +11,179 -> 770,938 1004: +756,869 -> 756,44 1005: +647,763 -> 376,763 1006: +980,18 -> 32,966 1007: +805,780 -> 54,29 1008: +923,874 -> 164,115 1009: +765,910 -> 765,697 1010: +574,588 -> 574,717 1011: +323,581 -> 362,581 1012: +749,843 -> 749,814 1013: +915,841 -> 221,841 1014: +252,650 -> 252,959 1015: +73,980 -> 73,904 1016: +846,37 -> 846,864 1017: +899,663 -> 834,663 1018: +512,90 -> 512,253 1019: +889,979 -> 28,118 1020: +650,617 -> 95,62 1021: +842,511 -> 429,511 1022: +875,136 -> 875,202 1023: +123,99 -> 618,594 1024: +848,818 -> 848,546 1025: +251,342 -> 251,696 1026: +263,919 -> 263,512 1027: +905,181 -> 905,293 1028: +770,674 -> 770,963 1029: +554,587 -> 554,190 1030: +528,602 -> 528,962 1031: +22,901 -> 913,10 1032: +685,736 -> 569,736 1033: +378,331 -> 361,331 1034: +301,339 -> 123,339 1035: +556,436 -> 887,767 1036: +488,963 -> 488,510 1037: +117,495 -> 467,495 1038: +884,184 -> 901,184 1039: +27,430 -> 27,94 1040: +426,505 -> 426,869 1041: +292,717 -> 378,717 1042: +154,790 -> 769,790 1043: +476,154 -> 408,154 1044: +391,937 -> 819,937 1045: +449,388 -> 449,677 1046: +420,183 -> 725,488 1047: +235,428 -> 235,468 1048: +515,357 -> 515,312 1049: +493,337 -> 76,337 1050: +416,343 -> 416,456 1051: +713,979 -> 713,253 1052: +812,51 -> 812,696 1053: +395,659 -> 486,750 1054: +68,636 -> 752,636 1055: +620,680 -> 620,769 1056: +610,549 -> 516,549 1057: +316,461 -> 316,248 1058: +455,424 -> 227,424 1059: +49,23 -> 943,23 1060: +13,932 -> 876,69 1061: +966,116 -> 966,775 1062: +802,763 -> 892,763 1063: +617,161 -> 617,379 1064: +661,228 -> 661,50 1065: +872,913 -> 872,610 1066: +792,441 -> 877,441 1067: +611,676 -> 611,968 1068: +297,271 -> 127,101 1069: +276,586 -> 276,981 1070: +630,778 -> 289,778 1071: +892,849 -> 78,35 1072: +201,857 -> 726,857 1073: +363,876 -> 78,876 1074: +813,190 -> 184,819 1075: +984,20 -> 33,971 1076: +591,451 -> 718,578 1077: +548,235 -> 981,235 1078: +51,317 -> 359,317 1079: +179,244 -> 751,244 1080: +864,976 -> 541,976 1081: +707,675 -> 707,45 1082: +248,565 -> 306,565 1083: +302,629 -> 302,125 1084: +383,477 -> 383,388 1085: +533,663 -> 848,348 1086: +566,124 -> 81,609 1087: +479,391 -> 365,391 1088: +33,971 -> 243,971 1089: +129,14 -> 798,683 1090: +335,777 -> 790,322 1091: +780,817 -> 351,388 1092: +732,306 -> 732,730 1093: +642,884 -> 953,884 1094: +912,488 -> 977,553 1095: +437,309 -> 437,330 1096: +646,306 -> 646,632 1097: +41,822 -> 41,672 1098: +758,238 -> 678,238 1099: +610,79 -> 940,79 1100: +746,473 -> 467,752 1101: +121,723 -> 635,723 1102: +46,645 -> 321,920 1103: +843,558 -> 518,233 1104: +84,81 -> 659,656 1105: +976,280 -> 320,936 1106: +833,881 -> 174,881 1107: +988,49 -> 72,965 1108: +262,51 -> 262,654 1109: +82,518 -> 716,518 1110: +502,168 -> 502,151 1111: +596,125 -> 375,125 1112: +953,936 -> 120,103 1113: +471,451 -> 586,451 1114: +571,740 -> 571,30 1115: +601,866 -> 789,866 1116: +446,527 -> 928,527 1117: +212,417 -> 296,417 1118: +879,117 -> 189,807 1119: +949,435 -> 369,435 1120: +116,971 -> 136,971 1121: +493,265 -> 86,672 1122: +442,379 -> 143,678 1123: +981,343 -> 981,978 1124: +656,218 -> 656,428 1125: +538,233 -> 538,196 1126: +771,632 -> 771,29 1127: +81,908 -> 960,29 1128: +251,514 -> 446,709 1129: +747,294 -> 147,894 1130: +838,77 -> 43,872 1131: +347,292 -> 347,516 1132: +135,262 -> 135,987 1133: +913,184 -> 225,872 1134: +485,773 -> 790,773 1135: +499,201 -> 499,167 1136: +895,115 -> 895,422 1137: +54,77 -> 54,240 1138: +23,63 -> 799,839 1139: +470,631 -> 241,402 1140: +731,307 -> 722,298 1141: +966,578 -> 431,578 1142: +327,391 -> 348,391 1143: +889,687 -> 268,687 1144: +262,153 -> 649,540 1145: +349,91 -> 349,566 1146: +460,281 -> 460,551 1147: +887,195 -> 887,253 1148: +365,631 -> 456,540 1149: +411,941 -> 260,790 1150: +252,757 -> 125,757 1151: +548,894 -> 953,489 1152: +348,953 -> 215,953 1153: +145,474 -> 145,941 1154: +65,34 -> 894,863 1155: +442,496 -> 123,177 1156: +92,123 -> 257,123 1157: +840,548 -> 840,969 1158: +620,878 -> 311,878 1159: +378,865 -> 834,409 1160: +221,549 -> 985,549 1161: +478,517 -> 70,517 1162: +968,975 -> 14,21 1163: +36,380 -> 274,142 1164: +258,555 -> 258,601 1165: +386,434 -> 386,675 1166: +215,240 -> 215,224 1167: +445,170 -> 445,659 1168: +848,476 -> 750,574 1169: +895,665 -> 589,665 1170: +73,210 -> 441,210 1171: +17,559 -> 17,599 1172: +344,205 -> 932,205 1173: +305,760 -> 305,924 1174: +93,517 -> 93,960 1175: +911,737 -> 782,737 1176: +804,590 -> 303,89 1177: +927,239 -> 927,891 1178: +19,121 -> 885,987 1179: +667,529 -> 852,714 1180: +121,668 -> 74,715 1181: +33,426 -> 33,130 1182: +184,170 -> 978,964 1183: +316,859 -> 700,475 1184: +791,719 -> 791,241 1185: +528,178 -> 510,178 1186: +317,146 -> 949,146 1187: +113,981 -> 855,239 1188: +948,895 -> 758,895 1189: +768,43 -> 768,963 1190: +61,223 -> 61,97 1191: +609,737 -> 609,333 1192: +521,492 -> 447,566 1193: +844,446 -> 830,446 1194: +880,48 -> 49,879 1195: +349,931 -> 560,931 1196: +333,773 -> 333,476 1197: +660,956 -> 241,956 1198: +479,682 -> 136,682 1199: +324,351 -> 324,604 1200: +71,736 -> 71,344 1201: +579,349 -> 579,340 1202: +639,748 -> 639,23 1203: +634,235 -> 961,235 1204: +205,131 -> 205,542 1205: +570,584 -> 570,486 1206: +37,33 -> 589,585 1207: +747,585 -> 747,477 1208: +801,840 -> 719,922 1209: +375,582 -> 809,582 1210: +397,331 -> 163,331 1211: +898,592 -> 898,119 1212: +239,589 -> 57,589 1213: +172,156 -> 172,499 1214: +956,108 -> 367,697 1215: +144,350 -> 644,350 1216: +934,44 -> 934,327 1217: +609,38 -> 609,75 1218: +120,428 -> 79,428 1219: +976,963 -> 120,107 1220: +275,103 -> 275,549 1221: +414,221 -> 414,921 1222: +970,986 -> 14,30 1223: +453,947 -> 404,947 1224: +284,803 -> 806,803 1225: +321,781 -> 321,476 1226: +942,560 -> 760,378 1227: +499,564 -> 499,654 1228: +458,445 -> 458,416 1229: +128,39 -> 723,634 1230: +899,355 -> 518,736 1231: +914,155 -> 380,155 1232: +594,618 -> 594,65 1233: +676,361 -> 667,361 1234: +624,421 -> 624,617 1235: +645,950 -> 613,950 1236: +218,347 -> 218,733 1237: +239,357 -> 239,178 1238: +366,552 -> 677,552 1239: +657,95 -> 203,549 1240: +789,552 -> 396,552 1241: +27,956 -> 981,956 1242: +814,115 -> 814,620 1243: +497,661 -> 497,583 1244: +843,743 -> 843,707 1245: +910,708 -> 910,132 1246: +147,806 -> 147,491 1247: +638,889 -> 305,556 1248: +37,43 -> 949,955 1249: +526,495 -> 432,495 1250: +44,970 -> 44,329 1251: +368,130 -> 368,761 1252: +202,621 -> 319,504 1253: +627,710 -> 159,242 1254: +256,457 -> 267,457 1255: +85,438 -> 169,438 1256: +580,866 -> 584,866 1257: +504,307 -> 17,794 1258: +942,977 -> 24,59 1259: +903,588 -> 903,234 1260: +276,551 -> 276,783 1261: +365,306 -> 454,306 1262: +535,852 -> 961,852 1263: +211,253 -> 211,888 1264: +989,10 -> 11,988 1265: +45,461 -> 45,922 1266: +250,721 -> 72,721 1267: +74,795 -> 74,457 1268: +543,175 -> 185,175 1269: +680,935 -> 105,360 1270: +337,13 -> 637,313 1271: +13,37 -> 939,963 1272: +23,951 -> 935,39 1273: +976,927 -> 441,392 1274: +962,630 -> 626,630 1275: +847,931 -> 321,405 1276: +21,220 -> 419,220 1277: +196,660 -> 196,58 1278: +846,462 -> 657,462 1279: +395,279 -> 395,844 1280: +164,311 -> 43,190 1281: +775,629 -> 567,421 1282: +274,195 -> 657,195 1283: +169,810 -> 963,16 1284: +473,880 -> 216,880 1285: +354,953 -> 473,953 1286: +35,490 -> 843,490 1287: +740,577 -> 740,846 1288: +841,967 -> 889,919 1289: +927,610 -> 474,610 1290: +838,30 -> 27,841 1291: +211,543 -> 650,543 1292: +541,274 -> 441,174 1293: +438,30 -> 438,642 1294: +16,492 -> 16,529 1295: +984,783 -> 280,79 1296: +95,673 -> 819,673 1297: +516,777 -> 516,253 1298: +544,819 -> 544,777 1299: +729,669 -> 103,669 1300: +618,353 -> 618,796 1301: +259,449 -> 743,933 1302: +407,151 -> 407,316 1303: +811,975 -> 155,975 1304: +167,625 -> 71,529 1305: +298,563 -> 298,197 1306: +385,324 -> 385,21 1307: +957,204 -> 957,808 1308: +10,27 -> 943,960 1309: +412,979 -> 279,979 1310: +668,930 -> 569,930 1311: +466,827 -> 141,827 1312: +924,214 -> 471,667 1313: +773,149 -> 976,352 1314: +977,736 -> 977,543 1315: +162,814 -> 265,711 1316: +106,62 -> 106,552 1317: +263,872 -> 434,872 1318: +692,632 -> 352,632 1319: +24,53 -> 24,300 1320: +722,774 -> 722,580 1321: +605,129 -> 605,841 1322: +275,206 -> 648,579 1323: +92,950 -> 940,102 1324: +500,101 -> 500,891 1325: +278,832 -> 826,832 1326: +681,837 -> 681,23 1327: +369,661 -> 278,661 1328: +883,14 -> 498,14 1329: +725,158 -> 826,158 1330: +770,451 -> 634,451 1331: +343,905 -> 742,905 1332: +203,193 -> 86,193 1333: +662,340 -> 378,624 1334: +980,151 -> 980,848 1335: +536,650 -> 531,650 1336: +730,415 -> 180,965 1337: +220,930 -> 220,507 1338: +358,598 -> 126,598 1339: +251,381 -> 80,552 1340: +786,133 -> 113,133 1341: +466,443 -> 203,443 1342: +478,859 -> 890,447 1343: +281,279 -> 281,585 1344: +735,605 -> 735,610 1345: +570,856 -> 545,856 1346: +254,162 -> 677,585 1347: +689,566 -> 689,836 1348: +678,179 -> 563,179 1349: +617,334 -> 133,818 1350: +639,327 -> 639,352 1351: +697,95 -> 697,961 1352: +953,240 -> 304,889 1353: +739,477 -> 846,477 1354: +542,131 -> 97,576 1355: +497,360 -> 497,66 1356: +48,917 -> 942,23 1357: +743,313 -> 930,313 1358: +540,415 -> 623,415 1359: +599,499 -> 519,499 1360: +415,908 -> 415,561 1361: +989,36 -> 60,965 1362: +532,943 -> 445,943 1363: +216,719 -> 214,719 1364: +961,698 -> 261,698 1365: +228,883 -> 132,787 1366: +385,283 -> 180,283 1367: +278,293 -> 278,41 1368: +113,698 -> 113,779 1369: +139,456 -> 456,456 1370: +227,662 -> 855,34 1371: +596,112 -> 87,112 1372: +773,221 -> 51,943 1373: +588,529 -> 169,529 1374: +574,106 -> 302,106 1375: +85,73 -> 810,73 1376: +371,271 -> 447,195 1377: +797,208 -> 45,208 1378: +22,700 -> 934,700 1379: +523,700 -> 523,247 1380: +829,212 -> 829,229 1381: +470,415 -> 577,415 1382: +53,522 -> 53,585 1383: +387,978 -> 387,745 1384: +932,261 -> 549,644 1385: +34,634 -> 559,109 1386: +887,181 -> 887,881 1387: +77,779 -> 356,779 1388: +862,121 -> 14,969 1389: +226,779 -> 226,358 1390: +945,157 -> 945,658 1391: +808,103 -> 914,209 1392: +360,640 -> 364,640 1393: +567,406 -> 213,760 1394: +284,30 -> 139,30 1395: +940,977 -> 940,656 1396: +635,624 -> 926,333 1397: +837,712 -> 837,414 1398: +193,230 -> 193,582 1399: +592,621 -> 592,41 1400: +986,921 -> 986,836 1401: +404,640 -> 933,111 1402: +914,309 -> 289,934 1403: +537,83 -> 537,389 1404: +208,564 -> 208,683 1405: +120,191 -> 893,964 1406: +18,37 -> 969,988 1407: +134,976 -> 134,689 1408: +187,842 -> 187,235 1409: +526,455 -> 590,455 1410: \ No newline at end of file 1411: diff --git a/src/res/y2021/21_05_solutions.txt b/src/res/y2021/21_05_solutions.txt 1412: new file mode 100644 1413: index 0000000..67f449b 1414: --- /dev/null 1415: +++ b/src/res/y2021/21_05_solutions.txt 1416: @@ -0,0 +1,8 @@ 1417: + 1418: +example 1 : 5 1419: +puzzle 1 : 6189 1420: +puzzle 1 bonus : 5147 1421: + 1422: +example 2 : 12 1423: +puzzle 2 : 19164 1424: +puzzle 2 bonus : 16925