在一个网站上有任务,您可以在那里解决它们,然后看看其他人如何解决它。一个解决方案非常小,我不明白。
任务:给定标准棋盘上的两个单元格,确定它们是否具有相同的颜色。
对于cell1 = "A1"
和cell2 = "C3"
,输出应为
chessBoardCellColor(cell1, cell2) = true
。
B = s => (Buffer(s)[0] - s[1])%2
chessBoardCellColor = (a,b) => B(a) == B(b)
ChessBoardCellColor
获取调用函数的预定义名称,因此返回此函数是答案
答案 0 :(得分:1)
通过使用缓冲区,您正在创建一个矩阵,每个单元格都有一个值,并且对它执行%运算时,它旁边的单元格必须具有不同的结果。
如果第一个单元格%2结果为1,则其旁边的2个单元格的结果为0,因为缓冲区的更改在字母中高1或在数字中高1。
答案 1 :(得分:0)
缓冲区函数创建字符串的二进制表示。
不推荐使用
Buffer()
,节点文档建议使用 而是Buffer.from
例如
Buffer('A1') = <Buffer 41 31>
Buffer('A2') = <Buffer 41 32>
转换为缓冲区的char(A
)与数字('A2'[1] = 2
)之间的差异为63
> Buffer.from('A1');
<Buffer 41 31>
> Buffer.from('A1')[0]; // this get us charCodeAt code
65
例如来自缓冲区和charCodeAt函数的B2代码
> 'B2'.charCodeAt(0);
66
> Buffer.from('B2')[0];
66
以'A2'作为输入箭头功能B将返回63 % 2 = 1
>Buffer.from('A2')[0] -'A2'[1];
63
以'A1'作为输入箭头功能B将返回64 % 2 = 0
> Buffer.from('A1')[0] -'A1'[1];
64
这些是不平等的,所以答案是false