// DAY 3 (function(rows) { let claims = Array.from(Array(1000).keys()).map(() => Array(1000).fill(0)); for (let row of rows) { let [ , , loc, size ] = row; loc = loc.split(',').map(Number); size = size.split('x').map(Number); for (let i = 0; i < size[0]; i++) { let claimRow = claims[loc[0] + i]; for (let j = 0; j < size[1]; j++) { claimRow[loc[1] + j]++; } } } let count = claims.map(claimRow => claimRow.filter(x => x > 1).length).reduce((a, b) => a + b); console.log(count); for (let row of rows) { let [ id, , loc, size ] = row; loc = loc.split(',').map(Number); size = size.split('x').map(Number); let valid = true; for (let i = 0; i < size[0] && valid; i++) { let claimRow = claims[loc[0] + i]; valid &= claimRow.slice(loc[1], loc[1] + size[1]).every(x => x == 1); } if (valid) { console.log(id); } } })(document.body.innerText.trim().split('\n').map(row => row.split(/:?\s+/))); // DAY 4 //TODO // DAY 5 (function(all_units) { let best = 1e99; for (let c = 65; c <= 90; c++) { let char = String.fromCharCode(c); let units = all_units.filter(x => x.toUpperCase() != char); for (let i = 1; i < units.length; i++) { while (0 < i && i < units.length && units[i] != units[i - 1] && units[i].toUpperCase() == units[i - 1].toUpperCase()) { units.splice(i - 1, 2); i--; } } if (units.length < best) best = units.length; console.log(char, units.length, best); } console.log(best); })(Array.from(document.body.innerText.trim()));