Behold the wraith of my JS hacks.
Last active
December 6, 2020 03:07
-
-
Save petermekhaeil/920cb653956e361d18f8b040b3413d84 to your computer and use it in GitHub Desktop.
Advent Of Code 2020
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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]); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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++; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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++; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Cool man, love those ideas (solve the problem on the browser) and comment code lines as well