Skip to content

Instantly share code, notes, and snippets.

@MingweiSamuel
Last active December 6, 2018 02:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MingweiSamuel/8666bb2832f83edcbb9ea55a0d395ee6 to your computer and use it in GitHub Desktop.
Save MingweiSamuel/8666bb2832f83edcbb9ea55a0d395ee6 to your computer and use it in GitHub Desktop.
// 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()));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment