Files
advent-of-code/2023/day19/index.js
2024-12-21 15:23:55 +01:00

37 lines
995 B
JavaScript

import fs from 'node:fs'
import { json } from 'node:stream/consumers'
function init(filename) {
const data = fs.readFileSync(filename, { encoding: 'utf-8' }, data => data)
const workflow = new Workflow()
let rules = data.split('\n\n')[0].split('\n')
rules.forEach(rule => {
rule.matchAll(/(.*)\{(.*),(\w+)\}/gm)
.forEach(r => {
r[2].split(',').forEach(condition => {
workflow.rules.push({ name: r[1], condition: condition, default: r[3] })
})
})
})
let flows = data.split('\n\n')[1].split('\n')
flows.forEach(flow => {
let newStr = flow.replace(/([a-zA-Z0-9]+)=([a-zA-Z0-9]+)/gm, "\"$1\": \"$2\"")
workflow.flows.push(JSON.parse(newStr))
})
workflow.test()
}
class Workflow {
constructor() {
this.rules = []
this.flows = []
}
test() {
console.log(this.rules)
console.log(this.flows)
}
}
init('example.txt')