aboutsummaryrefslogtreecommitdiff
path: root/2025/day_02.cbl
diff options
context:
space:
mode:
authorTrey Bastian <hello@treybastian.com>2025-12-03 12:10:51 +0000
committerTrey Bastian <hello@treybastian.com>2025-12-03 12:10:51 +0000
commitb8038908764e7ff9c9f5449b0753a05f9fb1dcef (patch)
tree621185ae9d183995956bec45292cbdc7bca0909c /2025/day_02.cbl
parent8bedb78899f872f151f2f36dbd97f3194acb64ec (diff)
day 2 2025
Diffstat (limited to '2025/day_02.cbl')
-rw-r--r--2025/day_02.cbl76
1 files changed, 76 insertions, 0 deletions
diff --git a/2025/day_02.cbl b/2025/day_02.cbl
new file mode 100644
index 0000000..1225b41
--- /dev/null
+++ b/2025/day_02.cbl
@@ -0,0 +1,76 @@
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. day_02.
+ 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 X(4096).
+ WORKING-STORAGE SECTION.
+ 01 ptr PIC 9(4) Value 1.
+ 01 len PIC 9(4).
+ 01 left-val PIC 9(32).
+ 01 right-val PIC 9(32).
+ 01 grouping PIC X(65).
+
+ 01 val-string PIC Z(32).
+ 01 val-string-len PIC 9(2).
+ 01 val-string-start-idx PIC 9(2).
+ 01 val-string-half PIC 9(2).
+ 01 result PIC 9(32) VALUE ZEROS.
+
+ 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
+ INSPECT input-line TALLYING len FOR CHARACTERS BEFORE
+ SPACE
+
+ PERFORM UNTIL ptr > len
+ UNSTRING input-line DELIMITED BY "," INTO grouping WITH
+ POINTER ptr
+ END-UNSTRING
+
+ UNSTRING grouping DELIMITED BY "-" INTO left-val,
+ right-val
+ END-UNSTRING
+
+ PERFORM VARYING left-val FROM left-val BY 1 UNTIL
+ left-val > right-val
+ MOVE left-val TO val-string
+
+ COMPUTE val-string-len = FUNCTION LENGTH(FUNCTION
+ TRIM(val-string))
+ IF FUNCTION MOD(val-string-len, 2) = 0
+
+ COMPUTE val-string-start-idx =
+ (FUNCTION LENGTH(val-string) - val-string-len ) + 1
+ COMPUTE val-string-half = val-string-len / 2
+
+ IF val-string(val-string-start-idx:val-string-half)
+ = val-string(val-string-start-idx +
+ val-string-half:val-string-half)
+
+ ADD left-val TO result
+ END-IF
+ END-IF
+ END-PERFORM
+
+ END-PERFORM
+
+ END-READ
+ END-PERFORM.
+ CLOSE input-file.
+ DISPLAY result.
+ STOP-RUN.
+