My yearly advent-of-code solutions
1 IDENTIFICATION DIVISION.
2 PROGRAM-ID. day_01.
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.
13 02 direction PIC X.
14 02 move-text PIC XXX.
15 WORKING-STORAGE SECTION.
16 01 dial-position PIC 9(2) VALUE 50.
17 01 move-num PIC S9(3).
18 01 zero-count PIC 9(4) VALUE ZEROS.
19 01 eof PIC X.
20 88 eof-y VALUE "Y".
21 88 eof-n VALUE "N".
22
23
24 PROCEDURE DIVISION.
25 OPEN INPUT input-file.
26 SET eof-n to TRUE.
27 PERFORM UNTIL eof-y
28 READ input-file AT END
29 SET eof-y to TRUE
30 NOT AT END
31 MOVE FUNCTION NUMVAL(move-text) TO move-num
32 IF direction = "L"
33 COMPUTE move-num = 0 - move-num
34 END-IF
35
36 COMPUTE dial-position = FUNCTION MOD(dial-position +
37 move-num, 100)
38
39 if dial-position < 0
40 ADD 100 to dial-position
41 END-IF
42
43 if dial-position = 0
44 ADD 1 to zero-count
45 END-IF
46 END-READ
47 END-PERFORM.
48 CLOSE input-file.
49 DISPLAY zero-count.
50 STOP-RUN.
51