Guest User

Untitled

a guest
Dec 18th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. // data spiral
  2. // 17 16 15 14 13
  3. // 18 5 4 3 12
  4. // 19 6 1 2 11
  5. // 20 7 8 9 10
  6. // 21 22 23---> ...
  7.  
  8. function getStepsToData (target)
  9. {
  10. const directions = [[1, 0], [0, 1], [-1, 0], [0, -1]];
  11. let directionPointer = 0;
  12. let x = 0;
  13. let y = 0;
  14. let stepsToNextCorner = 1;
  15. let stepsTaken = 0;
  16. let cornersTaken = 0;
  17. let currentNumber = 0;
  18. for (let i = 1; i < target; i += 1)
  19. {
  20. x += directions[directionPointer][0];
  21. y += directions[directionPointer][1];
  22. stepsTaken += 1;
  23. if (stepsTaken === stepsToNextCorner)
  24. {
  25. directionPointer = (directionPointer + 1) % directions.length;
  26. stepsTaken = 0;
  27. cornersTaken += 1;
  28. if (cornersTaken % 2 === 0)
  29. {
  30. stepsToNextCorner += 1;
  31. }
  32. }
  33. }
  34. return Math.abs(x) + Math.abs(y);
  35. }
  36.  
  37. const input = 325489;
  38. const output = getStepsToData(325489);
Add Comment
Please, Sign In to add comment