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 шт):

Автор решения: Denis640Kb

Как вариант - можно сделать так:

    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"]));

→ Ссылка
Автор решения: Igor

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"));

→ Ссылка