From 0dc96bc9431a69fe3e144081b3ca1869983753f0 Mon Sep 17 00:00:00 2001 From: dobiadi Date: Fri, 23 Dec 2022 23:17:08 +0100 Subject: [PATCH] Day22 --- day22/input.txt | 202 ++++++++++++++++++++++++++++++++++++++ day22/monkeymap | Bin 0 -> 20928 bytes day22/monkeymap.c | 241 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 443 insertions(+) create mode 100644 day22/input.txt create mode 100755 day22/monkeymap create mode 100644 day22/monkeymap.c diff --git a/day22/input.txt b/day22/input.txt new file mode 100644 index 0000000..7c83b88 --- /dev/null +++ b/day22/input.txt @@ -0,0 +1,202 @@ + ......#...........#..............#.......#.#..............#...................#...#................. + ..........#...........#.......#..........#...#.............#..#..#.#....#......................#.... + ..........#..................#.................#.#............##.......#..........#......#.......#.# + .....#.........................................##.................#..........##..................... + ....#............#.......#............#..........#..#.....#......#...................#.#.#.....#.... + ...#.............................#.#..#..........#..#..............#.........#...................... + .........#.#...##......#........#...................#..........#..##...#.........#.......#..#....... + .#.........#.............#....#.....................#.......#..................................#.... + ...................#...#...........#...........#......................#.#........#.................# + ....#....#........#.#.#............###............#..#.....##.......##.......#..#................... + .....#..#.............#...#......#.................................................#................ + ....#.....#.....................##...#.#...................#....................#................#.. + ..#......#............#.#.#.....#................#..#..........#.#.......##.#.#..............#...... + #......##...#......##.##.......#.....##..............#......#...##......#.......##.................. + #........##.#.#.......##...#.................#....#................#...#.#..........#.#.....#....... + .......#......#...........#..........................#.......#.......................#.............. + ....#..#.....#..................#.#...................................#....#....#.......#..#........ + .......#......................#.#.............#.....#.............#.#.............##......#......... + ...................#......#..#............#....................#...#.#...........#...#.#............ + #...#.#.....#.....#......................#...........#...#..#..#...#..........##..................#. + #....................#..#....#....................#.....###...........#......#..............#..#.... + ....#.....#.....................#................#...........................#....#.............#..# + ..#...#..............#........................#............#.................................#...... + ..#...............#.#..#......#.......#....#..............#...#...........#.....................#.#. + ..........#..#....#......#....#................#.#.#................#........#........#...........#. + ..........#.............#.#.....#...................#.....#..#.#.................................... + ...#....................#..........#.#..................#.#.#...........#..##...........#...#......# + ........#.........#....#............#.......#..................#.......#...#......................#. + .......#................##..................#..........#..#...................#.....#.##............ + ......#.#..................#.................##.#..#.#................#....#.........##............. + ......#..........#.#..............#...........#.............................#...#........#.......... + ......#..............#.....................#.......#......#.....................#...............#... + ........#.....##..#..##.....#...#...#....#.#.#.....................#.....#.#.....##..#........#..... + ........#........#.......#............#..................................#..#.........#............. + ..........##................................................#.#..........#..................#....... + ................#........##....#........................................#....#..........#.#...#..... + ..#..............................#.#...#......................#..........#........#................# + ................#..#....................#..#..................#.........#...........#.....###..#..#. + ...................#.................#...........................#..........#.......#.#........#.... + ......#.........#..##..........#....#.................#....#.........#.#.....#..........#........#.. + #..#.#.........#..........#.#..........#.........................................#........#......#.. + ..........................#.................................#....#...........#.#............##...... + .#..#..................#......#.................#..#....#.......................................#... + ..................#.........#...............#..#..........#.....#.............#..#.#......#......... + .....#...............#.............#.......#...........#.#.......#.#................#.......#....... + #..............##..#..#......#........#....#.........#......#...........#.....#..#............#..... + #.#.....#........................#.............................#......#...#......#.................. + ......#................#........#...##........#..........#...........#...................#..##...##. + .......................#.....................#......#....#......#..............#................#... + #..........#.................#.#.....#....#...........##..#.........#...#.....#........#.##..##..... + ......#..........#...#................#......##... + ..........#..........#..............#...........#. + ...........................#.#.................... + ..............#......................#...#........ + ..........#..............................##.#..#.. + ........................#.#.#.....#.......#....... + ......................#.................#......#.. + ........#.....##.....#.........#..#..........#..#. + .#..........#....##......#...#....#..#.....#...#.. + #.......#...................#....................# + ............##....#.......#........#.............. + ..#...................#..#.....#.................. + .##......................#............#........... + ................................................#. + ......#................#..#.............##.....#.. + ........#................................#........ + ..#.......#.....................#.#.....##.#...... + .#.............#....................#.....#....... + .....................................#....#....#.. + ..##.....#......#.....#........................... + .......#.#...................#..............#..... + ..................#.......##......#............... + ......#.#.#...........##.#.#..#...#...##.......... + ............###..............#.................... + ................#.....#...#..............##....... + .#...............#......#....#.#.....#.......#.... + ..............#.............##..................#. + ...........#......#...............##.#.......#.#.. + ............................................#..... + ..................#....##............#...#...#.... + ........................#.............##....#....# + ....#............#.#......#.........#...##..##.... + .............#...#......#......#......##........#. + .................#......#....#.........#.......... + ...............#......#........................... + ....#..#..............................#........... + .............#..#.#.#....#......................#. + ...#.............#.............#.##............... + .....#.......#...#...#....#..............#.#...... + ...#.............#.....#.....#....#............... + ...........###..............#.#................... + ........#.........#............#..#..........#.... + .#.....#............#............................# + ........................##.................#...... + .......#..#...........#..#.................#...... + ...#.........#..........#.#.....#..............#.. + .........................#.....#..#.......#...###. + ...........#..........#..........#................ + .........................#.......................# + ##.................#...#..................#....... +..#...............#....##.........#......#...#....##.......#....#....#.................#............ +....#.#.........................................#........#.........................#...#............ +.......#..................##....#......#......#.......................#..#.#.#...................... +....#....#.......#.......#...............#...##........#.....#..#.....#............................. +..#.......#........................#..........#.......................#............................. +.#.........#....................#....#....#...........#.#.#...#..........#.....##...........#....... +..........................#.#..................#....#...#....#.....#........#..........#...#.#..#... +.#............#.....................#....................#..#......#...............#.#.........#.... +.......#........#..................##....#.........................#.........#...#..#...#...#.#..... +.....#.......#....#........#...................#....#..#......#........#.........#.............#.... +.................................#....#...#....#..#.........#...#...............#................... +...........#.......................#..........................#.............#............#.....#.... +........#..#.#................#.#...#....................##...........#.....#..#..........##....#.#. +......#.....#......................#.......................................#.#..#...#..#......#..... +#......#.#..................#....#...........#........................#..#....#....#..#............. +#........#..........#..##..##.#..............##...#........................##.......#..........#.... +.....................#................#..........#......................#...................##...... +.#............#........#.............#.#......#.........#............#.#.............#.............# +........#..................#.##.................#....................#.........#..#........#........ +..............#...#..#.........#.....#.............#..#........#..#........................#.....#.# +......#.#..#.#.............#.............#......#........#.....#.................................... +#...........#.....#......#.........#...................#......#...#.##...#.......#...........#...... +........#.##........##.#.#...#................................#...................#...#.....#..#.... +........#..............#...................##............................#...............#........#. +..#...................#...#......##..#.###.#.......#.......#.....#........#..#....#............#.... +.........#.......#.###.#.......#..................#......##....#.#.........#....................#... +...............#.#.................#.#..............#.###....#.............#.........#.............# +..#..........................##....#..........#.........................#.........#......#.....#.... +..#.........................#......#.....#....#.....#...#....#........#....#......#..........#...... +....#.................#......................#.....##..........#.......#...................#........ +............#..............................#........#..#.........#.....#...#........#.............#. +.......##..#....#..#..........#.............#.................#.....#.....#....................#.... +.#.......#...........#..................#..........#....#...#.#..........#...............#.......... +.......#...........#...#..........#......#....#.........#..#.##.....#...........#....#.....#.....#.. +........#......................................#..##..........##..#................................. +......#....#............#.#.........#..#......#.......#......#...#.........#..#.................#... +....................#.........#...#..............#.........#..................#...#.##.........#.... +...#............................###...................#..##...........#.......................#..... +....##...............#....................................#.....#...#...........................#... +.....#..........#.....#.........#.........#....#..................##..............................#. +......#..#.....#.......#......##..#..........#.#..............................#..........#.........# +....#.........#.#........#.#.....#.#..#.....#......#..#.##...........................#.#..#......... +####..........................#..#....................#.#....................#....##.....#.......... +.........#.#..#................#.........#....#..........#.##......................#................ +.................##.#....#............#..#.......#.....#................#.#.........#.....#......... +....#.....#.#...........................###.........#..#.####...#..............................#.... +.....#.............#...#.............##......#..........##...#............#...#......##............. +#..#.......#.#..#....#.....#.................#............................#.................#....... +....#...................#...#..#.#.........#...............#..#......................#...#.#...#.##. +........#..........#..........#..........................#..#........#.#...................#....#... +.....................#.....................#....#. +..#......................#................#....... +....................###.#......................... +....#......#........#..................#.......... +.....#...#...............#.........#.#.....#.....# +..#.#...#.............#...##.........#........#... +......#..........##......#....#......#.#.......... +.................##.......#.........#............. +..#......#..#..............#.........#............ +.................................................. +.....#..........###...#...#....................... +.#..#............#.#.#.......#......#............. +..#...........................#...#.........#..#.. +............................#.#..............#..#. +.................................................. +....#....#...#.#...........#.#...............#.... +##........#.......##........#..................... +..#..............#.........#...##..#.............. +..............#..........#............#.....#..... +............#.......##..........#...#.....#....... +#..###.......#...##..#....#...#................... +.......#...................#..........#.......#.## +.........#..#.....##................#............. +.#.........#.#....#....#....#.....#..........#.##. +............#.....##.....#.#..#.....#....#........ +...................#...................#.......... +....................##..#....#.................... +#..#..............................#.........#..... +............#..................................... +...........................#..#............#...... +.............#......#....#.........#......#....... +.#.........#......#.#.........#.....#..........#.. +...#......#....#..#.............................#. +.#................#.....#......................... +.........#.#...........#...##....#..#..#.......... +...#.....#.#.......#..............#.#............. +.............#.#..#...............##..##.......... +.........#.#...........#....#.........#.........#. +.........#.............#........#..........#..#... +...#............##................................ +..........#..........#.............#.....#........ +............#....#.....##......................... +....#.......##........#...#...#.#...#......##..#.. +......###...........#.....................#....#.. +..#......................#...............##....... +#..#...#...#.........#..........#..#...#........#. +..................#...#..#.....#......#........... +......#.#.......#..........#....#...........#..... +.........#..................#.........#........#.. +..#....#..............#.......#................... + +39L35R25L7R47L28R8L33R20R40R33R11L32L6L14R9R13R49L32R24R40R49L8R7L28L7L34R12R29L12R25R26L7R33L18R25L32L29R13L8R4R42L24L23L8L50L9L46R10L47L17L16R44L4L18L43R26L16R3R25L33L50R42L13R16L32R46R19R50R40R19R8L4R1L39L26R14L27R22R48L21R16R14R44L32L1L6R26L3L24R11L15R43R34L2L2L15R16R12R29R40L32L36L20L22L43R50L38R44L41L22L32L13R42L10R18L48R45L24R15L22L20R5R37R30L22R13L7R31L8L38R3R13L14R28L28R17R27L40R5L24R20L11R27R4R29R25R11L21L21R39R44R15L46L23L6L40R31L40R15R48R33R22R6L50R18L16R22R14L50R39L16L32R49R3R43L8R13R30L28R13R33L39R43R4R24R39R19L35L38R43L10L8L34R14L3R13L45R38R30R27L25R25R35L43R21R11L10L33L40R23R40L39R6R4R22R33L29L13R42L28R32R13R12R16L7L46L44L16L25L22R9L2R13R35R42L28R49L49R15L49R2R21L26L47R4L31R22L9L32L16R10L46L31R39L25R11R42R32L17R12L38L20L45L8L22L43R41L13R40L46R9L13L42L13R36R6R8R31L20R5R6L9L36L50L17L23R5R4R34R28R14R38L48R11L26R4R19L47R25R9L37L22L30R10R14L24R12L13R1L27L6L35L42L38R38L11L26L15L31R19R5L50L7R30L49R10R14L13L1R15R7R2R9R30L34R7R10R46R15R9R29L29R13L27L27L36L22L14L7R6R44R5L28R11R36R39R25L39R39L7L32R2L12R48R23L3R35L14R2R28R29R5R6L7L17L22R39L48R34L6R35L38R48R6L33L20R15R24L22L16R1L7R40R25R34L42L13R23L18L17L38L25R12R28R4L40L49R25R48R9L19R21L49L26L23R43L6L38L41R44R30R3R38L46L30L47L1R40R18L43L2L11L10L22L22R22R33L12L12R25R36R35L47R9R40L37R49R13L13R50R28R18L30R16R6R40L4L30R8R49R33R31L27L9R27R3R47L15R47R39L20L27L21R38L48R35R10R36L48L47R29L2R39R3R6R49R14R29R48R47L6L27L20R17L42R2R8L48L3L48R13R41R45L42L6R33R9L31R38L47L28R29R39R46R43R22R12R10R33R23L31L6L12L49R35L8R21L39R29L34R40L17R33R38L23R45R30L30R41L18L12L20L2L33L40R50L28R19L10L20R11R15R14L39R21L28R10R19L21L16R37R1R16R26R39L4R31R40L31R21R46L37L25L17L9R16L12R19L28R14R13L22L50R6R23R2L40L9R8R7R24L29R30L28R26L4R43L33R21R46R32L41R10R48R25R2L6L28L3R32R11R27R49L8R49R39R36R35R32L14R34L23L22L38L41R28R1R35L2R23L14R34R30L30R45L29L38L7R14R33R22R36L36L15L25R1R6R3L32R40R15L10R5L30L33R46R44L48R16R47L48R12R13L35L48L24L7L3L50L44L35R44L45L6R10L17L20L8L33R40L49R19L35L33L46L26R12R35L12R36L7R18R27R36R25R8L7R40L15L16L45R44R25R17R40R19R23R16L22R26R40R22R6L21L45L27R29L34R36L24L48R17R11L43L2L49R45R23L49L36R40R33L16R48R33R11R42R35R30R11R48R18R20R37L43L5L47R41L46R4R1R30R23L38L6R8L18R47L3R48R35L31R5L45R30R18R50L7L5L49R9R4R3R1L4R37R18L19L46L49L24R28L23R47L25R15L22R40R29R13R23R11L46R34R40L38L12R7L23R46R7L44L22L43R26L39R30L4L14L33L20R21R19L15L13R34R24R6L9L3L42R24R50R14R49L38L14L26R35R39R33L20R17R17R43R38L28R12L18R18R15L41L49L13R13L29R2L20L50R32L25L19L14R15R29L15R29L30L17L44L30R8L26R35R32R15R47L30R5R30L14R49L42R22L8L18R26L44R43R17L27R24R28R44L22L9L6R19L29L3L9L9R50R34R23R29L20R26L15R27L9L27R39L5L49R19L20L28L40L6R11L48L30L21L33R13L38R10R35R38L7R43L33R33R4R34R23L8L27R45L43R3R31L5R13L41R37L23L28R10R39L12R27L37L45L39R40R41R22L9R3R5L47L20L36R10L49R3R36L40L48R41L24L7L48R47R24R37R23L23R19R48R5L43R36R12L45L47R7L41L23R50R14L4R46L47L10R12L47R13R18R15R7R45L35L34L35R39L27L33R28L20L24R38R33R23L2R19L31R11L4R1R42L8R36R17L49L45R35L39L32L16R19R15L7R42L39L14R29R8L44R28R24L3L17R4R5L28R19R48L33L42R17R28L14L35L9R27R9R28R47L47L42L20L2L1R32L38L1L8L21R17L28R42R46R31L34R27R26L17R23R25L20R16L21R1L48R11R22R35R49L42R5L24R11R18L12L5L21R25R14R16L50L32R47R41R15R43R8R28L24L16R29R17L32R1R11L37R26R13L44L43R44L28R33R36L28R34R20L39L47L18R37L4L10L38R20R23L22L10L2L21L14L23L23R39R14R48R1L20R21L47R21R46R13L36L16L39R2R30L17R19L15L3R2R34R22R31L24R18R26L16L25R27L21R21R19L39R20L41L28L43L25R36R38L36L23R6L12L38L45R29L32R47R18R45L20R18R20L12R9R49L17R46R42L1L16R6L31L35R24L18L26R11R39L25R40R21R5R15R25L31L14L48L7R6R7R9R18R23L48R4L24L5L37L33L5L16R18L25R48R16L50R46R9R9R25R4L19L9L33R31L45L45R17L38L30L22L25L49R21R45L14L17L12R33R18R22L50R18L5R25L35R10R8R10R14L29L20L31R8L45L19R32L41R48L33L48L42L31R49L48L8L45L19R42R12L29R26L44L49R38L40R24L37R9L44R21L13R13R19R26L42L20L13R39R27R14L43L42L47L15R1R32L22R47R35R46L24L9R25L6R26L17R6L29L47R10L8L28R33L6R9R29L31L39L23R6L34L10R20L35L35R48R13L44L4L48L2R30L40L24L49R39R39R45L7L33R39L15R28R47R35L25R25R13L45L50L43R31L47L38L38R34L26R5L15L20L25L40L42L11L33L4R37R11R26L12L29L11R12R50R46L1R15L34L17R16R11L39L45R21L5L43R41R48R14L32L28R47L46L43L26R47R9L6R33R3R3L22R16L37L49L40L23L25L11L36L22R34L22R34L35R27L9R29R20R9R34R29R20L13L24R10R8R45L29R21L46R45R38L16L9L10R30R50L2R30L22R31L11L23L10L23R16R33R48L49R11L6R36R49R26L34R44R28R23R16L31L4L19L16R27R15L39L42R21R34R34L34L42R28L37R18R30L36R20R17R36R39L49L25R22L4L34L36R10L49R48R2R24L8L21R8R38R15L47L11R14R5R14R47L6R28R3L14R11R36R2R18L12L36R35R14R50L38L25R6L41L17R18L9R44R34L42L50R17R6L4L25R32L8L38R30L50R9L39L4R9R27L39L14L45R40R19R48R42L10L34R44L41L24R17L9L14L40L3L48L6R44R48L48L5R13L11L9L27L37R40R39L35L19L1L22L17L46R41L15R15L37R20L44L25R14L18L48L28R22L30L29R20R42L38L39L44R16L26L50R47L30R23L41L39R10R30L50R1L46L41R8L12R10L45L20R6R9R45R19L40R44R38R12R42R18R10R5L39R4R3R4R16L35R40R36R5L31R28L17R18L28R23R37R10L7R23R9L49R42L47L3L17L39R34L24L30R9R7L13L18L31L38L8L48L22L4R44R13L47R18R35L40L48R39L47R26R31L25L28L36L8R26R10R7L23L21R46L30L1R13L17L9R13R20R1L36L36L33L34R8R31L4L1L20R15L30R50R50L7R50R45L40L20R41R47R14L18L25R6R9R11R3L1R30R21L4R2L33R14L1R42R41L37R5R4R26R31R34R22R24R39R9R15R19L34L9R38L43R38L30L48R49R42L8L23R28R8R2R2L1L16R2L1L10R1R45R45L39L3L4R12L50R29R14R26L15L35L33R9L3R39L27L50R47L45R34R38L36R25L34R14L15L13L31R30R24L40R8R18R18R7L36L9R49R15L44R11L17R33R34L39L19R30R21L18L38R43L5R16R44R19R39R43L37R45R19R46R21L24L3L3R20L26L19R27R39R15R8R15L43R25L45L20L17R49R10R33R24R26R10L39L31L30R5L11L49L32R43L22L9R5L47L21L37R39L32L1L18L34L31R34R25R15R24L30L8R48R13R13L15R41L15L45R6R10L6R48R47R10R34L25R8L11L3R5R46R33R22R41R23R38L49L9L14L1R23L20R48L43L26L39R32R17R39R50L19R48R3R46L1L14L11R1R12R48R37L33L22L18R25R9L32R37L14R36L40L24L23R11L1R26R27R44L32R32L38L18R26L10R7L26R25L42R17R37L10L24L33R15L9L14R19R46L50L29L16R42R46R25L30L6R16R39R2R9L30R5L9L2L24R41 diff --git a/day22/monkeymap b/day22/monkeymap new file mode 100755 index 0000000000000000000000000000000000000000..a42979db9d9300d06d90c610fde202bb639bd610 GIT binary patch literal 20928 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 F{{eesARPbz literal 0 HcmV?d00001 diff --git a/day22/monkeymap.c b/day22/monkeymap.c new file mode 100644 index 0000000..77a285f --- /dev/null +++ b/day22/monkeymap.c @@ -0,0 +1,241 @@ +#include +#include +#include +#include + +#define BUFFER_SIZE 16*1024 +#define MAP_MAX_WIDTH 1024 +#define MAP_MAX_HEIGHT 1024 +#define MAX_PATH BUFFER_SIZE + +enum tile { + VOID, + OPEN, + WALL +}; + +enum direction { + RIGHT, + DOWN, + LEFT, + UP +}; + +int moves[4][2] = { + {1, 0}, + {0, 1}, + {-1, 0}, + {0, -1}, +}; + +int main() { + char buf[BUFFER_SIZE], *p, c; + memset(buf, 0, BUFFER_SIZE); + p = buf; + int map_width = 0, map_height = 0; + int map[MAP_MAX_WIDTH][MAP_MAX_HEIGHT]; + for (int i = 0; i < MAP_MAX_WIDTH; i++) { + memset(map[i], VOID, MAP_MAX_HEIGHT * sizeof(int)); + } + int isPath = 0; + char path[MAX_PATH]; + int path_len; + + while ((c = getchar()) != EOF) { + *p++ = c; + if (c == '\n') { + if (!isPath && map_width < (p - buf - 1)) { + map_width = p - buf - 1; + } + if (buf[0] == '\n') { + // Skip empty line + isPath = 1; + } else { + if (!isPath) { + p = buf; + while (*p != '\n') { + map[p-buf][map_height] = *p == ' ' ? VOID : (*p == '.' ? OPEN : WALL); + p++; + } + map_height++; + } else { + memcpy(path, buf, (p - buf - 1)); + path_len = (p - buf - 1); + path[path_len] = 0; + } + } + memset(buf, 0, BUFFER_SIZE); + p = buf; + } + } +// printf("%i,%i\n", map_width, map_height); + + + int startPos[2], found = 0, currPos[2]; + enum direction dir = RIGHT; + for (int i = 0; i < map_height; i++) { + for (int j = 0; j < map_width; j++) { + if (map[j][i] == 1) { + startPos[0] = j; + startPos[1] = i; + found = 1; + break; + } + } + if (found) break; + } + + p = path; + currPos[0] = startPos[0]; + currPos[1] = startPos[1]; + while (*p != 0) { + // Rotate + if (*p >= 'A' && *p <= 'Z') { + switch (*p) { + case 'R': + dir = dir == UP ? RIGHT : dir+1; + break; + case 'L': + dir = dir == RIGHT ? UP : dir-1; + break; + } + p++; + } else { + // Move in direction + int count = 0; + sscanf(p, "%i", &count); + int bkp[2]; + for (int i = 0; i < count; i++) { + bkp[0] = currPos[0]; + bkp[1] = currPos[1]; + currPos[0] += moves[dir][0]; + currPos[1] += moves[dir][1]; + if (currPos[0] < 0 || currPos[1] < 0 || map[currPos[0]][currPos[1]] == VOID) { + do { + currPos[0] -= moves[dir][0]; + currPos[1] -= moves[dir][1]; + } while (currPos[0] >= 0 && currPos[1] >= 0 && map[currPos[0]][currPos[1]] != VOID); + currPos[0] += moves[dir][0]; + currPos[1] += moves[dir][1]; + } + if (map[currPos[0]][currPos[1]] == WALL) { + currPos[0] = bkp[0]; + currPos[1] = bkp[1]; + break; + } + } + + while (*p >= '0' && *p <= '9') { p++; } + } + } + printf("%i\n", (currPos[1]+1)*1000+(currPos[0]+1)*4+dir); + + // Redo with cubes + // I just statically coded the cube sides + p = path; + currPos[0] = startPos[0]; + currPos[1] = startPos[1]; + dir = RIGHT; + while (*p != 0) { + // Rotate + if (*p >= 'A' && *p <= 'Z') { + switch (*p) { + case 'R': + dir = dir == UP ? RIGHT : dir+1; + break; + case 'L': + dir = dir == RIGHT ? UP : dir-1; + break; + } + p++; + } else { + // Move in direction + int count = 0; + sscanf(p, "%i", &count); + int bkp[2]; + for (int i = 0; i < count; i++) { + bkp[0] = currPos[0]; + bkp[1] = currPos[1]; + enum direction bkpdir = dir; + currPos[0] += moves[dir][0]; + currPos[1] += moves[dir][1]; + if (currPos[0] < 0 || currPos[1] < 0 || map[currPos[0]][currPos[1]] == VOID) { + // Edge + // Blue + if (currPos[0] == 100 && currPos[1] < 100 && currPos[1] >= 50 && dir == RIGHT) { + currPos[0] = currPos[1] + 50; + currPos[1] = 49; + dir = UP; + } else if (currPos[1] == 50 && currPos[0] < 150 && currPos[0] >= 100 && dir == DOWN) { + currPos[1] = currPos[0] - 50; + currPos[0] = 99; + dir = LEFT; + // Orange + } else if (currPos[0] == 49 && currPos[1] < 100 && currPos[1] >= 50 && dir == LEFT) { + currPos[0] = currPos[1] - 50; + currPos[1] = 100; + dir = DOWN; + } else if (currPos[1] == 99 && currPos[0] < 50 && currPos[0] >= 0 && dir == UP) { + currPos[1] = currPos[0] + 50; + currPos[0] = 50; + dir = RIGHT; + // Green + } else if (currPos[0] == 50 && currPos[1] < 200 && currPos[1] >= 150 && dir == RIGHT) { + currPos[0] = currPos[1] - 100; + currPos[1] = 149; + dir = UP; + } else if (currPos[1] == 150 && currPos[0] < 100 && currPos[0] >= 50 && dir == DOWN) { + currPos[1] = currPos[0] + 100; + currPos[0] = 49; + dir = LEFT; + // Yellow + } else if (currPos[0] == 49 && currPos[1] < 50 && currPos[1] >= 0) { + currPos[1] = 149 - currPos[1]; + currPos[0] = 0; + dir = RIGHT; + } else if (currPos[0] == -1 && currPos[1] < 150 && currPos[1] >= 100) { + currPos[1] = 149 - currPos[1]; + currPos[0] = 50; + dir = RIGHT; + // Purple + } else if (currPos[0] == 100 && currPos[1] < 150 && currPos[1] >= 100) { + currPos[1] = 149 - currPos[1]; + currPos[0] = 149; + dir = LEFT; + } else if (currPos[0] == 150 && currPos[1] < 50 && currPos[1] >= 0) { + currPos[1] = 149 - currPos[1]; + currPos[0] = 99; + dir = LEFT; + // Brown + } else if (currPos[0] == -1 && currPos[1] < 200 && currPos[1] >= 150) { + currPos[0] = currPos[1] - 100; + currPos[1] = 0; + dir = DOWN; + } else if (currPos[1] == -1 && currPos[0] < 100 && currPos[0] >= 50) { + currPos[1] = currPos[0] + 100; + currPos[0] = 0; + dir = RIGHT; + // Cyan + } else if (currPos[1] == 200 && currPos[0] < 50 && currPos[0] >= 0) { + currPos[0] = currPos[0] + 100; + currPos[1] = 0; + dir = DOWN; + } else if (currPos[1] == -1 && currPos[0] < 150 && currPos[0] >= 100) { + currPos[0] = currPos[0] - 100; + currPos[1] = 199; + dir = UP; + } + } + if (map[currPos[0]][currPos[1]] == WALL) { + currPos[0] = bkp[0]; + currPos[1] = bkp[1]; + dir = bkpdir; + break; + } + } + + while (*p >= '0' && *p <= '9') { p++; } + } + } + printf("%i\n", (currPos[1]+1)*1000+(currPos[0]+1)*4+dir); +}