Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
??? Why this works? solution in Clear category for [old] Find Enemy by Sait2000
"use strict";
function findEnemy(you, dir, enemy) {
var myCoord = [you.charCodeAt(1) - 49 + ((you.charCodeAt(0) - 64) >> 1), 0, you.charCodeAt(0) - 65];
var enemyCoord = [enemy.charCodeAt(1) - 49 + ((enemy.charCodeAt(0) - 64) >> 1), 0, enemy.charCodeAt(0) - 65];
var delta = [enemyCoord[0] - myCoord[0], enemyCoord[1] - myCoord[1], enemyCoord[2] - myCoord[2]];
var rot = {N: 0, NW: 1, SW: 2, S: 3, SE: 4, NE: 5}[dir];
for (var i = 0; i < rot; i++) {
delta = [-delta[1], -delta[2], -delta[0]];
}
delta = [0, delta[1] - delta[0], delta[2] - delta[0]];
var res = [];
if (delta[1] > 0 && delta[2] > 0) {
res.push('F', delta[1] + delta[2] - Math.min(delta[1], delta[2]));
} else if (delta[1] < 0 && delta[2] < 0) {
res.push('B', -delta[1] - delta[2] - Math.min(-delta[1], -delta[2]));
} else if (delta[1] > delta[2]) {
res.push('L', delta[1] - delta[2]);
} else {
res.push('R', delta[2] - delta[1]);
}
return res;
}
var assert = require('assert');
if (!global.is_checking) {
assert.deepEqual(findEnemy('G5', 'N', 'G4'), ['F', 1], "N-1");
assert.deepEqual(findEnemy('G5', 'N', 'I4'), ['R', 2], "NE-2");
assert.deepEqual(findEnemy('G5', 'N', 'J6'), ['R', 3], "SE-3");
assert.deepEqual(findEnemy('G5', 'N', 'G9'), ['B', 4], "S-4");
assert.deepEqual(findEnemy('G5', 'N', 'B7'), ['L', 5], "SW-5");
assert.deepEqual(findEnemy('G5', 'N', 'A2'), ['L', 6], "NW-6");
assert.deepEqual(findEnemy('G3', 'NE', 'C5'), ['B', 4], "[watch your six!]");
assert.deepEqual(findEnemy('H3', 'SW', 'E2'), ['R', 3], "right");
assert.deepEqual(findEnemy('A4', 'S', 'M4'), ['L', 12], "true left");
console.log("You are good to go!");
}
March 4, 2017