You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeFights chessBoardCellColor挑战代码调试求助:判断棋盘格是否同色

搞定CodeFights的chessBoardCellColor挑战

嘿,看你的代码结构是对的——通过比较两个格子是否同为白色来判断颜色是否一致,问题肯定出在没写完的isWhite方法上!我来帮你理清楚逻辑,补全代码。

首先得明确国际象棋棋盘的颜色规律:把每个格子的字母(A-H)转成对应的数字(A=1,B=2…H=8),和格子的数字部分相加。如果这个和是偶数,格子是白色;如果是奇数,就是黑色。(本质上就是字母和数字的奇偶性相同则为白,不同则为黑,两种说法是等价的)

现在补全你的代码,直接能用:

boolean chessBoardCellColor(String cell1, String cell2) { 
    return isWhite(cell1) == isWhite(cell2); 
}

boolean isWhite(String cell){ 
    // 把字母转成1-8的数值:A→1,B→2...H→8
    int letterValue = cell.charAt(0) - 'A' + 1;
    // 把字符数字转成整数:'1'→1,'2'→2...'8'→8
    int numberValue = cell.charAt(1) - '0';
    // 判断和的奇偶性:偶数返回true(白色),奇数返回false(黑色)
    return (letterValue + numberValue) % 2 == 0;
}

验证几个测试用例:

  • 输入cell1="A1", cell2="C3":A1的和是1+1=2(偶,白),C3的和是3+3=6(偶,白)→ 返回true,正确。
  • 输入cell1="A1", cell2="H3":H3的和是8+3=11(奇,黑)→ 返回false,正确。

另外,也可以换一种写法判断,效果完全一样:

boolean isWhite(String cell){ 
    int letterValue = cell.charAt(0) - 'A' + 1;
    int numberValue = cell.charAt(1) - '0';
    // 直接判断字母和数字的奇偶性是否相同
    return (letterValue % 2) == (numberValue % 2);
}

你的核心思路没问题,就是差了isWhite的具体实现,补完之后应该就能顺利通过所有测试用例啦!

内容的提问来源于stack exchange,提问作者Chklt Labs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:51:35