const file = Bun.file("input.txt"); const input = await file.text(); const lines = input.trim().split("\n"); class Game { id: number; rounds: Round[]; constructor(input:string) { const [name, res] = input.split(":"); this.id = Number(name.split(" ")[1]); this.rounds = res.split(";").map(round => round.split(",").reduce((p: Round, s) => { let [amt, name] = s.trim().split(" "); p[name] = Number(amt); return p; }, {green: 0, red: 0, blue: 0}) ); } minimum(): Round { return this.rounds.reduce((p, round) => {return{ red: Math.max(round.red, p.red), green: Math.max(round.green, p.green), blue: Math.max(round.blue, p.blue) }}, {green: 0, red: 0, blue: 0}) } power(): number { const min = this.minimum(); return min.green * min.red * min.blue; } } interface Round { red: number, green: number, blue: number, } const games: Game[] = lines.map(line => new Game(line)); console.log(games.reduce((total,game)=>total+game.power(),0));