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;
// }