Author: Nicholas Prado <nmprado@nzen.ws>
Date: Fri Dec 3 02:15:07 UTC 2021
Parent: 4a6ea5496fa17a14267679588cf517cd33bc21d8
Log message:
feat 21 02.1 running total
1: diff --git a/src/java/y2021/Exercise210201.java b/src/java/y2021/Exercise210201.java 2: new file mode 100644 3: index 0000000..c2f75ea 4: --- /dev/null 5: +++ b/src/java/y2021/Exercise210201.java 6: @@ -0,0 +1,93 @@ 7: + 8: +import java.io.IOException; 9: +import java.nio.file.*; 10: +import java.util.*; 11: + 12: +public class Exercise210201 13: +{ 14: + 15: + public static void main( 16: + String args[] 17: + ) { 18: + final String here = "e210201.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: + */ 38: + Exercise210201.findFinalDistance( fileLines ); 39: + } 40: + 41: + 42: + private static void findFinalDistance( 43: + List<String> fileLines 44: + ) { 45: + final int dirInd = 0, valInd = dirInd +1; 46: + int horizontalPosition = 0, depth = 0; 47: + for ( String line : fileLines ) 48: + { 49: + if ( line.isEmpty() ) 50: + continue; 51: + String[] linePieces = line.split( " " ); 52: + int magnitude = Integer.parseInt( linePieces[ valInd ] ); 53: + switch ( linePieces[ dirInd ] ) 54: + { 55: + case "forward" : 56: + horizontalPosition += magnitude; 57: + break; 58: + case "down" : 59: + depth += magnitude; 60: + break; 61: + case "up" : 62: + depth -= magnitude; 63: + break; 64: + default : 65: + continue; 66: + } 67: + } 68: + System.out.println( depth * horizontalPosition ); 69: + } 70: + 71: + 72: +} 73: + 74: + 75: + 76: + 77: + 78: + 79: + 80: + 81: + 82: + 83: + 84: + 85: + 86: + 87: + 88: + 89: + 90: + 91: + 92: + 93: + 94: + 95: + 96: + 97: + 98: + 99: + 100: diff --git a/src/res/y2021/21_01_example.txt b/src/res/y2021/21_01_example.txt 101: new file mode 100644 102: index 0000000..b7172ac 103: --- /dev/null 104: +++ b/src/res/y2021/21_01_example.txt 105: @@ -0,0 +1,6 @@ 106: +forward 5 107: +down 5 108: +forward 8 109: +up 3 110: +down 8 111: +forward 2 112: diff --git a/src/res/y2021/21_01_input.txt b/src/res/y2021/21_01_input.txt 113: new file mode 100644 114: index 0000000..64f1ce2 115: --- /dev/null 116: +++ b/src/res/y2021/21_01_input.txt 117: @@ -0,0 +1,1000 @@ 118: +forward 1 119: +down 9 120: +down 4 121: +forward 4 122: +down 2 123: +down 7 124: +up 9 125: +down 5 126: +forward 9 127: +forward 9 128: +down 2 129: +forward 7 130: +forward 9 131: +down 5 132: +down 2 133: +up 9 134: +down 7 135: +forward 6 136: +down 6 137: +down 6 138: +up 1 139: +down 2 140: +forward 8 141: +forward 8 142: +forward 9 143: +up 1 144: +forward 4 145: +up 1 146: +forward 3 147: +forward 5 148: +up 3 149: +up 7 150: +down 4 151: +down 1 152: +forward 3 153: +forward 4 154: +up 3 155: +forward 9 156: +down 2 157: +forward 5 158: +up 2 159: +up 1 160: +up 5 161: +forward 1 162: +up 9 163: +forward 6 164: +up 4 165: +down 4 166: +forward 3 167: +up 7 168: +down 1 169: +down 1 170: +down 8 171: +forward 3 172: +forward 1 173: +up 7 174: +up 1 175: +down 4 176: +up 6 177: +down 6 178: +forward 8 179: +down 3 180: +down 9 181: +down 6 182: +up 8 183: +forward 8 184: +down 9 185: +up 7 186: +down 7 187: +forward 8 188: +down 8 189: +up 6 190: +down 7 191: +down 4 192: +up 7 193: +forward 7 194: +forward 7 195: +forward 2 196: +forward 5 197: +down 5 198: +down 9 199: +down 8 200: +down 5 201: +up 3 202: +down 3 203: +down 6 204: +down 6 205: +forward 1 206: +down 2 207: +forward 2 208: +down 5 209: +up 2 210: +forward 5 211: +down 1 212: +down 3 213: +forward 4 214: +down 2 215: +forward 8 216: +down 6 217: +forward 3 218: +forward 3 219: +forward 9 220: +down 9 221: +down 4 222: +down 8 223: +down 7 224: +down 3 225: +up 6 226: +down 7 227: +forward 9 228: +up 9 229: +down 8 230: +forward 9 231: +forward 8 232: +down 2 233: +up 4 234: +forward 8 235: +up 7 236: +down 2 237: +forward 6 238: +forward 7 239: +down 5 240: +up 4 241: +down 3 242: +down 3 243: +down 5 244: +down 2 245: +down 5 246: +forward 8 247: +forward 8 248: +down 5 249: +up 4 250: +down 6 251: +forward 5 252: +up 6 253: +up 5 254: +down 4 255: +forward 7 256: +forward 5 257: +down 7 258: +up 9 259: +up 4 260: +up 9 261: +forward 8 262: +down 8 263: +down 8 264: +down 2 265: +down 8 266: +down 8 267: +up 6 268: +forward 2 269: +down 9 270: +forward 5 271: +forward 4 272: +down 8 273: +up 5 274: +forward 3 275: +forward 1 276: +down 6 277: +forward 9 278: +forward 2 279: +forward 1 280: +up 5 281: +down 2 282: +forward 5 283: +up 6 284: +up 6 285: +forward 9 286: +up 3 287: +forward 2 288: +forward 9 289: +down 9 290: +down 5 291: +up 4 292: +up 7 293: +up 8 294: +forward 4 295: +forward 3 296: +down 7 297: +down 5 298: +forward 5 299: +down 6 300: +forward 9 301: +up 4 302: +up 6 303: +down 2 304: +forward 6 305: +forward 7 306: +up 9 307: +up 5 308: +down 4 309: +up 5 310: +down 2 311: +forward 4 312: +up 9 313: +down 1 314: +forward 7 315: +down 9 316: +forward 5 317: +down 5 318: +down 2 319: +up 4 320: +up 8 321: +down 8 322: +down 7 323: +up 7 324: +down 1 325: +forward 5 326: +forward 8 327: +down 2 328: +down 1 329: +forward 8 330: +down 7 331: +up 6 332: +forward 9 333: +forward 4 334: +down 8 335: +forward 1 336: +up 8 337: +forward 3 338: +up 4 339: +forward 9 340: +down 6 341: +forward 5 342: +forward 1 343: +forward 8 344: +forward 5 345: +forward 8 346: +down 4 347: +forward 8 348: +forward 2 349: +forward 8 350: +forward 3 351: +down 3 352: +forward 6 353: +up 6 354: +up 9 355: +down 4 356: +down 6 357: +forward 6 358: +down 9 359: +up 2 360: +down 8 361: +down 6 362: +down 1 363: +forward 1 364: +down 2 365: +down 3 366: +forward 5 367: +forward 6 368: +down 5 369: +up 7 370: +up 2 371: +forward 2 372: +down 4 373: +down 4 374: +forward 3 375: +down 4 376: +up 4 377: +forward 1 378: +down 4 379: +forward 9 380: +forward 7 381: +forward 6 382: +down 3 383: +down 4 384: +forward 3 385: +forward 3 386: +forward 3 387: +up 6 388: +forward 4 389: +forward 7 390: +forward 3 391: +forward 5 392: +forward 7 393: +forward 4 394: +down 1 395: +up 2 396: +up 7 397: +forward 4 398: +down 2 399: +forward 2 400: +up 7 401: +down 7 402: +forward 5 403: +forward 9 404: +down 8 405: +forward 5 406: +forward 5 407: +down 9 408: +forward 1 409: +forward 6 410: +down 2 411: +down 3 412: +down 1 413: +down 7 414: +down 3 415: +up 3 416: +down 3 417: +forward 5 418: +down 4 419: +forward 6 420: +forward 2 421: +down 4 422: +forward 4 423: +up 5 424: +up 3 425: +forward 2 426: +forward 5 427: +down 7 428: +up 9 429: +up 5 430: +down 3 431: +forward 8 432: +forward 4 433: +down 8 434: +up 4 435: +forward 8 436: +forward 7 437: +forward 1 438: +down 2 439: +down 6 440: +up 7 441: +forward 9 442: +down 2 443: +down 4 444: +down 3 445: +down 8 446: +up 4 447: +down 2 448: +up 3 449: +forward 1 450: +down 2 451: +up 6 452: +down 9 453: +up 3 454: +down 1 455: +down 1 456: +forward 4 457: +down 2 458: +forward 3 459: +forward 5 460: +forward 7 461: +down 7 462: +up 3 463: +up 5 464: +down 1 465: +down 2 466: +forward 4 467: +down 1 468: +down 1 469: +down 7 470: +up 4 471: +forward 3 472: +down 3 473: +forward 2 474: +down 3 475: +up 7 476: +down 1 477: +up 5 478: +down 7 479: +forward 4 480: +up 2 481: +forward 5 482: +up 4 483: +down 4 484: +down 3 485: +forward 1 486: +up 9 487: +down 5 488: +forward 9 489: +forward 1 490: +down 7 491: +down 2 492: +down 4 493: +down 2 494: +forward 3 495: +down 1 496: +down 2 497: +up 9 498: +forward 2 499: +down 8 500: +forward 1 501: +forward 3 502: +down 5 503: +down 4 504: +forward 2 505: +forward 8 506: +forward 9 507: +down 9 508: +down 6 509: +up 3 510: +forward 1 511: +down 6 512: +down 7 513: +up 3 514: +forward 9 515: +down 2 516: +up 4 517: +forward 3 518: +forward 6 519: +forward 6 520: +down 7 521: +forward 7 522: +forward 6 523: +down 7 524: +up 9 525: +forward 7 526: +down 1 527: +down 8 528: +down 2 529: +down 2 530: +down 9 531: +down 6 532: +forward 1 533: +down 9 534: +forward 9 535: +forward 8 536: +forward 6 537: +forward 9 538: +down 5 539: +forward 9 540: +forward 4 541: +forward 4 542: +down 6 543: +forward 6 544: +forward 5 545: +forward 7 546: +down 7 547: +down 9 548: +forward 4 549: +down 9 550: +up 5 551: +forward 6 552: +down 6 553: +forward 9 554: +up 7 555: +forward 6 556: +up 6 557: +up 9 558: +forward 9 559: +up 4 560: +down 3 561: +up 9 562: +down 8 563: +down 2 564: +forward 4 565: +down 8 566: +down 2 567: +forward 2 568: +down 5 569: +up 3 570: +down 1 571: +forward 4 572: +down 3 573: +forward 3 574: +down 9 575: +forward 6 576: +forward 6 577: +down 9 578: +forward 6 579: +forward 1 580: +down 5 581: +up 1 582: +forward 3 583: +forward 1 584: +forward 5 585: +down 8 586: +forward 7 587: +forward 2 588: +up 3 589: +forward 8 590: +forward 1 591: +forward 7 592: +down 1 593: +down 4 594: +forward 7 595: +forward 9 596: +forward 4 597: +down 2 598: +forward 5 599: +forward 3 600: +forward 9 601: +forward 3 602: +up 3 603: +forward 9 604: +down 3 605: +forward 9 606: +forward 3 607: +forward 7 608: +down 5 609: +forward 6 610: +down 6 611: +forward 5 612: +forward 1 613: +down 1 614: +forward 8 615: +down 3 616: +up 1 617: +down 6 618: +forward 7 619: +up 5 620: +up 7 621: +down 3 622: +forward 8 623: +up 8 624: +down 4 625: +up 6 626: +up 7 627: +forward 1 628: +forward 2 629: +forward 7 630: +down 1 631: +forward 4 632: +down 8 633: +up 6 634: +up 7 635: +up 4 636: +down 7 637: +down 8 638: +down 6 639: +forward 5 640: +forward 9 641: +down 7 642: +forward 8 643: +down 9 644: +down 9 645: +forward 5 646: +forward 2 647: +up 4 648: +down 2 649: +forward 3 650: +down 2 651: +forward 1 652: +down 7 653: +down 6 654: +forward 5 655: +up 2 656: +forward 4 657: +down 4 658: +forward 5 659: +forward 7 660: +up 5 661: +down 7 662: +forward 9 663: +forward 3 664: +forward 6 665: +up 8 666: +down 9 667: +forward 1 668: +up 8 669: +forward 3 670: +down 6 671: +down 1 672: +down 3 673: +down 4 674: +up 2 675: +up 3 676: +forward 8 677: +up 7 678: +down 2 679: +forward 1 680: +down 6 681: +forward 1 682: +down 8 683: +forward 3 684: +forward 5 685: +forward 5 686: +up 5 687: +forward 4 688: +forward 6 689: +down 8 690: +up 7 691: +forward 8 692: +up 6 693: +forward 5 694: +down 4 695: +forward 8 696: +down 3 697: +forward 7 698: +forward 9 699: +forward 8 700: +up 9 701: +forward 4 702: +up 5 703: +up 8 704: +down 8 705: +forward 1 706: +down 1 707: +forward 3 708: +forward 9 709: +down 9 710: +up 2 711: +forward 5 712: +down 1 713: +down 6 714: +forward 2 715: +forward 2 716: +down 2 717: +down 8 718: +forward 5 719: +up 2 720: +up 2 721: +forward 3 722: +down 6 723: +up 2 724: +down 2 725: +down 1 726: +up 9 727: +forward 6 728: +up 4 729: +forward 4 730: +down 2 731: +forward 8 732: +up 9 733: +down 1 734: +forward 9 735: +up 3 736: +up 7 737: +forward 5 738: +down 9 739: +down 2 740: +down 5 741: +up 4 742: +up 8 743: +up 2 744: +down 1 745: +up 4 746: +forward 8 747: +forward 2 748: +down 8 749: +forward 9 750: +forward 1 751: +down 5 752: +forward 3 753: +down 6 754: +forward 3 755: +up 2 756: +down 9 757: +down 6 758: +down 4 759: +down 9 760: +down 8 761: +forward 2 762: +forward 7 763: +up 4 764: +forward 8 765: +up 9 766: +up 6 767: +forward 2 768: +down 1 769: +down 5 770: +down 5 771: +down 3 772: +up 9 773: +up 9 774: +forward 9 775: +forward 5 776: +down 1 777: +down 3 778: +down 8 779: +down 4 780: +forward 5 781: +up 4 782: +down 2 783: +down 5 784: +down 4 785: +down 8 786: +down 2 787: +forward 9 788: +forward 7 789: +up 9 790: +forward 8 791: +down 9 792: +down 2 793: +forward 5 794: +down 9 795: +forward 7 796: +down 2 797: +down 9 798: +forward 4 799: +up 7 800: +down 9 801: +forward 6 802: +forward 2 803: +down 1 804: +down 9 805: +down 3 806: +down 7 807: +down 8 808: +down 5 809: +down 9 810: +down 1 811: +up 9 812: +down 7 813: +forward 7 814: +up 4 815: +down 2 816: +down 4 817: +forward 6 818: +forward 8 819: +forward 1 820: +forward 2 821: +up 2 822: +up 2 823: +forward 9 824: +down 9 825: +forward 8 826: +forward 6 827: +forward 5 828: +down 2 829: +forward 7 830: +up 3 831: +up 8 832: +forward 1 833: +forward 5 834: +down 7 835: +down 7 836: +forward 5 837: +down 1 838: +up 3 839: +up 8 840: +forward 5 841: +forward 7 842: +forward 3 843: +down 6 844: +up 7 845: +forward 8 846: +down 5 847: +up 3 848: +forward 7 849: +down 2 850: +down 1 851: +down 1 852: +forward 1 853: +down 1 854: +down 8 855: +down 3 856: +up 1 857: +forward 8 858: +forward 9 859: +forward 5 860: +forward 8 861: +down 2 862: +forward 3 863: +down 5 864: +up 9 865: +down 9 866: +down 5 867: +forward 1 868: +up 9 869: +up 4 870: +up 7 871: +up 9 872: +up 4 873: +down 2 874: +forward 6 875: +forward 4 876: +up 5 877: +up 6 878: +down 8 879: +down 6 880: +down 6 881: +up 3 882: +forward 3 883: +down 9 884: +down 5 885: +down 5 886: +forward 7 887: +down 6 888: +forward 7 889: +down 9 890: +down 8 891: +down 3 892: +down 7 893: +down 4 894: +down 1 895: +forward 6 896: +up 7 897: +down 1 898: +forward 7 899: +down 2 900: +forward 4 901: +down 3 902: +forward 6 903: +up 7 904: +forward 3 905: +down 3 906: +up 6 907: +down 2 908: +down 4 909: +down 8 910: +forward 6 911: +down 4 912: +forward 7 913: +down 2 914: +forward 9 915: +down 3 916: +down 6 917: +down 3 918: +down 6 919: +forward 4 920: +down 8 921: +up 5 922: +down 6 923: +forward 6 924: +down 6 925: +forward 9 926: +up 8 927: +down 7 928: +up 1 929: +forward 4 930: +up 3 931: +forward 9 932: +up 6 933: +forward 4 934: +up 8 935: +forward 2 936: +down 7 937: +down 7 938: +forward 1 939: +up 9 940: +up 7 941: +forward 3 942: +down 1 943: +up 5 944: +forward 3 945: +forward 1 946: +forward 3 947: +forward 7 948: +down 6 949: +down 1 950: +forward 9 951: +up 1 952: +up 1 953: +down 8 954: +down 7 955: +forward 1 956: +up 8 957: +up 6 958: +down 8 959: +forward 1 960: +up 3 961: +down 7 962: +forward 7 963: +down 7 964: +forward 4 965: +forward 6 966: +up 2 967: +down 9 968: +forward 9 969: +down 4 970: +up 2 971: +forward 7 972: +forward 4 973: +up 8 974: +up 5 975: +down 8 976: +forward 7 977: +forward 6 978: +down 1 979: +up 5 980: +up 5 981: +down 3 982: +forward 7 983: +forward 1 984: +forward 7 985: +forward 1 986: +down 3 987: +forward 3 988: +forward 4 989: +forward 6 990: +down 3 991: +up 4 992: +up 5 993: +down 8 994: +up 3 995: +forward 4 996: +forward 6 997: +forward 8 998: +forward 4 999: +forward 7 1000: +down 9 1001: +up 3 1002: +down 1 1003: +up 4 1004: +forward 8 1005: +forward 5 1006: +forward 4 1007: +forward 1 1008: +down 2 1009: +down 7 1010: +down 6 1011: +forward 4 1012: +forward 2 1013: +up 2 1014: +down 2 1015: +forward 2 1016: +forward 2 1017: +up 6 1018: +forward 6 1019: +forward 1 1020: +forward 8 1021: +up 7 1022: +forward 4 1023: +forward 2 1024: +down 2 1025: +down 1 1026: +forward 4 1027: +down 4 1028: +up 7 1029: +up 2 1030: +up 3 1031: +down 5 1032: +forward 2 1033: +forward 9 1034: +down 2 1035: +down 9 1036: +down 4 1037: +down 8 1038: +up 9 1039: +up 5 1040: +up 2 1041: +forward 6 1042: +down 6 1043: +forward 9 1044: +forward 7 1045: +forward 8 1046: +forward 4 1047: +up 9 1048: +forward 9 1049: +down 8 1050: +down 2 1051: +forward 5 1052: +down 8 1053: +down 8 1054: +forward 8 1055: +forward 6 1056: +forward 7 1057: +down 8 1058: +forward 1 1059: +forward 6 1060: +down 4 1061: +forward 1 1062: +down 3 1063: +forward 1 1064: +down 8 1065: +forward 2 1066: +down 4 1067: +down 6 1068: +down 4 1069: +up 9 1070: +forward 6 1071: +up 3 1072: +down 7 1073: +forward 3 1074: +down 8 1075: +forward 6 1076: +forward 3 1077: +down 1 1078: +forward 1 1079: +up 6 1080: +down 1 1081: +down 2 1082: +forward 5 1083: +down 3 1084: +up 5 1085: +forward 6 1086: +forward 7 1087: +forward 2 1088: +forward 9 1089: +down 7 1090: +up 4 1091: +forward 6 1092: +forward 8 1093: +down 6 1094: +down 7 1095: +down 4 1096: +down 5 1097: +down 6 1098: +down 3 1099: +up 1 1100: +forward 2 1101: +forward 3 1102: +down 1 1103: +down 7 1104: +up 8 1105: +forward 1 1106: +forward 6 1107: +up 3 1108: +down 1 1109: +up 6 1110: +down 2 1111: +up 1 1112: +up 7 1113: +forward 3 1114: +up 8 1115: +forward 7 1116: +forward 5 1117: +forward 5