My yearly advent-of-code solutions
at main 2.0 kB view raw
1 IDENTIFICATION DIVISION. 2 PROGRAM-ID. day_03_part2. 3 AUTHOR. Trey Bastian. 4 ENVIRONMENT DIVISION. 5 INPUT-OUTPUT SECTION. 6 FILE-CONTROL. 7 SELECT input-file ASSIGN TO "./input.txt" 8 ORGANIZATION IS LINE SEQUENTIAL. 9 DATA DIVISION. 10 FILE SECTION. 11 FD input-file. 12 01 input-line PIC Z(4096). 13 WORKING-STORAGE SECTION. 14 01 idx PIC 9(4) VALUE 1. 15 01 idx-2 PIC 9(4). 16 01 len PIC 9(4). 17 18 01 maxim PIC 9 VALUE 0. 19 01 digit PIC 9 VALUE 0. 20 01 remaining PIC 99 VALUE 12. 21 01 rem-idx PIC 99 VALUE 1. 22 23 01 joltage PIC X(12). 24 01 result PIC 9(32) VALUE 0. 25 26 27 01 eof PIC X. 28 88 eof-y VALUE "Y". 29 88 eof-n VALUE "N". 30 31 PROCEDURE DIVISION. 32 OPEN INPUT input-file. 33 SET eof-n to TRUE. 34 PERFORM UNTIL eof-y 35 READ input-file AT END 36 SET eof-y to TRUE 37 NOT AT END 38 MOVE FUNCTION LENGTH(FUNCTION TRIM(input-line)) TO len 39 MOVE 1 TO idx 40 MOVE 12 TO remaining 41 MOVE 1 TO rem-idx 42 PERFORM UNTIL remaining < 1 43 MOVE 0 TO maxim 44 PERFORM VARYING idx FROM idx UNTIL idx > 45 (len - remaining + 1) 46 MOVE FUNCTION NUMVAL(input-line(idx:1)) to digit 47 IF maxim < digit 48 MOVE digit TO maxim 49 MOVE idx TO idx-2 50 END-IF 51 END-PERFORM 52 MOVE maxim TO joltage(rem-idx:1) 53 ADD 1 TO rem-idx 54 SUBTRACT 1 FROM remaining 55 MOVE idx-2 TO idx 56 ADD 1 TO idx 57 END-PERFORM 58 ADD FUNCTION NUMVAL(joltage) TO result 59 END-READ 60 END-PERFORM. 61 CLOSE input-file. 62 DISPLAY result. 63 STOP-RUN. 64