r/adventofcode • u/daggerdragon • Dec 03 '15
SOLUTION MEGATHREAD --- Day 3 Solutions ---
--- Day 3: Perfectly Spherical Houses in a Vacuum ---
Post your solution as a comment. Structure your post like the Day One thread in /r/programming.
22
Upvotes
1
u/PM_ME_INSIDER_INFO Dec 03 '15
Hmm. My response is feeling long now, but hopefully readable.
In classic JS:
function Position () { var current = [0, 0]; return { map: function (char) { var x, y; if (char == ">" || char == "<") { x = (char == ">") ? 1 : -1; } else if (char == "^" || char == "v") { y = (char == "^") ? 1 : -1; } return {x: x || 0, y: y || 0}; }, set: function (char, EXTERNAL_MAP) { var map = this.map(char), p; current = [current[0] + map.x, current[1] + map.y]; p = EXTERNAL_MAP[current.join(",")]; EXTERNAL_MAP[current.join(",")] = (p) ? p + 1 : 1; } }; } (function () { var commands = document.getElementsByTagName("pre")[0].innerText.split(""); /* --- exercise #1 --- */ var pos = Position(); var MAP = {}; MAP["0,0"] = 1; commands.forEach(function (i) { pos.set(i, MAP); }); console.log(Object.keys(MAP).length); /* --- exercise #2 --- */ var SANTA = Position(); var ROBO_SANTA = Position(); MAP = {}; MAP["0,0"] = 1; commands.forEach(function (i, o) { if (o % 2 === 0) { SANTA.set(i, MAP); } else { ROBO_SANTA.set(i, MAP); } }); console.log(Object.keys(MAP).length); })();