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
3 changed files with 247 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

22
10/solution.c Normal file
View File

@ -0,0 +1,22 @@
#include <stdio.h>
int main(void) {
char insn[5];
int arg = 0, X = 1, clock = 1, S = 0;
printf("Gold:\n\n\t");
while (scanf("%s %i\n", insn, &arg) > 0) {
for (int busy = *insn == 'a' ? 2 : 1; busy > 0; busy--, clock++) {
S += !((clock - 20) % 40) * clock * X;
printf("%s%s", ((clock - 1) % 40 >= X - 1 &&
(clock - 1) % 40 <= X + 1) ? "" : "",
(clock % 40) ? "" : "\n\t");
}
X += (*insn == 'a') * arg;
}
printf("\nSilver: %i\n", S);
}