summaryrefslogtreecommitdiffstats
path: root/day18/day18-1.js
blob: 992da2774dc55d628e8cafdf9f2ee1a6d07cf9f7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const data = require('./data')
const lines = data.split(/\n/g).filter(Boolean)

const ev = (str) => {
  let spl = str.split(' ')
  while(spl.length > 1) {
    spl = [eval(spl.slice(0, 3).join(''))].concat(spl.slice(3))
  }
  return spl[0]
}

const evPar = (str) => {
  while(/\(/.test(str)) {
    str = str.replace(/\(([^()]+)\)/g, (match, par) => ev(par))
  }
  return ev(str)
}

let sum = 0
lines.forEach(l => sum += evPar(l))
console.log('Answer: ', sum)