1
0
Fork 0

Compare commits

..

2 Commits

Author SHA1 Message Date
Mia Herkt e2ba0de6f8
10: Solve in C 2022-12-10 20:01:55 +01:00
Mia Herkt e1f6dec6c7
10: Solve in COBOL 2022-12-10 20:01:55 +01:00
1 changed files with 66 additions and 66 deletions

View File

@ -1,81 +1,81 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. AOC22D10.
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.
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).
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).
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.
PROCEDURE DIVISION.
START-ROUTINE.
OPEN INPUT INPUT-FILE.
DISPLAY 'Gold:'.
DISPLAY ' ' WITH NO ADVANCING.
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.
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
SET BUSY TO 2
ELSE
SET BUSY TO 1
END-IF.
PERFORM EXECUTION UNTIL BUSY = 0
IF INS = 'addx' THEN
ADD VAL TO X.
IF INS = 'addx' THEN
ADD VAL TO X.
GO TO READ-ROUTINE.
GO TO READ-ROUTINE.
EXECUTION.
IF FUNCTION REM(CLOCK - 20, 40) = 0 THEN
COMPUTE RESULT = RESULT + CLOCK * X
END-IF.
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 - 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.
IF FUNCTION REM(CLOCK, 40) EQUALS 0 THEN
DISPLAY ' '
DISPLAY ' ' WITH NO ADVANCING
END-IF.
SUBTRACT 1 FROM BUSY.
ADD 1 TO CLOCK.
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-ROUTINE.
CLOSE INPUT-FILE.
MOVE RESULT TO RESULT-F.
DISPLAY ' '.
DISPLAY 'Silver: 'RESULT-F.
STOP RUN.
END PROGRAM AOC22D10.
END PROGRAM AOC22D10.