Skip to content

Instantly share code, notes, and snippets.

@humancatfood
Last active December 15, 2017 20:23
Show Gist options
  • Save humancatfood/759d759cd5b77d228d45fae3707c6e17 to your computer and use it in GitHub Desktop.
Save humancatfood/759d759cd5b77d228d45fae3707c6e17 to your computer and use it in GitHub Desktop.
Advent Of Code 2017 - 03(1) http://adventofcode.com/2017/day/3
// data spiral
// 17 16 15 14 13
// 18 5 4 3 12
// 19 6 1 2 11
// 20 7 8 9 10
// 21 22 23---> ...
function getStepsToData (target)
{
const directions = [[1, 0], [0, 1], [-1, 0], [0, -1]];
let directionPointer = 0;
let x = 0;
let y = 0;
let stepsToNextCorner = 1;
let stepsTaken = 0;
let cornersTaken = 0;
let currentNumber = 0;
for (let i = 1; i < target; i += 1)
{
x += directions[directionPointer][0];
y += directions[directionPointer][1];
stepsTaken += 1;
if (stepsTaken === stepsToNextCorner)
{
directionPointer = (directionPointer + 1) % directions.length;
stepsTaken = 0;
cornersTaken += 1;
if (cornersTaken % 2 === 0)
{
stepsToNextCorner += 1;
}
}
}
return Math.abs(x) + Math.abs(y);
}
const input = 325489;
const output = getStepsToData(325489);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment