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