const isValidTriangle = (a, b, c) => (a + b > c) && (a + c > b) && (b + c > a); const parseNumsInLine = line => line.trim().split(/\s+/).map(str => parseInt(str, 10)); const solve = input => input.split('\n').filter(line => isValidTriangle(...parseNumsInLine(line))).length; const solve2 = input => { let data = input.split('\n').map(parseNumsInLine); let valid = 0; for (let i = 0; i+2 < data.length; i+=3) { for (let j = 0; j < 3; j++) { let a = data[i][j], b = data[i+1][j], c = data[i+2][j]; if (isValidTriangle(a, b, c)) { valid++; } } } return valid; }; console.log(`Valid triangle: ${solve(input)}`); console.log(`Valid vertical triangle: ${solve2(input)}`);