comments and starting part 6, remove redundant trims
This commit is contained in:
parent
4462c12f77
commit
7211835f76
6 changed files with 227 additions and 25 deletions
130
inputs/06.txt
Normal file
130
inputs/06.txt
Normal file
|
@ -0,0 +1,130 @@
|
|||
....................................#............##........#..#.#..#.........#.............#..............#.......................
|
||||
..................##.........#....................##.....#.......#.......................................#..........#.............
|
||||
.......#...........#.........................................................................................#.#.#................
|
||||
.#..........#...............................#....................................#...#.....#...#.#....................#....#......
|
||||
..........#..........................................#............#.........................#..#......#....#..#..........#........
|
||||
..........................................................................#..........................................#.........#..
|
||||
.....#....#...........................#......#..........#........................#..........#.............#...........#..........#
|
||||
................#.......................#...........#.............................#.....#..#..................................#...
|
||||
........................................................................#..#.......................................#..............
|
||||
........#......................#.....#.......#.............#....#.........#....#........................#.............#...........
|
||||
.............#....#.......#........#..#.......##................#.......................................#.........................
|
||||
......#..............#.#...#...............#.........................#.....#............#..#.........#...............#............
|
||||
..................#...#..............................................#................#.......#................#..................
|
||||
....#...#.............#........................#....................................#......#................#......#..............
|
||||
..........................................................................................#...#.........##........................
|
||||
.............#.#...............#.....#.#......#.............................#.......................................#.....#.......
|
||||
.................................................#................................................................#...............
|
||||
........#.#......................#......#........#.......................................................#........................
|
||||
....#........#......#..................................................................................#............#.............
|
||||
...........#.........#.......#...............#........................#........................................................#.#
|
||||
........................##..................#........................#..........................................#.............#...
|
||||
..........#........#........#.........#..................#.....#..............................#..#..............#.................
|
||||
#..............................................................#..#............................#..........#.......................
|
||||
.................................................................#...............#...#.#.........#.#.................#...........#
|
||||
.....................................#.....................#.....................#........#....#....#.............................
|
||||
#..#................#.....#....................................##............#...............#...#..........#.....................
|
||||
.................#.....#.....................#................#...........#...................................................#...
|
||||
..................................#........#.................#....#..................#.......................................#....
|
||||
..#....#............................#................................................##.........................................#.
|
||||
...............#......................................................#......##...................................................
|
||||
.........................#..................................#................##.#..#.#.................#.......#..................
|
||||
.................#......................................#...#.....................................................................
|
||||
.........#..........................................................................................#.......#.....................
|
||||
....##..#.........#..............#..#............#............#...................................#...............................
|
||||
......#.......................................#................................................................#..................
|
||||
....#..................#............................#................................................................#............
|
||||
...............................##.#..............#....#............#.........................................#.....#..............
|
||||
........#........#....#.................................................................#.....#...................#...............
|
||||
#...........#..#.........................................#..................................................#..##.......#.....#..#
|
||||
................#......#...........##..........................................................#....#.............................
|
||||
..........#..........#.............................................................#..............#.................#..........#..
|
||||
#.................#....................................................................................#..#..............#........
|
||||
.....#..............#.........................#.....#...........#......................#..........................................
|
||||
.....##.....................#...............................................................#.....................................
|
||||
...................#.................................................................................#.....................#..#...
|
||||
...............................................^......................#...........................#...............................
|
||||
.......#...............#.........#.........#......#.......................................................................#.......
|
||||
........#.........#..#..##.................................#.....#..............#...........#..#........#.........................
|
||||
..............................................................................#......#.#...............#..#..#.....#....#.........
|
||||
............#...#.......##............#....#...........................................................................#..........
|
||||
..................................##........#.....##.......#......................................................................
|
||||
.......................#...........................................#..................................#...#.........#.............
|
||||
............#......................................................#....#..........#...................#........................#.
|
||||
....................................................#......................#..........................#....#......................
|
||||
..................#.##....................................#..................................#.................#....#...#.........
|
||||
........#.....................................................................................#...#...............................
|
||||
....................................................#..........................................#........#..#.#.................#..
|
||||
....#...........#..#......#.........................#.....................#............................#.....#.#..............#...
|
||||
.............................#.......#..........#..................................................................#....#.....#...
|
||||
.....#.#................#...................#...............................................#.....................................
|
||||
....#........................................#......#.............................#...............................................
|
||||
.......#..........#........................#.....................................#..............#......#...##.....................
|
||||
.....#..#.............................##........................................................#.....#..............#.#..........
|
||||
...........................................#......#......................................#..............#.........................
|
||||
...................#.........#....#................#.....#.........#....................#............#..#........#...............#
|
||||
.....#.....................#......................................................................#...............................
|
||||
...............#.......................................#...#.................#..............#.....................................
|
||||
.........................#........................................................#...............................................
|
||||
..................................#..........................................#...........#.....................#..................
|
||||
.......................#.#............#.........................................#.................................................
|
||||
..........................#...................#......................#......................................#.....................
|
||||
.........#.........................#..............................................................#...............................
|
||||
..#..............................#...............#..................................###..........................................#
|
||||
.............................................#...............#.....#........................................................#..#..
|
||||
................#..........................#.......................................#........................................##.#..
|
||||
......##........#.....................................#............#..................#...............................#...........
|
||||
..#..................#......................................#....#.......................#................................#.......
|
||||
........................#...............#....#...#..........................................................................#.....
|
||||
.............#.#..........#...#....#.................##...........................................................................
|
||||
......#....#.......................................................................#.....................................#..#.....
|
||||
.............#.......#............#...#..........#...............#..................................................#..........#..
|
||||
..........................#...........................................................#.............#.............................
|
||||
#......................................#........#......#..........................................................................
|
||||
................#..........................................................#......................................................
|
||||
..................#................................................................#..........................#..........#.......#
|
||||
.......#.....#............##..............................................................#....................#.....#......#.....
|
||||
...........................................#..........#.#............................................#............................
|
||||
.......#.......................#..........................................................#.......................................
|
||||
.................#........................#.........#...#............................................................#............
|
||||
................................................#...................#.........#...........#...........................#...........
|
||||
..#..............#......#..............................##............#..................#.......#.................................
|
||||
.#.#.........................................#......##.....##........#.............#..#..................##....#.#...#............
|
||||
..#.....................#.......#....#...............#...............#...................................................#........
|
||||
.#...#...............#..................................................................#..........#....#.................#.#.....
|
||||
.#...................#...................................................................#.............#.......................#..
|
||||
.....................................#.....#..#...........#...........#..........#....................................#...........
|
||||
.................................................................................#..#.............##....#...#............#........
|
||||
......................#....#........#......#...................#.............................................#....................
|
||||
.......................................#..........................#............................#.#..........................#.....
|
||||
.#........................##....................................#.......#...........................#..#.......................#..
|
||||
.........#.........#................................................................#.................#........#..................
|
||||
..............#.......#.....#....................#........##.............#....#...............#.............#...........#...#.....
|
||||
.................................................................#..#........#...#...#.........#..................................
|
||||
................#......##..........#..........#.........#....#............................................#.#.............#.......
|
||||
...#...................................................................#.......................................#..................
|
||||
.......#..................#............#.....#................#..#....##.......#...............#..................................
|
||||
............#............##....#...................#..........................#......................................#...#...#....
|
||||
......#.....#..........##...............#......#...............................#......#...........................................
|
||||
.................#.......#.......................................................#............#........#...#.......#...........#..
|
||||
......................##........#...................#.....#....................#...#....#........................#................
|
||||
.................#.....#.......#...........#.......#....................##....................................................#.#.
|
||||
......#....................................#.........................#..................................#................#.#..#...
|
||||
..............#...........................................................................................................#.......
|
||||
#.#......#.................................................................................#...........#...#......................
|
||||
...........................................#.#........#....#............#.....................#...................................
|
||||
...#.............#.....................................................................................................#..........
|
||||
..............#..........#............#...#..............#........................................##........#.....#.......#.......
|
||||
..................##........#.............................................#.........................................###...........
|
||||
..........#......................#............................................................................#....#..............
|
||||
.............#........#.............#.#...............#.....#..........#.....#....#...#...........#....#..........................
|
||||
........#...#.......#........................#.............#..........#........#.......................#..........................
|
||||
..................................................................#...............#......#...#.......#............................
|
||||
.............#..........#...................##.............#.........#..................#.........................................
|
||||
.#.....#..#...#...............#.#.............#...........#.......................................................................
|
||||
..............#..#.........................#..............#..#..............#.......................#.#...........................
|
||||
............#.......................#....#................#..........#.......................#.....................#..............
|
||||
#.................#............................#...##....#.....#.....................................................#............
|
||||
.............................#........................#..................................................#....#...................
|
||||
.##...........................................#.....#....#....#.......................#...#.....#...#............#................
|
||||
........#.............#.........#..............#........................#.....................#...#...............................
|
|
@ -8,7 +8,6 @@ class DayOne implements Solvable {
|
|||
|
||||
public part1(): DayOne {
|
||||
const vals = this.input
|
||||
.trim()
|
||||
.split("\n")
|
||||
.map(line => line.split(' ').map(col => Number.parseInt(col)))
|
||||
const left = vals.map(line => line[0]).sort()
|
||||
|
|
|
@ -10,7 +10,7 @@ class DayFour implements Solvable {
|
|||
|
||||
const transpose = (m: string[][]) => m[0].map((_, i) => m.map(x => x[i]))
|
||||
|
||||
const matrix = this.input.trim().split('\n').map(line => line.split(''))
|
||||
const matrix = this.input.split('\n').map(line => line.split(''))
|
||||
|
||||
const countOccHorizontal = (mat: string[][]) => mat
|
||||
.map(line => line.join('')
|
||||
|
|
|
@ -5,10 +5,11 @@ import type { Solvable } from "../solvable.ts";
|
|||
import { readInput } from "../utils.ts";
|
||||
|
||||
class DayFive implements Solvable {
|
||||
input: string[] = readInput('05').trim().split('\n\n')
|
||||
input: string[] = readInput('05').split('\n\n')
|
||||
rules: number[][] = this.input[0].split('\n').map((input: string) => input.split('|').map(rule => Number.parseInt(rule)))
|
||||
updates: number[][] = this.input[1].split('\n').map(line => line.split(',').map(update => Number.parseInt(update)))
|
||||
|
||||
// generated in part 1 for part 2
|
||||
invalidUpdates: number[][] = []
|
||||
|
||||
followsRules = (update: number[]): [boolean, number, number] => {
|
||||
|
@ -32,6 +33,7 @@ class DayFive implements Solvable {
|
|||
if (this.followsRules(update)[0]) {
|
||||
validUpdates.push(update)
|
||||
} else {
|
||||
// store these for part 2
|
||||
this.invalidUpdates.push(update)
|
||||
}
|
||||
})
|
||||
|
|
71
solutions/06.ts
Normal file
71
solutions/06.ts
Normal file
|
@ -0,0 +1,71 @@
|
|||
|
||||
import { solvables } from "../main.ts";
|
||||
|
||||
import type { Solvable } from "../solvable.ts";
|
||||
import { readInput } from "../utils.ts";
|
||||
|
||||
type Direction = "up" | "down" | "left" | "right"
|
||||
|
||||
class DaySix implements Solvable {
|
||||
input: string[][] = readInput('06').split('\n').map(col => col.split(''))
|
||||
map = this.input
|
||||
visitedLoc = new Map()
|
||||
|
||||
// assigned in part1
|
||||
startingPosition: [number, number] = [0, 0]
|
||||
|
||||
takeStep = (x: number, y: number, direction: Direction): [number, number] => {
|
||||
switch (direction) {
|
||||
case 'up':
|
||||
return [x, y + 1]
|
||||
case 'down':
|
||||
return [x, y - 1]
|
||||
case 'right':
|
||||
return [x + 1, y]
|
||||
case 'left':
|
||||
return [x + 1, y]
|
||||
}
|
||||
}
|
||||
|
||||
walk = (x: number, y: number, direction: Direction): [boolean, number, number, Direction] => {
|
||||
const nextStepInBounds = {
|
||||
up: y > 1,
|
||||
down: y < this.map.length,
|
||||
left: x > 1,
|
||||
right: x < this.map.length,
|
||||
}
|
||||
|
||||
if (!nextStepInBounds[direction]) {
|
||||
return [true, x, y, direction]
|
||||
} else {
|
||||
// TODO check for obstacles
|
||||
const [newX, newY] = this.takeStep(x, y, direction)
|
||||
return [false, newX, newY, direction]
|
||||
}
|
||||
}
|
||||
|
||||
public part1(): Solvable {
|
||||
// find starting position
|
||||
this.input.forEach((line, y) => line.forEach((col, x) => { if (col === '^') this.startingPosition = [y, x] }))
|
||||
let [x, y] = [this.startingPosition[0], this.startingPosition[1]]
|
||||
let direction: Direction = 'up'
|
||||
let outOfBounds = false
|
||||
|
||||
while (!outOfBounds) {
|
||||
[outOfBounds, x, y, direction] = this.walk(x, y, direction)
|
||||
}
|
||||
|
||||
|
||||
|
||||
console.log()
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
public part2(): Solvable {
|
||||
console.log()
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
solvables.push(new DaySix())
|
2
utils.ts
2
utils.ts
|
@ -1,5 +1,5 @@
|
|||
function readInput(day: string): string {
|
||||
return Deno.readTextFileSync('./inputs/' + day + '.txt')
|
||||
return Deno.readTextFileSync('./inputs/' + day + '.txt').trim()
|
||||
}
|
||||
|
||||
export { readInput };
|
||||
|
|
Loading…
Reference in a new issue