day 06 part 1 finished
This commit is contained in:
10
2024/06/example.txt
Normal file
10
2024/06/example.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
....#.....
|
||||||
|
.........#
|
||||||
|
..........
|
||||||
|
..#.......
|
||||||
|
.......#..
|
||||||
|
..........
|
||||||
|
.#..^.....
|
||||||
|
........#.
|
||||||
|
#.........
|
||||||
|
......#...
|
73
2024/06/index.js
Normal file
73
2024/06/index.js
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
import fs from 'node:fs'
|
||||||
|
|
||||||
|
let map = []
|
||||||
|
function init(filename) {
|
||||||
|
const data = fs.readFileSync(filename, { encoding: 'utf-8' }, data => data)
|
||||||
|
map = data.split('\n')
|
||||||
|
const guard = new Guard()
|
||||||
|
guard.position = guard.find()
|
||||||
|
|
||||||
|
console.log(`guard is at ${guard.position}`)
|
||||||
|
guard.solve1()
|
||||||
|
}
|
||||||
|
|
||||||
|
class Guard {
|
||||||
|
constructor() {
|
||||||
|
this.position = [0, 0]
|
||||||
|
this.visited = []
|
||||||
|
this.dir = [-1, 0] // y, x - looking up
|
||||||
|
this.steps = 0
|
||||||
|
}
|
||||||
|
rotate() {
|
||||||
|
const [y, x] = this.dir
|
||||||
|
if (y === -1 && x === 0) { console.log(`going right`); this.dir = [0, 1] }
|
||||||
|
if (y === 0 && x === 1) { console.log(`going down`); this.dir = [1, 0] }
|
||||||
|
if (y === 1 && x === 0) { console.log(`going left`); this.dir = [0, -1] }
|
||||||
|
if (y === 0 && x === -1) { console.log(`going up`); this.dir = [-1, 0] }
|
||||||
|
return this.dir
|
||||||
|
}
|
||||||
|
find() {
|
||||||
|
for (let y = 0; y < map.length; y++) {
|
||||||
|
for (let x = 0; x < map[y].length; x++) {
|
||||||
|
if (map[y][x] === "^") return [y, x]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
goStraight() {
|
||||||
|
const [y, x] = this.position
|
||||||
|
const [dy, dx] = this.dir
|
||||||
|
this.position = [y + dy, x + dx]
|
||||||
|
//const iWasAlreadyHere = this.visited.some(visits => visits.split()[0] === y + dy && visits.split()[1] === x + dx)
|
||||||
|
if (!this.visited.includes(this.position)) this.visited.push(this.position)
|
||||||
|
|
||||||
|
this.steps += 1
|
||||||
|
|
||||||
|
}
|
||||||
|
isLeaving() {
|
||||||
|
const [y, x] = this.position
|
||||||
|
const [dy, dx] = this.dir
|
||||||
|
return x + dx < 0 || x + dx > map[0].length || y + dy < 0 || y + dy >= map.length
|
||||||
|
}
|
||||||
|
isBlockAhead() {
|
||||||
|
const [y, x] = this.position
|
||||||
|
const [dy, dx] = this.dir
|
||||||
|
return map[y + dy][x + dx] === "#" ? true : false
|
||||||
|
}
|
||||||
|
isStillOnMap() {
|
||||||
|
const [y, x] = this.position
|
||||||
|
return (y >= 0 && y <= map.length) && (x >= 0 && x <= map[0].length)
|
||||||
|
}
|
||||||
|
solve1() {
|
||||||
|
console.log("y", map.length, "x", map[0].length)
|
||||||
|
this.visited = [this.position]
|
||||||
|
while (this.isStillOnMap()) {
|
||||||
|
if (this.isLeaving()) { console.log(`ran ${this.steps} steps`); break }
|
||||||
|
if (this.isBlockAhead()) this.rotate()
|
||||||
|
this.goStraight(this.dir)
|
||||||
|
}
|
||||||
|
this.visited = Array.from(new Set(this.visited.map(JSON.stringify)), JSON.parse);
|
||||||
|
console.log(this.visited.length)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
init('input.txt')
|
130
2024/06/input.txt
Normal file
130
2024/06/input.txt
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
....#...................................#...............#.................#.......#...#...........................................
|
||||||
|
.........................#.........#....................................#...........................#......##..............##...#.
|
||||||
|
.....................................................................#.........................................#..#...............
|
||||||
|
.............#........#...............................................................................#......................#....
|
||||||
|
....#.#.................................#......................................#...#..#..........#....#.....#.............#.......
|
||||||
|
....................#.......#..............#.......#.#.............................#......................................#.......
|
||||||
|
..............................................................................................#......#....................#.......
|
||||||
|
.........#.#..#...............................#........#.#........................................................#..............#
|
||||||
|
....#...........#.......#.......#....#...#....#..........#..........#......#...#................#.........................#.......
|
||||||
|
.......#...........................................................................................#.................#...........#
|
||||||
|
..................#.#....#..............................#....................#.................#....#..........#..........#.......
|
||||||
|
...#...............#...................................................#................#.........................................
|
||||||
|
.................#..#.#.............#.#...................................#......................#....#..........#................
|
||||||
|
.#..................#........................#..........#...........................#.......#......................#.#............
|
||||||
|
......#...........................................#.....#.....#...........#...........................#..............#............
|
||||||
|
.........#...............................#.............................#.#.......................................................#
|
||||||
|
...#.........#.#........................#...#..............................................#...#...............#...#..#...........
|
||||||
|
..............................#.....................................#................#..........................#.........##......
|
||||||
|
..........#...........#.....#......#......#..............................#.....#......................................#...........
|
||||||
|
..........................#....#.........................................................#..................#...#.........#.......
|
||||||
|
......................................#...........#.........#...............................#.............#...............#.......
|
||||||
|
.......................#........#.#....#...#...#................................................................#......#..........
|
||||||
|
......................#...............#................#..#.#...........#...#.......................#.........#.........#..#......
|
||||||
|
....#.................#..........#............#....#..............................................................#.#.............
|
||||||
|
.........................................................................................................................#...##...
|
||||||
|
.....................#.......#................................................##.............#........#........................#..
|
||||||
|
........................#..#.....#.#...............#.......#.................#.............................................#.#....
|
||||||
|
......................................................................................#..#.............................#..........
|
||||||
|
..#........................................................#..........................#..............#.#.....................#....
|
||||||
|
...#...................#............#...#.....#....#..................................#.......................#...................
|
||||||
|
...#...........#..............#............................................................#....#.....#.....................#.....
|
||||||
|
........................#..............#...................#.....#..#.............................................................
|
||||||
|
.....#....................#....................##..........#..............#......#...............#..........#.....#..........##...
|
||||||
|
....#.......#..........................................................#....................................#.#..................#
|
||||||
|
#......#.#.................................#........................................................................#.........#...
|
||||||
|
...............................#......#......................#....................................................................
|
||||||
|
..............#..........................#....................................#..........#.............#..........................
|
||||||
|
.....#........#....#.........................#..#.................#.#.................#...........................................
|
||||||
|
.................#..................#.#................................#..#..................................#......#.............
|
||||||
|
...........................#.......................................................#...................#............#.............
|
||||||
|
.....................#.........#..#..........................#..................................#........#........................
|
||||||
|
..#................................................#.#.................................#.#..........#.....#......................#
|
||||||
|
..........................................................................#..................................................#.#..
|
||||||
|
..................................#..........................................#......................#.............................
|
||||||
|
.......#...............#..............................................#......................................................#....
|
||||||
|
..........................................^....................#..................................................................
|
||||||
|
.........#.........#.........................................................................................#......#....#........
|
||||||
|
.........#.........#..............................................................................................................
|
||||||
|
........#....#......................#...............#...........#..................#...........................................##.
|
||||||
|
......#............#...........#................................................................#.......#.........................
|
||||||
|
#.............................#..............................................................#..............#.....................
|
||||||
|
...................................#...........#...................................................#........#..........#..........
|
||||||
|
....#.....................................................................................................#...........#......#....
|
||||||
|
....................................................#....#...................................#....................................
|
||||||
|
............#........#............................#..........#.............................#.....#..#.#...........................
|
||||||
|
...........#.................................................................#.............#......................................
|
||||||
|
....#.........................................#.#.......#...............#...........................#............##...............
|
||||||
|
..................#..............#...#........................................................................#....#...........#..
|
||||||
|
.....................#.....#...#.....#.............#..............#...#...................................#.......................
|
||||||
|
.#...#.....#.............................................#...........#....#.......................................................
|
||||||
|
.#.....#.............................#................#......................#........................#.........................#.
|
||||||
|
......................#.........................................#.............................................#.................#.
|
||||||
|
...#...#....................#.................................................................#............#....#.......#.........
|
||||||
|
...........#......#...............................#.......#......#........#..........#...........................................#
|
||||||
|
......................#....#..............##...........................................................#..........#...............
|
||||||
|
.#......#.....................................................................#..#....#.....................#.....................
|
||||||
|
....##....#...#.........#.............................#.........#...................#.............#....#................#.........
|
||||||
|
..................................................................#...............................#...............................
|
||||||
|
....#.................#.#.........................................................................................................
|
||||||
|
........................#..........................#...........#...................................#.#.......#....................
|
||||||
|
...........#.....................................................................................#...............................#
|
||||||
|
...........................................#..................................#...................................................
|
||||||
|
.....#.........#......#..........#.........#.................................................................................#....
|
||||||
|
....#.....................#....#..#.........................................................................#..#..................
|
||||||
|
........................##..#........................#...#.........#.................#......................#..#....#.............
|
||||||
|
.............#................#.......#........#............................................................#......#..............
|
||||||
|
#....#................................#.............#..........#........#.....#...#..........##.....................#.............
|
||||||
|
......#...#......#..........................................................................................#....#..#.........#...
|
||||||
|
#.................#..............##....#........................#....#...........................................#..........#.#...
|
||||||
|
........................#.#..#........................................#.............................................##............
|
||||||
|
..........#.........#.........................................................................................##..................
|
||||||
|
....#....#...........#.................#......................#........................#...#....................................#.
|
||||||
|
.......#..................................#..................#...................#...............................#.....#.....#....
|
||||||
|
#................................#...........#................##...#............#.................................................
|
||||||
|
.............................#...#....................................#...................................#...#..........#...#....
|
||||||
|
.#......#.........#...#.......#.................##....#..................................................#...#....................
|
||||||
|
...........#........................................................................................................#.............
|
||||||
|
......................................#......#..........#.....#.....................#...................#.#.................#.....
|
||||||
|
.....................................#............#................................................................##.............
|
||||||
|
.......................................#....................#...........................................##..#.....................
|
||||||
|
..........................#.................................................................................#....................#
|
||||||
|
...........................................................#............#.........#..#....#.#............#.....#..................
|
||||||
|
....#.....................................#...........................................#........#.....................#............
|
||||||
|
.............#.............#................#..........................#......................#..........................#........
|
||||||
|
.........#.................#......#............#....#.#.............................#.......##......................#.#.......#...
|
||||||
|
..............................................................................................................#...................
|
||||||
|
#...#...............................................#...................#........................#...............#................
|
||||||
|
.......#...#.......#..#..#..#..........#..........................................................................................
|
||||||
|
......#.##....................#......#........#............#................#.............#...................#............#......
|
||||||
|
.....#..#......#.......................#..............................#...............................#...........................
|
||||||
|
.#.................................#......#..............................................#........................................
|
||||||
|
....#...........................#..#........#...............#..#.......................................#......##.#.........#......
|
||||||
|
..................................#..................#......................#.....................#.......#.....................#.
|
||||||
|
.........#....................#....#...............................................#...................................#..........
|
||||||
|
.........................................................#...#...............##..#...............................................#
|
||||||
|
.#..#.............#.............#....................................#....................#.....#..#..........................#...
|
||||||
|
.................#.........................#..#........................................#.................................#........
|
||||||
|
.....................#....#................................#......#...............................................................
|
||||||
|
...............#..........................#...........#.............................................................#.........#...
|
||||||
|
...........##.......#................#..............................#..........................#....##.....#...................#..
|
||||||
|
......................#........#........#.........#..................................................##..#........................
|
||||||
|
....#........................#......................#.#..................#....#..................#.....................#..........
|
||||||
|
.................#......#...#...................................#...............#....#.........#............................#.....
|
||||||
|
#.................#...............................#......#..#..............................................###...#.......#........
|
||||||
|
..........#...........#..........................................................................................................#
|
||||||
|
.......................#......................................#.................#.......#........#................................
|
||||||
|
..#.......#..#.............................................................................................................#......
|
||||||
|
#.........#......#........................#.#..............................................#...................##.................
|
||||||
|
...#....#.....................................#...................................................................................
|
||||||
|
.....................#.....................................................................#........................#.....#.......
|
||||||
|
.....#..#...............................................................##......#.#......#..#.#.......#........................#..
|
||||||
|
.......#..........#....................................#.........#.................#.................#.....................#......
|
||||||
|
..............##.................................................#................#.........#.#............#........#............#
|
||||||
|
.....................#.............#....................#...#.................#.........#........#................................
|
||||||
|
.............#...........................................#........................................................................
|
||||||
|
.....#...#.............#..............#..............#..................................................................#......#..
|
||||||
|
.....##...................................##.....#.....#..#.........#...............#..........#.....#............#.#...........#.
|
||||||
|
....#..................#.........#....................#....................#...#....#..............##............#..............#.
|
||||||
|
..................#..........#.#.....................................#....#..............#.......#.....#...............#......#..#
|
||||||
|
..............#.........#.............................................................................................#...........
|
Reference in New Issue
Block a user