From b21fa69afe9a8683d81f6fdffc0dda558875c2f2 Mon Sep 17 00:00:00 2001 From: fwcd Date: Sat, 2 Dec 2023 16:18:28 +0000 Subject: [PATCH] Parse cube stacks --- day02/src/day02.cob | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/day02/src/day02.cob b/day02/src/day02.cob index 54e727f..37a380e 100644 --- a/day02/src/day02.cob +++ b/day02/src/day02.cob @@ -24,21 +24,28 @@ WORKING-STORAGE SECTION. 01 FileName PIC X(100). 01 ReachedEndOfFile PIC A(1) VALUE 'N'. - 01 GameIndex PIC 9(2) VALUE 1. + 01 GameIndex PIC 9(3) VALUE 1. 01 ParsedLine. 05 GameName PIC X(12). 05 RawCubeSets PIC X(256). 01 ParsedCubeSets. 05 RawCubeSet PIC X(32) OCCURS 6 TIMES. - 01 CubeSetIndex PIC 9(2) VALUE 0. + 01 CubeSetIndex PIC 9(1) VALUE 0. 01 ParsedCubeSet. 05 CubeStack OCCURS 3 TIMES. 10 CubeCount PIC 9(2). - 10 CubeColor PIC X(16). + 10 CubeColor PIC X(1). + 01 CubeStackIndex PIC 9(1) VALUE 0. 01 CubeSet. 05 Red PIC 9(2) VALUE 0. 05 Green PIC 9(2) VALUE 0. 05 Blue PIC 9(2) VALUE 0. + 01 Total. + 05 TotalRed PIC 9(2) VALUE 12. + 05 TotalGreen PIC 9(2) VALUE 13. + 05 TotalBlue PIC 9(2) VALUE 14. + 01 Result. + 05 Part1 PIC 9(4) VALUE 0. PROCEDURE DIVISION. ACCEPT FileName FROM COMMAND-LINE. @@ -96,6 +103,22 @@ INTO CubeCount(1), CubeColor(1), CubeCount(2), CubeColor(2), CubeCount(3), CubeColor(3). - DISPLAY "First: " CubeCount(1) " " CubeColor(1) ", " - "Second: " CubeCount(2) " " CubeColor(2) ", " - "Third: " CubeCount(3) " " CubeColor(3). + + MOVE 0 TO Red; + MOVE 0 TO Green; + MOVE 0 TO Blue; + + PERFORM ProcessCubeStack + VARYING CubeStackIndex + FROM 1 BY 1 + UNTIL CubeStackIndex > 3. + + DISPLAY "Red: " Red " Green: " Green " Blue: " Blue. + + ProcessCubeStack. + EVALUATE CubeColor(CubeStackIndex) + WHEN 'r' COMPUTE Red = CubeCount(CubeStackIndex) + WHEN 'g' COMPUTE Green = CubeCount(CubeStackIndex) + WHEN 'b' COMPUTE Blue = CubeCount(CubeStackIndex) + WHEN OTHER CONTINUE + END-EVALUATE.