My yearly advent-of-code solutions
at main 2.0 kB view raw
1 IDENTIFICATION DIVISION. 2 PROGRAM-ID. day_03. 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). 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 21 01 joltage PIC XX. 22 01 result PIC 9(10) VALUE 0. 23 24 25 01 eof PIC X. 26 88 eof-y VALUE "Y". 27 88 eof-n VALUE "N". 28 29 PROCEDURE DIVISION. 30 OPEN INPUT input-file. 31 SET eof-n to TRUE. 32 PERFORM UNTIL eof-y 33 READ input-file AT END 34 SET eof-y to TRUE 35 NOT AT END 36 MOVE FUNCTION LENGTH(FUNCTION TRIM(input-line)) TO len 37 MOVE 0 TO maxim 38 *first pass leave something on the right 39 PERFORM VARYING idx FROM 1 UNTIL idx > len - 1 40 MOVE FUNCTION NUMVAL(input-line(idx:1)) TO digit 41 IF maxim < digit 42 MOVE digit TO maxim 43 MOVE idx TO idx-2 44 END-IF 45 END-PERFORM 46 * need the next index 47 MOVE maxim TO joltage(1:1) 48 MOVE 0 TO maxim 49 ADD 1 TO idx-2 50 PERFORM VARYING idx-2 FROM idx-2 UNTIL idx-2 > len 51 MOVE FUNCTION NUMVAL(input-line(idx-2:1)) TO digit 52 IF maxim < digit 53 MOVE digit TO maxim 54 END-IF 55 END-PERFORM 56 MOVE maxim TO joltage(2:1) 57 ADD FUNCTION NUMVAL(joltage) TO result 58 END-READ 59 END-PERFORM. 60 CLOSE input-file. 61 DISPLAY result. 62 STOP-RUN. 63