Skip to content

Instantly share code, notes, and snippets.

@petermekhaeil
Last active December 6, 2020 03:07
Show Gist options
  • Save petermekhaeil/920cb653956e361d18f8b040b3413d84 to your computer and use it in GitHub Desktop.
Save petermekhaeil/920cb653956e361d18f8b040b3413d84 to your computer and use it in GitHub Desktop.
Advent Of Code 2020

Advent Of Code 2020

Behold the wraith of my JS hacks.

var inputs = document.body.innerText.split(/\s+/).map((i) => parseInt(i, 10));
// loopy loopy loop
for (var i = 0; i < inputs.length; i++) {
for (var x = 0; x < inputs.length; x++) {
for (var y = 0; y < inputs.length; y++) {
if (inputs[x] + inputs[i] + inputs[y] === 2020) {
console.log(inputs[x] * inputs[i] * inputs[y]);
}
}
}
}
// loopy loop
for (var i = 0; i < inputs.length; i++) {
for (var x = 0; x < inputs.length; x++) {
if (inputs[x] + inputs[i] === 2020) {
console.log(inputs[x] * inputs[i]);
}
}
}
var inputs = document.body.innerText.split(/\r?\n/);
var valid = 0;
for (var i = 0; i < inputs.length; i++) {
// can you do the splits like I can?
var splits = inputs[i].split(/[\s:]/);
var range = splits[0].split("-");
var rangeMin = range[0];
var rangeMax = range[1];
var char = splits[1];
var pass = splits[3];
if (!pass) {
continue;
}
var count = (pass.match(new RegExp(char, "g")) || []).length;
if (count >= rangeMin && count <= rangeMax) {
valid++;
}
}
valid = 0;
for (var i = 0; i < inputs.length; i++) {
// dang! more splits!
var splits = inputs[i].split(/[\s:]/);
var range = splits[0].split("-");
var rangeMin = range[0] - 1;
var rangeMax = range[1] - 1;
var char = splits[1];
var pass = splits[3];
if (!pass) {
continue;
}
if (pass[rangeMin] === char && pass[rangeMax] !== char) {
valid++;
} else if (pass[rangeMin] !== char && pass[rangeMax] === char) {
valid++;
}
}
var input = document.body.innerText
.split(/\r?\n/)
// random large number because why not
.map((input) => input.repeat(400));
var slopeX = 0;
var slopeY = 0;
var count = 0;
// [3, 1] Stage 1 toboggan
for (var row = 0; row < input.length; row++) {
slopeX = slopeX + 3;
slopeY = slopeY + 1;
if (!input[slopeY][slopeX]) {
console.log("[3, 1] END. Total count:", count);
break;
}
if (input[slopeY][slopeX] === "#") {
count++;
}
}
slopeX = 0;
slopeY = 0;
count = 0;
// [1, 1] Stage 2 toboggan - dang picking up speed!
for (var row = 0; row < input.length; row++) {
slopeX = slopeX + 1;
slopeY = slopeY + 1;
if (!input[slopeY][slopeX]) {
console.log("[1, 1] END. Total count:", count);
break;
}
if (input[slopeY][slopeX] === "#") {
count++;
}
}
slopeX = 0;
slopeY = 0;
count = 0;
// [5, 1] Stage 3 toboggan - whoa slow down!
for (var row = 0; row < input.length; row++) {
slopeX = slopeX + 5;
slopeY = slopeY + 1;
if (!input[slopeY][slopeX]) {
console.log("[5, 1] END. Total count:", count);
break;
}
if (input[slopeY][slopeX] === "#") {
count++;
}
}
slopeX = 0;
slopeY = 0;
count = 0;
// [7, 1] Stage 4 toboggan - you're going to kill us!
for (var row = 0; row < input.length; row++) {
slopeX = slopeX + 7;
slopeY = slopeY + 1;
if (!input[slopeY][slopeX]) {
console.log("[7, 1] END. Total count:", count);
break;
}
if (input[slopeY][slopeX] === "#") {
count++;
}
}
slopeX = 0;
slopeY = 0;
count = 0;
// [1, 2] Stage 5 toboggan - red bull gives you wings!
for (var row = 0; row < input.length; row++) {
slopeX = slopeX + 1;
slopeY = slopeY + 2;
if (!input[slopeY]) {
console.log("[1, 2] END. Total count:", count);
break;
}
if (input[slopeY][slopeX] === "#") {
count++;
}
}
@tomzaku
Copy link

tomzaku commented Dec 4, 2020

Cool man, love those ideas (solve the problem on the browser) and comment code lines as well

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment