#!/usr/bin/env node var content = require('fs').readFileSync(process.argv[2],'utf8'); //content = `do()${content}don't()`; //var doregex = /do\(\).+don't\(\)/g var mulregex = /mul\((\d{1,3}),(\d{1,3})\)/g var numregex = /\d+/g //var blocks = content.match(doregex); function content2sum(content) { var muls = content.match(mulregex); var sum=0; for(var mul of muls) { var digits = mul.match(numregex); var values = digits.map(i=>parseInt(i)); //console.log({digits,values}); sum+=values[0]*values[1]; } return sum; } var sum=content.split('do()').map(i=>i.split("don't()")[0]).map(content2sum).reduce((a,b)=>a+b); console.log('Result:',sum);