1
0
Fork 0

10: Solve in COBOL

This commit is contained in:
Mia Herkt 2022-12-10 19:54:55 +01:00
parent 668630b712
commit e1f6dec6c7
Signed by: mia
GPG Key ID: 72E154B8622EC191
2 changed files with 225 additions and 0 deletions

81
10/SOLUTION.CBL Normal file
View File

@ -0,0 +1,81 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. AOC22D10.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INPUT-FILE ASSIGN TO 'input'
ORGANIZATION IS LINE SEQUENTIAL
ACCESS IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD INPUT-FILE.
01 INPUT-RECORD PIC A(16).
WORKING-STORAGE SECTION.
01 INSTRUCTION.
05 INS PIC A(5).
05 VAL PIC S9(10).
01 CLOCK PIC 9(10) VALUE 1 USAGE IS COMP.
01 BUSY PIC 9(10) USAGE IS COMP.
01 X PIC S9(10) VALUE 1 USAGE IS COMP.
01 RESULT PIC 9(10) USAGE IS COMP.
01 RESULT-F PIC Z(10).
PROCEDURE DIVISION.
START-ROUTINE.
OPEN INPUT INPUT-FILE.
DISPLAY 'Gold:'.
DISPLAY ' ' WITH NO ADVANCING.
READ-ROUTINE.
MOVE SPACES TO INPUT-RECORD.
MOVE SPACES TO INSTRUCTION.
READ INPUT-FILE AT END GO TO END-ROUTINE.
UNSTRING INPUT-RECORD DELIMITED BY SPACE
INTO INS, VAL.
IF INS = 'addx' THEN
SET BUSY TO 2
ELSE
SET BUSY TO 1
END-IF.
PERFORM EXECUTION UNTIL BUSY = 0
IF INS = 'addx' THEN
ADD VAL TO X.
GO TO READ-ROUTINE.
EXECUTION.
IF FUNCTION REM(CLOCK - 20, 40) = 0 THEN
COMPUTE RESULT = RESULT + CLOCK * X
END-IF.
IF FUNCTION REM(CLOCK - 1, 40) IS
GREATER THAN OR EQUAL TO X - 1 AND
FUNCTION REM(CLOCK - 1, 40) IS
LESS THAN OR EQUAL TO X + 1 THEN
DISPLAY '#' WITH NO ADVANCING
ELSE
DISPLAY '.' WITH NO ADVANCING
END-IF.
IF FUNCTION REM(CLOCK, 40) EQUALS 0 THEN
DISPLAY ' '
DISPLAY ' ' WITH NO ADVANCING
END-IF.
SUBTRACT 1 FROM BUSY.
ADD 1 TO CLOCK.
END-ROUTINE.
CLOSE INPUT-FILE.
MOVE RESULT TO RESULT-F.
DISPLAY ' '.
DISPLAY 'Silver: 'RESULT-F.
STOP RUN.
END PROGRAM AOC22D10.

144
10/input Normal file
View File

@ -0,0 +1,144 @@
noop
addx 33
addx -30
noop
noop
addx 7
addx 1
noop
noop
addx 3
addx 3
addx 3
addx -4
addx 5
addx 2
noop
addx 7
noop
addx 1
addx 4
noop
addx 1
addx -38
noop
addx 16
addx -13
addx 2
addx 7
noop
addx -2
addx -10
addx 17
addx -5
addx 10
noop
addx -15
addx 16
addx 2
noop
noop
addx 7
addx 3
addx -2
addx 2
addx 5
addx -38
addx 7
addx -6
addx 2
noop
addx 7
noop
addx 1
addx 4
noop
noop
noop
noop
noop
addx 3
noop
addx 3
addx 2
noop
addx 7
noop
addx -20
addx 21
addx 3
addx 1
addx -35
addx 1
addx 4
noop
addx 31
noop
addx -26
addx 5
noop
noop
addx -2
addx 25
addx -18
addx -13
addx 14
addx 2
noop
noop
noop
addx 6
addx 1
addx 5
addx 3
addx -2
addx -38
addx 24
addx -17
addx 5
noop
noop
addx -2
addx 31
addx -24
addx 7
addx -10
addx 6
noop
addx 3
addx 2
noop
noop
addx 7
addx -2
addx -26
addx 31
addx 5
addx -40
addx 5
addx 33
addx -31
noop
addx 1
addx 4
addx 1
addx 4
addx 20
noop
noop
addx -14
addx -1
addx 5
noop
noop
addx 1
addx 2
noop
noop
addx 7
noop
noop
noop
noop
noop
noop