1812. 判断国际象棋棋盘中一个格子的颜色

289 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第16天,点击查看活动详情

题目 leetcode.cn/

  • 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。

image.png

  • 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。
  • 给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。

示例

  • 输入: coordinates = "a1";输出: false

    • 解释: 如上图棋盘所示,"a1" 坐标的格子是黑色的,所以返回 false 。
  • 输入: coordinates = "h3";输出: true

    • 解释: 如上图棋盘所示,"h3" 坐标的格子是白色的,所以返回 true 。
  • 输入: coordinates = "c7";输出: false

提示

  • coordinates.length == 2
  • 'a' <= coordinates[0] <= 'h'
  • '1' <= coordinates[1] <= '8'

代码

function squareIsWhite(coordinates: string): boolean {
    let black = ['a', 'c', 'e', 'g'];
    if(black.includes(coordinates[0])){
        if(Number(coordinates[1]) % 2){
            return false;
        }else{
            return true;
        }
    }else{
        if(Number(coordinates[1]) % 2){
            return true;
        }else{
            return false;
        }
    }
};

思路

  • 国际象棋棋盘是一个8*8的矩阵,只不过他的横轴不是以数字1~8命名的,而是以字母a~h来命名的。

  • 首先以横轴来观察一下,其实不难发现,横轴的奇数轴(也就是'a','c','e','g')都是以黑色格子开始的,而偶数轴(也就是'b','d','f','h')都是以白色格子开始的。

  • 然后观察一下竖轴

    • 如果横轴是奇数轴,那么竖轴的奇数上对应的是黑色格子,竖轴偶数上对应是白色格子
    • 如果横轴是偶数轴,那么竖轴的奇数上对应的是白色格子,竖轴偶数上对应的是黑色格子,刚好和上面反过来
  • 所以首先先判断给到的坐标是横轴的奇数轴还是偶数轴

    • 如果是奇数轴,再判断竖轴的坐标是奇数还是偶数,奇数就是黑色格子,返回false,如果是偶数,那么就是白色格子,返回true
    • 如果是偶数轴,判断竖轴的坐标是奇数还是偶数,奇数就是白色格子,返回true,如果是偶数,那么是黑色格子,返回false