.
This commit is contained in:
30
2021/10.js
Normal file
30
2021/10.js
Normal file
@@ -0,0 +1,30 @@
|
||||
const opens = ["(", "[", "{", "<"]
|
||||
const closes = [")", "]", "}", ">"]
|
||||
const scores1 = { ")": 3, "]": 57, "}": 1197, ">": 25137 }
|
||||
const scores2 = { ")": 1, "]": 2, "}": 3, ">": 4 }
|
||||
|
||||
function parse(str) {
|
||||
let stack = []
|
||||
|
||||
for (let i = 0; i < str.length; i++) {
|
||||
let char = str[i]
|
||||
|
||||
if (opens.includes(char)) {
|
||||
stack.push(closes[opens.indexOf(char)])
|
||||
} else if (char != stack.pop()) {
|
||||
return scores1[char]
|
||||
}
|
||||
}
|
||||
|
||||
return stack.reverse()
|
||||
}
|
||||
|
||||
function day10(input, part2) {
|
||||
let results = input.split("\n").map(parse)
|
||||
|
||||
if (!part2) {
|
||||
return results.filter((e) => !Array.isArray(e)).sum()
|
||||
} else {
|
||||
return results.filter((e) => Array.isArray(e)).map((e) => e.reduce((a, b) => a * 5 + scores2[b], 0)).medianNumeric()
|
||||
}
|
||||
}
|
||||
15
2021/9.js
Normal file
15
2021/9.js
Normal file
@@ -0,0 +1,15 @@
|
||||
function day9(input, part2) {
|
||||
let grid = Grid.fromStr(input).num()
|
||||
|
||||
let lows = grid.findAllIndices((e, pt, g) => g.getAdjNeighbors(pt).every((nb) => e < g.get(nb)))
|
||||
|
||||
if (!part2) {
|
||||
return lows.map((e) => grid.get(e) + 1).sum()
|
||||
}
|
||||
|
||||
let sizes = lows.map((low) => grid.bfs(low, (e, pt, g) => {
|
||||
return e == 9 || g.get(pt.path.last) < e ? Grid.BFS_STOP : Grid.BFS_CONTINUE
|
||||
}).filter((e) => e.result == Grid.BFS_CONTINUE).length).sort((a, b) => b - a)
|
||||
|
||||
return sizes[0] * sizes[1] * sizes[2]
|
||||
}
|
||||
Reference in New Issue
Block a user