Solve day 6 of AoC 2024
This commit is contained in:
parent
74ab5de1ea
commit
ef37914813
4 changed files with 503 additions and 0 deletions
229
advent-of-code/2024/day_06/README.md
Normal file
229
advent-of-code/2024/day_06/README.md
Normal file
|
@ -0,0 +1,229 @@
|
||||||
|
# Day 6: Guard Gallivant
|
||||||
|
|
||||||
|
The Historians use their fancy device again, this time to whisk you all away to the North Pole prototype suit manufacturing lab...
|
||||||
|
in the year 1518! It turns out that having direct access to history is very convenient for a group of historians.
|
||||||
|
|
||||||
|
You still have to be careful of time paradoxes, and so it will be important to avoid anyone from 1518 while
|
||||||
|
The Historians search for the Chief. Unfortunately, a single guard is patrolling this part of the lab.
|
||||||
|
|
||||||
|
Maybe you can work out where the guard will go ahead of time so that The Historians can search safely?
|
||||||
|
|
||||||
|
You start by making a map (your puzzle input) of the situation. For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
.........#
|
||||||
|
..........
|
||||||
|
..#.......
|
||||||
|
.......#..
|
||||||
|
..........
|
||||||
|
.#..^.....
|
||||||
|
........#.
|
||||||
|
#.........
|
||||||
|
......#...
|
||||||
|
```
|
||||||
|
|
||||||
|
The map shows the current position of the guard with ^ (to indicate the guard is currently facing up from the perspective of the map).
|
||||||
|
Any obstructions - crates, desks, alchemical reactors, etc. - are shown as #.
|
||||||
|
|
||||||
|
Lab guards in 1518 follow a very strict patrol protocol which involves repeatedly following these steps:
|
||||||
|
|
||||||
|
- If there is something directly in front of you, turn right 90 degrees.
|
||||||
|
- Otherwise, take a step forward.
|
||||||
|
|
||||||
|
Following the above protocol, the guard moves up several times until she reaches an obstacle (in this case, a pile of failed suit prototypes):
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
....^....#
|
||||||
|
..........
|
||||||
|
..#.......
|
||||||
|
.......#..
|
||||||
|
..........
|
||||||
|
.#........
|
||||||
|
........#.
|
||||||
|
#.........
|
||||||
|
......#...
|
||||||
|
```
|
||||||
|
|
||||||
|
Because there is now an obstacle in front of the guard, she turns right before continuing straight in her new facing direction:
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
........>#
|
||||||
|
..........
|
||||||
|
..#.......
|
||||||
|
.......#..
|
||||||
|
..........
|
||||||
|
.#........
|
||||||
|
........#.
|
||||||
|
#.........
|
||||||
|
......#...
|
||||||
|
```
|
||||||
|
|
||||||
|
Reaching another obstacle (a spool of several very long polymers), she turns right again and continues downward:
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
.........#
|
||||||
|
..........
|
||||||
|
..#.......
|
||||||
|
.......#..
|
||||||
|
..........
|
||||||
|
.#......v.
|
||||||
|
........#.
|
||||||
|
#.........
|
||||||
|
......#...
|
||||||
|
```
|
||||||
|
|
||||||
|
This process continues for a while, but the guard eventually leaves the mapped area (after walking past a tank of universal solvent):
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
.........#
|
||||||
|
..........
|
||||||
|
..#.......
|
||||||
|
.......#..
|
||||||
|
..........
|
||||||
|
.#........
|
||||||
|
........#.
|
||||||
|
#.........
|
||||||
|
......#v..
|
||||||
|
```
|
||||||
|
|
||||||
|
By predicting the guard's route, you can determine which specific positions in the lab will be in the patrol path.
|
||||||
|
Including the guard's starting position, the positions visited by the guard before leaving the area are marked with an X:
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
....XXXXX#
|
||||||
|
....X...X.
|
||||||
|
..#.X...X.
|
||||||
|
..XXXXX#X.
|
||||||
|
..X.X.X.X.
|
||||||
|
.#XXXXXXX.
|
||||||
|
.XXXXXXX#.
|
||||||
|
#XXXXXXX..
|
||||||
|
......#X..
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example, the guard will visit 41 distinct positions on your map.
|
||||||
|
|
||||||
|
Predict the path of the guard. How many distinct positions will the guard visit before leaving the mapped area?
|
||||||
|
|
||||||
|
|
||||||
|
## Part Two
|
||||||
|
|
||||||
|
While The Historians begin working around the guard's patrol route, you borrow their fancy device and step outside the lab.
|
||||||
|
From the safety of a supply closet, you time travel through the last few months and record the nightly status of the lab's guard post
|
||||||
|
on the walls of the closet.
|
||||||
|
|
||||||
|
Returning after what seems like only a few seconds to The Historians, they explain that the guard's patrol area is simply too large
|
||||||
|
for them to safely search the lab without getting caught.
|
||||||
|
|
||||||
|
Fortunately, they are pretty sure that adding a single new obstruction won't cause a time paradox.
|
||||||
|
They'd like to place the new obstruction in such a way that the guard will get stuck in a loop, making the rest of the lab safe to search.
|
||||||
|
|
||||||
|
To have the lowest chance of creating a time paradox, The Historians would like to know all of the possible positions for such an obstruction.
|
||||||
|
The new obstruction can't be placed at the guard's starting position - the guard is there right now and would notice.
|
||||||
|
|
||||||
|
In the above example, there are only 6 different positions where a new obstruction would cause the guard to get stuck in a loop.
|
||||||
|
The diagrams of these six situations use O to mark the new obstruction, | to show a position where the guard moves up/down, - to show
|
||||||
|
a position where the guard moves left/right, and + to show a position where the guard moves both up/down and left/right.
|
||||||
|
|
||||||
|
Option one, put a printing press next to the guard's starting position:
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
....+---+#
|
||||||
|
....|...|.
|
||||||
|
..#.|...|.
|
||||||
|
....|..#|.
|
||||||
|
....|...|.
|
||||||
|
.#.O^---+.
|
||||||
|
........#.
|
||||||
|
#.........
|
||||||
|
......#...
|
||||||
|
```
|
||||||
|
|
||||||
|
Option two, put a stack of failed suit prototypes in the bottom right quadrant of the mapped area:
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
....+---+#
|
||||||
|
....|...|.
|
||||||
|
..#.|...|.
|
||||||
|
..+-+-+#|.
|
||||||
|
..|.|.|.|.
|
||||||
|
.#+-^-+-+.
|
||||||
|
......O.#.
|
||||||
|
#.........
|
||||||
|
......#...
|
||||||
|
```
|
||||||
|
|
||||||
|
Option three, put a crate of chimney-squeeze prototype fabric next to the standing desk in the bottom right quadrant:
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
....+---+#
|
||||||
|
....|...|.
|
||||||
|
..#.|...|.
|
||||||
|
..+-+-+#|.
|
||||||
|
..|.|.|.|.
|
||||||
|
.#+-^-+-+.
|
||||||
|
.+----+O#.
|
||||||
|
#+----+...
|
||||||
|
......#...
|
||||||
|
```
|
||||||
|
|
||||||
|
Option four, put an alchemical retroencabulator near the bottom left corner:
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
....+---+#
|
||||||
|
....|...|.
|
||||||
|
..#.|...|.
|
||||||
|
..+-+-+#|.
|
||||||
|
..|.|.|.|.
|
||||||
|
.#+-^-+-+.
|
||||||
|
..|...|.#.
|
||||||
|
#O+---+...
|
||||||
|
......#...
|
||||||
|
```
|
||||||
|
|
||||||
|
Option five, put the alchemical retroencabulator a bit to the right instead:
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
....+---+#
|
||||||
|
....|...|.
|
||||||
|
..#.|...|.
|
||||||
|
..+-+-+#|.
|
||||||
|
..|.|.|.|.
|
||||||
|
.#+-^-+-+.
|
||||||
|
....|.|.#.
|
||||||
|
#..O+-+...
|
||||||
|
......#...
|
||||||
|
```
|
||||||
|
|
||||||
|
Option six, put a tank of sovereign glue right next to the tank of universal solvent:
|
||||||
|
|
||||||
|
```
|
||||||
|
....#.....
|
||||||
|
....+---+#
|
||||||
|
....|...|.
|
||||||
|
..#.|...|.
|
||||||
|
..+-+-+#|.
|
||||||
|
..|.|.|.|.
|
||||||
|
.#+-^-+-+.
|
||||||
|
.+----++#.
|
||||||
|
#+----++..
|
||||||
|
......#O..
|
||||||
|
```
|
||||||
|
|
||||||
|
It doesn't really matter what you choose to use as an obstacle so long as you and The Historians can put it into position without
|
||||||
|
the guard noticing. The important thing is having enough options that you can find one that minimizes time paradoxes,
|
||||||
|
and in this example, there are 6 different positions you could choose.
|
||||||
|
|
||||||
|
You need to get the guard stuck in a loop by adding a single new obstruction.
|
||||||
|
How many different positions could you choose for this obstruction?
|
130
advent-of-code/2024/day_06/input.txt
Normal file
130
advent-of-code/2024/day_06/input.txt
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
........#.............................................#.........#..............#.......#....................#....................#
|
||||||
|
......................#........#........................#.............##............................#.#.............#..........#..
|
||||||
|
....#..................................#..................#.........#....#..............#..#......................#........#...#..
|
||||||
|
.....#...#...............#................#..........................#......#.....................#.......................#.......
|
||||||
|
......................................................##.#....#..................................................................#
|
||||||
|
#....#....................#..................................#.....................................#......................#.......
|
||||||
|
.......#...........................#.......................#......#...#.................................................#...#.....
|
||||||
|
....................##..........................#................#..........................#.#..................#....#.........#.
|
||||||
|
#..................................#...............#...............#.........................#............##......................
|
||||||
|
.............................#....................................#...............#.........#..........#.......................#..
|
||||||
|
.................................#............###.......#............##......#...............................#...............#.#..
|
||||||
|
.#..........................................#.......#.......................##..#........#........#...............#...............
|
||||||
|
......#...#............#.#..............#...................#..........................................................##.........
|
||||||
|
#................##....................................................................#........#.................#...#...........
|
||||||
|
...#..........#..........................##......#....#..............................#......................................#.....
|
||||||
|
..............................##.#..........................................................#..............................#......
|
||||||
|
......#...........#....#..................#............#....................................................................#.....
|
||||||
|
.....................#........................#.......................................................#...........................
|
||||||
|
...................#.#..........................................................................................#.#...............
|
||||||
|
.........................................##.........................................................#.......#...###......#........
|
||||||
|
...............................................................##.......................#..........................#..............
|
||||||
|
...#...........#.................#..............#......#.....#..........................#....................#....#...............
|
||||||
|
.................................#................#................#..............................................#.......##.....#
|
||||||
|
........#..........................#................#.......................#...................#.................................
|
||||||
|
.............................#.............................#..........#.........................#........#........................
|
||||||
|
....#................#.#................#...........................................................#...#....#......#......#......
|
||||||
|
........#..............................#...............................#.................#........................................
|
||||||
|
...........................................#..#........#...#...........#..#.............#.........................................
|
||||||
|
.#.................#.#................................#................#.#..................................#........#............
|
||||||
|
.......#..........................................#.................................................................#.............
|
||||||
|
...................#....................................................#..#...............................................#......
|
||||||
|
...#.#........#...#.....#.....................................................................................................#...
|
||||||
|
......#.........................#......................#.............#.....................#......................................
|
||||||
|
..........................#............#.................................#..#..........#........#......................#..........
|
||||||
|
...#..#......#.......................#........................#...................................................................
|
||||||
|
............#...........#................#..............#.........................................................................
|
||||||
|
.#........#....#.........................................#........................................#...............................
|
||||||
|
...#......................##.........#.......#.#...........#................................................#...#.................
|
||||||
|
...........#......#.........#....#.....#.......................................................#.............#....................
|
||||||
|
.............#...#..............................................#.........#.....##....................#...#.........#.............
|
||||||
|
...............#................................#..........................................#.....#.#.........................#...#
|
||||||
|
................#.....#..#.............#..............#..............#.......#....................................................
|
||||||
|
......#.........................................................................................................#.........##......
|
||||||
|
..#...........................#.#...........................................#..#.....#............................................
|
||||||
|
...#...#..................#..................................#.........#...................#..................................#...
|
||||||
|
............#..#.....................#.........................................#.......#..................................#.......
|
||||||
|
...#.......................................................................#.............................#........................
|
||||||
|
......#..................#....................................#......##...........................................................
|
||||||
|
.#...............#.....#..........................................................................................#...............
|
||||||
|
...#.............#.........................#.....................#...#..........#....#............................#...............
|
||||||
|
...#............................#.......#...........#.........#........#.....#...........#...................................#....
|
||||||
|
.....................#...................#................................#...............................#......#.........#..##..
|
||||||
|
.............#........................................................................................#........................##.
|
||||||
|
.....#.......#.......#............................................................................................................
|
||||||
|
............................................#................................................................#..............#.....
|
||||||
|
....#..#......................................................#...................................................#...............
|
||||||
|
.................................#...##..................#.................................................#....#.................
|
||||||
|
........#...................................#...#..........................................................#......................
|
||||||
|
........................#........##...........#.......#........#...................................#..............................
|
||||||
|
...........#...#...................................................#..............#......#...............#.#..................#...
|
||||||
|
........#.............................................#...........................................................................
|
||||||
|
........#................#......#..........#..#........#.#.......#...#........................#..#......................#.......#.
|
||||||
|
.......#..........................................................................................................#.....#.....#...
|
||||||
|
......................##....................#.....#.................#...........#.......................#.##..........#......#....
|
||||||
|
....................................##....................................................................#.................#.....
|
||||||
|
..#.................................#.#...........#............................................#....#.............................
|
||||||
|
#...................................#...........................................#............#.........#...............#..........
|
||||||
|
.......................#.............................................................#..........#...#.............#.....#.........
|
||||||
|
#..................#.#.............................................................................#.................#............
|
||||||
|
.....................#......#.......#...........#..........................................^...............................#......
|
||||||
|
................................#......................#.#.....#..............#..................#....#.#......#....#.............
|
||||||
|
............................................................................#........#.....................................#......
|
||||||
|
.............#......................................................#...................................#......##..#....#.........
|
||||||
|
...............#.................#...................#...............#............................................................
|
||||||
|
..............#...........#..#...........................................#...................................#..........#.........
|
||||||
|
..........#...........................#...................#..............#...#.......#..........#...................#.............
|
||||||
|
.............#.#..................................#....#..#............#.....................#................#...#.....#.........
|
||||||
|
...................#..........................................................#............##.....................................
|
||||||
|
...........................................#............#........................................................................#
|
||||||
|
..#..............................#....#...........................................................................................
|
||||||
|
..#..#............#...........................#...#...........#............#.....#.................#..............................
|
||||||
|
....#...................#.........#...............................................................................................
|
||||||
|
.......#..........................#....................................##........#.................##...#.#........#..#...........
|
||||||
|
.#........................#....#.......#.....#...................#.............................................#..................
|
||||||
|
..#...............................................................#................................................#..............
|
||||||
|
.....#........................................#...................................................................................
|
||||||
|
..........................................#..........................................................#............................
|
||||||
|
....................###.........................#............................#...#...........#............#.......................
|
||||||
|
.....#.....#...............#........#.#....#...................#...........#........#...........#.................................
|
||||||
|
................................................................................................#...##............................
|
||||||
|
......................#............#.........................#.......................#.....#...........#...#.#....................
|
||||||
|
............................#....................#..................#..............#..................................#...........
|
||||||
|
...........................#...................................#..............................................................#...
|
||||||
|
..................#................#.....................#...................#........#..............#............................
|
||||||
|
............#.............#.....................#..................#.........#......................#............#............#...
|
||||||
|
....#..........................#...............................................................................................#..
|
||||||
|
................#.....................................#.............................#...........#........................#........
|
||||||
|
#.##...........#.........................................#...............#..........................................#.#...........
|
||||||
|
........................................#..............#.....................#............#.....#.................................
|
||||||
|
.......#....##..#..#.....#........................................................................................................
|
||||||
|
....##.............#..............................#...............................................................................
|
||||||
|
.....#........................#.........#..#......#........#......................#.......#..............#..........#.......#.....
|
||||||
|
..#....#.........................#.#....................#..#.......#.............#..................#........#..................#.
|
||||||
|
..........##....#........................................................................#........................................
|
||||||
|
........#......#................................................................................................#................#
|
||||||
|
.....#.......#...#.............#....................................#..#........................#...#..............#....#.........
|
||||||
|
.............#...................................................##...#...........................................................
|
||||||
|
..............#.............................................#.............#................#.............#..............#.........
|
||||||
|
..#....#..........#.....#......#......................#................................#...............................#..........
|
||||||
|
.................................................................................##......#...........................#.....#......
|
||||||
|
..#....#..........#.......#.........................................#...............#..#............................#........#....
|
||||||
|
...........#........#.#....................#........#.....................................#..................#....................
|
||||||
|
.......#............#................#...........#.............#......#.........#...........................#.....................
|
||||||
|
#.#....#.#...............#....#.....#.......................#...............................#...................##...#............
|
||||||
|
.................##...#.................................................................#...........................#.............
|
||||||
|
.....#........................................#.........#...................................................#.....................
|
||||||
|
....................#.....................#................................................#...##.....................#...........
|
||||||
|
...............#...............................................................#....#.............................................
|
||||||
|
.................#................#...#.....................................#......#....................#...............#.#.......
|
||||||
|
...................#............................................#..#....#..#........#...............................#.........#...
|
||||||
|
..#........#...............#..................#.....#..................#.....................................#........##...#......
|
||||||
|
.....#.....#....#.....#................#.#.....................##.............................................................#...
|
||||||
|
................#............#......#......#.......................................................#....................#........#
|
||||||
|
........#..............#..#......................................................................##.....##........................
|
||||||
|
.........#.............................#.........#.......................................#..........................#.##..........
|
||||||
|
.#...................#........................................................#....#......................................#.......
|
||||||
|
....#..........#.....#.........................................................................................#..................
|
||||||
|
.......#.............................#............#.........................#....#....#........#......#.....#.......#.............
|
||||||
|
..#.......#........................#........................#.....................................................................
|
||||||
|
........................#...............................#.#.............#................................#..................#.....
|
136
advent-of-code/2024/day_06/lib.rb
Normal file
136
advent-of-code/2024/day_06/lib.rb
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
def walk(matrix)
|
||||||
|
should_continue = true
|
||||||
|
|
||||||
|
i, j = get_current_position(matrix)
|
||||||
|
start_i, start_j = i, j
|
||||||
|
start_symbol = matrix[i][j]
|
||||||
|
|
||||||
|
history = Hash.new
|
||||||
|
|
||||||
|
while should_continue do
|
||||||
|
history["#{i},#{j}"] = true
|
||||||
|
should_continue, i, j = make_step(matrix, i, j)
|
||||||
|
end
|
||||||
|
|
||||||
|
matrix[start_i][start_j] = start_symbol
|
||||||
|
return history.length
|
||||||
|
end
|
||||||
|
|
||||||
|
def make_step(matrix, i, j)
|
||||||
|
case matrix[i][j]
|
||||||
|
when "^"
|
||||||
|
if i == 0
|
||||||
|
matrix[i][j] = "."
|
||||||
|
return [false, -1, -1]
|
||||||
|
end
|
||||||
|
|
||||||
|
if matrix[i-1][j] == "#"
|
||||||
|
matrix[i][j] = ">"
|
||||||
|
return [true, i, j]
|
||||||
|
end
|
||||||
|
|
||||||
|
matrix[i-1][j] = "^"
|
||||||
|
matrix[i][j] = "."
|
||||||
|
return [true, i-1, j]
|
||||||
|
when "v"
|
||||||
|
if i == matrix.length-1
|
||||||
|
matrix[i][j] = "."
|
||||||
|
return [false, -1, -1]
|
||||||
|
end
|
||||||
|
|
||||||
|
if matrix[i+1][j] == "#"
|
||||||
|
matrix[i][j] = "<"
|
||||||
|
return [true, i, j]
|
||||||
|
end
|
||||||
|
|
||||||
|
matrix[i+1][j] = "v"
|
||||||
|
matrix[i][j] = "."
|
||||||
|
return [true, i+1, j]
|
||||||
|
when ">"
|
||||||
|
if j == matrix[i].length-1
|
||||||
|
matrix[i][j] = "."
|
||||||
|
return [false, -1, -1]
|
||||||
|
end
|
||||||
|
|
||||||
|
if matrix[i][j+1] == "#"
|
||||||
|
matrix[i][j] = "v"
|
||||||
|
return [true, i, j]
|
||||||
|
end
|
||||||
|
|
||||||
|
matrix[i][j+1] = ">"
|
||||||
|
matrix[i][j] = "."
|
||||||
|
return [true, i, j+1]
|
||||||
|
when "<"
|
||||||
|
if j == 0
|
||||||
|
matrix[i][j] = "."
|
||||||
|
return [false, -1, -1]
|
||||||
|
end
|
||||||
|
|
||||||
|
if matrix[i][j-1] == "#"
|
||||||
|
matrix[i][j] = "^"
|
||||||
|
return [true, i, j]
|
||||||
|
end
|
||||||
|
|
||||||
|
matrix[i][j-1] = "<"
|
||||||
|
matrix[i][j] = "."
|
||||||
|
return [true, i, j-1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_current_position(matrix)
|
||||||
|
for i in 0..matrix.length-1 do
|
||||||
|
for j in 0..matrix[i].length-1 do
|
||||||
|
if ['^', '>', 'v', '<'].include?(matrix[i][j])
|
||||||
|
return [i, j]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return []
|
||||||
|
end
|
||||||
|
|
||||||
|
def count_possible_obstructions(matrix)
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
start_i, start_j = get_current_position(matrix)
|
||||||
|
start_symbol = matrix[start_i][start_j]
|
||||||
|
|
||||||
|
for i in 0..matrix.length-1 do
|
||||||
|
for j in 0..matrix[i].length-1 do
|
||||||
|
if matrix[i][j] != "."
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
|
matrix[i][j] = "#"
|
||||||
|
if test_loop(matrix, start_i, start_j)
|
||||||
|
count += 1
|
||||||
|
end
|
||||||
|
matrix[i][j] = "."
|
||||||
|
matrix[start_i][start_j] = start_symbol
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_loop(matrix, i, j)
|
||||||
|
should_continue = true
|
||||||
|
|
||||||
|
history = Hash.new
|
||||||
|
|
||||||
|
while should_continue do
|
||||||
|
symbol = matrix[i][j]
|
||||||
|
key = "#{i},#{j},#{symbol}"
|
||||||
|
|
||||||
|
if history.include?(key)
|
||||||
|
matrix[i][j] = "."
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
history[key] = true
|
||||||
|
|
||||||
|
should_continue, i, j = make_step(matrix, i, j)
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
8
advent-of-code/2024/day_06/main.rb
Normal file
8
advent-of-code/2024/day_06/main.rb
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
require_relative 'lib'
|
||||||
|
|
||||||
|
matrix = File.readlines("input.txt", chomp: true)
|
||||||
|
x = walk(matrix)
|
||||||
|
puts(x)
|
||||||
|
|
||||||
|
x = count_possible_obstructions(matrix)
|
||||||
|
puts(x)
|
Loading…
Reference in a new issue