这个代码如何工作,Buffer()理解

时间:2017-02-16 08:08:17

标签: javascript node.js

在一个网站上有任务,您可以在那里解决它们,然后看看其他人如何解决它。一个解决方案非常小,我不明白。

任务:给定标准棋盘上的两个单元格,确定它们是否具有相同的颜色。

对于cell1 = "A1"cell2 = "C3",输出应为 chessBoardCellColor(cell1, cell2) = true

true example

伙计解决方案: 我想了解。特别是这个箭头功能B.

B = s => (Buffer(s)[0] - s[1])%2
chessBoardCellColor = (a,b) => B(a) == B(b)

ChessBoardCellColor获取调用函数的预定义名称,因此返回此函数是答案

2 个答案:

答案 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