blob: 6e72909cc93ea07e87a650661a75d4f811d8d296 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
const data = require('./data')
const splitted = data
.split(/mask = /g)
.filter(d => d !== '\n')
.map(d => d.split(/\n/g))
.map(d => d.map((a, i) => (i > 0 ? a.match(/\d+/g) : a)).filter(a => a))
.map(d => d.map((a, i) => (i > 0 ? a.map((b, i) => i > 0 ? parseInt(b).toString(2).padStart(36, '0') : parseInt(b)) : a)))
let mem = []
splitted.forEach(s => {
const mask = s[0]
const applyMask = (str) => (
str.split('').map((v, i) => (mask[i] !== 'X' ? mask[i] : v)).join('')
)
s.forEach((m, i) => (i > 0 && (mem[m[0]] = parseInt(applyMask(m[1]), 2))))
})
console.log('Answer: ', mem.reduce((a, b) => a + b, 0))
|