#!/usr/bin/env node var fs = require('fs'); var games = fs.readFileSync('input.txt','utf8').split('\n').filter(i=>i).map(i=>i.split(':').pop()).map(i=>i.split(';')).map(i=>i.map(i=>i.split(','))).map(i=>i.map(i=>i.map(i=>i.split(' ').filter(i=>i)))); var maxes = { red:12, green:13, blue:14 }; //var sum=0; //for(var gameid=1;gameid<=games.length;++gameid) { // var game = games[gameid-1]; // var bad = game.some(sample=>sample.some(([count,color])=>count>maxes[color])); // if(!bad) sum+=gameid; //} var allpower = games.reduce((acc,game)=>{ var base={red:0,blue:0,green:0}; game.forEach(sample=>sample.forEach(([count,color])=>base[color]=Math.max(base[color],count))); return acc+base.red*base.blue*base.green; },0); console.log('Result:',allpower);