Chess Board Cell Color
В стандартной шахмантой доске мы имеем позиции x, y: Нужно понять эти две фигуры находятся в полях того же цвета или нет?
Например предположим что даны позиции А1 и C3,

в этом случае как мы можем заметить, фигуры находятся в полях с одиноковим цветом.
Надо написать функцию которая получает массив [x, y], возврощает true если они находятся в полях с одиноковим цветом и в противоположном случае false.
function boardColor(cell1, cell2) {
if ((cell1.charAt(0) + cell1.charAt(1)) % 2 == 0 &&
(cell2.charAt(0) + cell2.charAt(1)) % 2 == 0 ||
(cell1.charAt(0) + cell1.charAt(1)) % 2 != 0 &&
(cell2.charAt(0) + cell2.charAt(1)) % 2 != 0) {
return true;
}
return false;
}
Код коректно работает для того случия когда аргументы функции отдельные строки и например console.log(boardColor("A1", "A3")); выводит true.
Поможете написать функцию для случия когда функция получает в место отдельных строк массив. И чтобы console.log(boardColor(["A1", "A3"])); выводил true.
Ответы (2 шт):
Как вариант - можно сделать так:
function boardColor(arr) {
function f(bukva1) {
if ((bukva1 == "A" || bukva1=="C" ||bukva1=="E"||bukva1=="G")) {
return "A";
} else {
return 'B'
}
}
var bukva1 = f(arr[0].charAt(0));
var bukva2 = f(arr[1].charAt(0));
var cifra1 = arr[0].charAt(1)% 2;
var cifra2 = arr[1].charAt(1)% 2;
if ((bukva1 == bukva2) && ((cifra1 == cifra2)) || (bukva1 != bukva2) && ((cifra1 != cifra2))){
return true
}
return false;
}
console.log(boardColor(["A1", "D3"]));
function sameColor(p1, p2) {
return !((p1.charCodeAt(0) - p2.charCodeAt(0) + p1.charCodeAt(1) - p2.charCodeAt(1)) % 2);
}
console.log(sameColor("A1", "B2"));
console.log(sameColor("A1", "D3"));