Guest User

Untitled

a guest
Dec 11th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. var target = 289326
  2.  
  3. var oddPowerOfTwo = Math.floor(Math.sqrt(target));
  4.  
  5. if (oddPowerOfTwo % 2 === 0) {
  6. oddPowerOfTwo--;
  7. }
  8.  
  9. console.log('oddPowerOfTwo = ' + oddPowerOfTwo);
  10.  
  11. var verticalClimb = oddPowerOfTwo;
  12. var horizontalClimb = oddPowerOfTwo + 1;
  13. var currentPos = oddPowerOfTwo * oddPowerOfTwo;
  14. var result = moveAround(currentPos, target, horizontalClimb, verticalClimb)
  15.  
  16. console.log('result ' + JSON.stringify(result));
  17.  
  18. function moveAround(currentPos, targetPos, horizontalClimb, verticalClimb) {
  19. var xDelta = 0;
  20. var yDelta = 0;
  21.  
  22. // Move right one.
  23. xDelta++;
  24. currentPos++;
  25.  
  26. //var commands = ['UP', 'LEFT', 'DOWN', 'RIGHT'];
  27.  
  28. if (currentPos === targetPos) {
  29. return { x: xDelta, y: yDelta };
  30. }
  31.  
  32. // Move up verticalClimb times
  33. for (var i = 0; i < verticalClimb; i++) {
  34. currentPos++;
  35. yDelta--;
  36.  
  37. if (currentPos === targetPos) {
  38. return { x: xDelta, y: yDelta };
  39. }
  40. }
  41.  
  42. // Move right horizontalClimb times
  43. for (var i = 0; i < horizontalClimb; i++) {
  44. currentPos++;
  45. xDelta--;
  46.  
  47. if (currentPos === targetPos) {
  48. return { x: xDelta, y: yDelta };
  49. }
  50. }
  51.  
  52. verticalClimb++;
  53.  
  54. // Move down verticalClimb + 1 times
  55. for (var i = 0; i < verticalClimb; i++) {
  56. currentPos++;
  57. yDelta++;
  58.  
  59. if (currentPos === targetPos) {
  60. return { x: xDelta, y: yDelta };
  61. }
  62. }
  63.  
  64. horizontalClimb++;
  65.  
  66. // Move right horizontalClimb times
  67. for (var i = 0; i < horizontalClimb; i++) {
  68. currentPos++;
  69. xDelta++;
  70.  
  71. if (currentPos === targetPos) {
  72. return { x: xDelta, y: yDelta };
  73. }
  74. }
  75.  
  76. throw "Failed to reach target position";
  77. }
  78.  
  79.  
  80.  
  81. //var x = 0;
  82. //var y = 0;
  83.  
  84. //console.log(JSON.stringify(makeGrid(10, 10)));
  85.  
  86. // function printGrid(grid) {
  87. // for (var i = 0; i < grid.length; i++) {
  88. // for (var j = 0; j < grid[i].length; j++) {
  89.  
  90. // }
  91. // }
  92. // }
  93.  
  94. // function makeGrid(w, h) {
  95. // var grid = [];
  96.  
  97. // for (var i = 0; i < w; i++) {
  98. // var row = [];
  99.  
  100. // for (var j = 0; j < h; j++) {
  101. // row.push(0);
  102. // }
  103.  
  104. // grid.push(row);
  105. // }
  106.  
  107. // return grid;
  108. // }
Add Comment
Please, Sign In to add comment