Created
November 6, 2021 21:57
-
-
Save vijfhoek/2da984b8ce81a92c8d7fb49f37c581b4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| identification division. | |
| program-id. day06. | |
| data division. | |
| working-storage section. | |
| 01 input-line pic x(100). | |
| 01 action pic x(10). | |
| 01 coords pic x(100). | |
| 01 start-coords pic x(100). | |
| 01 end-coords pic x(100). | |
| 01 start-x pic 9(10). | |
| 01 end-x pic 9(10). | |
| 01 start-y pic 9(10). | |
| 01 end-y pic 9(10). | |
| 01 x pic 9(10). | |
| 01 y pic 9(10). | |
| 01 temp pic 9. | |
| 01 matrix-table. | |
| 05 occurs 1000 times. | |
| 10 occurs 1000 times. | |
| 15 matrix pic 9 value 0. | |
| procedure division. | |
| accept input-line. | |
| perform input-loop-para until input-line = SPACE. | |
| * Count the lit lights | |
| move 0 to x. | |
| inspect matrix-table tallying x for all '1'. | |
| display x. | |
| stop run. | |
| input-loop-para. | |
| display input-line. | |
| if input-line(1:7) = "turn on" then | |
| move "turn on" to action | |
| move input-line(9:) to coords | |
| end-if. | |
| if input-line(1:8) = "turn off" then | |
| move "turn off" to action | |
| move input-line(10:) to coords | |
| end-if. | |
| if input-line(1:7) = "toggle" then | |
| move "toggle" to action | |
| move input-line(8:) to coords | |
| end-if. | |
| unstring coords delimited by " through " | |
| into start-coords, end-coords. | |
| unstring start-coords delimited by "," into start-x, start-y | |
| unstring end-coords delimited by "," into end-x, end-y | |
| move start-y to y. | |
| perform outer-loop-para until y > end-y. | |
| accept input-line. | |
| outer-loop-para. | |
| move start-x to x. | |
| perform inner-loop-para until x > end-x. | |
| add 1 to y. | |
| inner-loop-para. | |
| if action = "turn on" then | |
| move 1 to matrix(y + 1, x + 1). | |
| if action = "turn off" then | |
| move 0 to matrix(y + 1, x + 1). | |
| if action = "toggle" then | |
| move 1 to temp | |
| subtract matrix(y + 1, x + 1) from temp | |
| move temp to matrix(y + 1, x + 1) | |
| end-if. | |
| add 1 to x. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment