diff options
| author | Trey Bastian <hello@treybastian.com> | 2025-12-05 10:10:30 +0000 |
|---|---|---|
| committer | Trey Bastian <hello@treybastian.com> | 2025-12-05 10:10:30 +0000 |
| commit | 7ff1f1c2f55aca47536e134c59162801d9324bbe (patch) | |
| tree | 5814ddb03439be26dfc219b813d788350f6206bd | |
| parent | b8038908764e7ff9c9f5449b0753a05f9fb1dcef (diff) | |
| -rw-r--r-- | 2025/day_03.cbl | 63 | ||||
| -rw-r--r-- | 2025/day_03_part2.cbl | 64 |
2 files changed, 127 insertions, 0 deletions
diff --git a/2025/day_03.cbl b/2025/day_03.cbl new file mode 100644 index 0000000..f294d1d --- /dev/null +++ b/2025/day_03.cbl @@ -0,0 +1,63 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. day_03. + AUTHOR. Trey Bastian. + ENVIRONMENT DIVISION. + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT input-file ASSIGN TO "./input.txt" + ORGANIZATION IS LINE SEQUENTIAL. + DATA DIVISION. + FILE SECTION. + FD input-file. + 01 input-line PIC Z(4096). + WORKING-STORAGE SECTION. + 01 idx PIC 9(4). + 01 idx-2 PIC 9(4). + 01 len PIC 9(4). + + 01 maxim PIC 9 VALUE 0. + 01 digit PIC 9 VALUE 0. + + 01 joltage PIC XX. + 01 result PIC 9(10) VALUE 0. + + + 01 eof PIC X. + 88 eof-y VALUE "Y". + 88 eof-n VALUE "N". + + PROCEDURE DIVISION. + OPEN INPUT input-file. + SET eof-n to TRUE. + PERFORM UNTIL eof-y + READ input-file AT END + SET eof-y to TRUE + NOT AT END + MOVE FUNCTION LENGTH(FUNCTION TRIM(input-line)) TO len + MOVE 0 TO maxim + *first pass leave something on the right + PERFORM VARYING idx FROM 1 UNTIL idx > len - 1 + MOVE FUNCTION NUMVAL(input-line(idx:1)) TO digit + IF maxim < digit + MOVE digit TO maxim + MOVE idx TO idx-2 + END-IF + END-PERFORM + * need the next index + MOVE maxim TO joltage(1:1) + MOVE 0 TO maxim + ADD 1 TO idx-2 + PERFORM VARYING idx-2 FROM idx-2 UNTIL idx-2 > len + MOVE FUNCTION NUMVAL(input-line(idx-2:1)) TO digit + IF maxim < digit + MOVE digit TO maxim + END-IF + END-PERFORM + MOVE maxim TO joltage(2:1) + ADD FUNCTION NUMVAL(joltage) TO result + END-READ + END-PERFORM. + CLOSE input-file. + DISPLAY result. + STOP-RUN. + diff --git a/2025/day_03_part2.cbl b/2025/day_03_part2.cbl new file mode 100644 index 0000000..a4d71d5 --- /dev/null +++ b/2025/day_03_part2.cbl @@ -0,0 +1,64 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. day_03_part2. + AUTHOR. Trey Bastian. + ENVIRONMENT DIVISION. + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT input-file ASSIGN TO "./input.txt" + ORGANIZATION IS LINE SEQUENTIAL. + DATA DIVISION. + FILE SECTION. + FD input-file. + 01 input-line PIC Z(4096). + WORKING-STORAGE SECTION. + 01 idx PIC 9(4) VALUE 1. + 01 idx-2 PIC 9(4). + 01 len PIC 9(4). + + 01 maxim PIC 9 VALUE 0. + 01 digit PIC 9 VALUE 0. + 01 remaining PIC 99 VALUE 12. + 01 rem-idx PIC 99 VALUE 1. + + 01 joltage PIC X(12). + 01 result PIC 9(32) VALUE 0. + + + 01 eof PIC X. + 88 eof-y VALUE "Y". + 88 eof-n VALUE "N". + + PROCEDURE DIVISION. + OPEN INPUT input-file. + SET eof-n to TRUE. + PERFORM UNTIL eof-y + READ input-file AT END + SET eof-y to TRUE + NOT AT END + MOVE FUNCTION LENGTH(FUNCTION TRIM(input-line)) TO len + MOVE 1 TO idx + MOVE 12 TO remaining + MOVE 1 TO rem-idx + PERFORM UNTIL remaining < 1 + MOVE 0 TO maxim + PERFORM VARYING idx FROM idx UNTIL idx > + (len - remaining + 1) + MOVE FUNCTION NUMVAL(input-line(idx:1)) to digit + IF maxim < digit + MOVE digit TO maxim + MOVE idx TO idx-2 + END-IF + END-PERFORM + MOVE maxim TO joltage(rem-idx:1) + ADD 1 TO rem-idx + SUBTRACT 1 FROM remaining + MOVE idx-2 TO idx + ADD 1 TO idx + END-PERFORM + ADD FUNCTION NUMVAL(joltage) TO result + END-READ + END-PERFORM. + CLOSE input-file. + DISPLAY result. + STOP-RUN. + |
