Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var target = 289326
- var oddPowerOfTwo = Math.floor(Math.sqrt(target));
- if (oddPowerOfTwo % 2 === 0) {
- oddPowerOfTwo--;
- }
- console.log('oddPowerOfTwo = ' + oddPowerOfTwo);
- var verticalClimb = oddPowerOfTwo;
- var horizontalClimb = oddPowerOfTwo + 1;
- var currentPos = oddPowerOfTwo * oddPowerOfTwo;
- var result = moveAround(currentPos, target, horizontalClimb, verticalClimb)
- console.log('result ' + JSON.stringify(result));
- function moveAround(currentPos, targetPos, horizontalClimb, verticalClimb) {
- var xDelta = 0;
- var yDelta = 0;
- // Move right one.
- xDelta++;
- currentPos++;
- //var commands = ['UP', 'LEFT', 'DOWN', 'RIGHT'];
- if (currentPos === targetPos) {
- return { x: xDelta, y: yDelta };
- }
- // Move up verticalClimb times
- for (var i = 0; i < verticalClimb; i++) {
- currentPos++;
- yDelta--;
- if (currentPos === targetPos) {
- return { x: xDelta, y: yDelta };
- }
- }
- // Move right horizontalClimb times
- for (var i = 0; i < horizontalClimb; i++) {
- currentPos++;
- xDelta--;
- if (currentPos === targetPos) {
- return { x: xDelta, y: yDelta };
- }
- }
- verticalClimb++;
- // Move down verticalClimb + 1 times
- for (var i = 0; i < verticalClimb; i++) {
- currentPos++;
- yDelta++;
- if (currentPos === targetPos) {
- return { x: xDelta, y: yDelta };
- }
- }
- horizontalClimb++;
- // Move right horizontalClimb times
- for (var i = 0; i < horizontalClimb; i++) {
- currentPos++;
- xDelta++;
- if (currentPos === targetPos) {
- return { x: xDelta, y: yDelta };
- }
- }
- throw "Failed to reach target position";
- }
- //var x = 0;
- //var y = 0;
- //console.log(JSON.stringify(makeGrid(10, 10)));
- // function printGrid(grid) {
- // for (var i = 0; i < grid.length; i++) {
- // for (var j = 0; j < grid[i].length; j++) {
- // }
- // }
- // }
- // function makeGrid(w, h) {
- // var grid = [];
- // for (var i = 0; i < w; i++) {
- // var row = [];
- // for (var j = 0; j < h; j++) {
- // row.push(0);
- // }
- // grid.push(row);
- // }
- // return grid;
- // }
Add Comment
Please, Sign In to add comment