/
day10.js
49 lines (46 loc) · 1.43 KB
/
day10.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
let inputData = ""
fetch("data/day10.txt")
.then(res => res.text)
.then(data => inputData = data)
function day10_1() {
let t = Date.now()
let data = inputData.split("\n")
let tot = 0
let values = {")":3,"]":57,"}":1197,">":25137}
for(let i=0; i<data.length; i++) {
let line = data[i]
while(1) {
let line2 = line
line = line.replace(/\(\)|\[\]|\{\}|\<\>/g, "")
if(line == line2) break;
}
let char = line.replace(/\(|\[|\{|\</g, "")
if(char) tot+=values[char.charAt(0)]
}
console.log(tot)
console.log("Time:" + (Date.now()-t) + "ms")
}
function day10_2() {
let t = Date.now()
let inverse = {"(":")","[":"]","{":"}","<":">"}
let values = ["", ")", "]", "}", ">"]
let tot = 0
let data = inputData.split("\n").map(line => {
while(1) {
let line2 = line
line = line.replace(/\(\)|\[\]|\{\}|\<\>/g, "")
if(line == line2) break
}
return (!line.replace(/\(|\[|\{|\</g, "").charAt(0) ?
line.split("").reverse().join("").replace(/\(|\[|\{|\</g, m => inverse[m] )
.split("").reduce((tot,el) => tot*5+values.indexOf(el), 0)
: "")
}).filter(el => { return el != "" }).sort((a,b)=> a-b)
console.log(data[Math.floor(data.length/2)])
console.log("Time:" + (Date.now()-t) + "ms")
})
}
console.log("Day 10, Part 1")
day10_1()
console.log("Day 10, Part 2")
day10_2()