Javascript 位掩码位置评估不需要';你不会在JS工作吗?

Javascript 位掩码位置评估不需要';你不会在JS工作吗?,javascript,algorithm,Javascript,Algorithm,我正在尝试使用JavaScript评估给定的棋盘状态是否是Neutreeko游戏的结束(5x5棋盘,3个连接的水平、对角线或垂直都是胜利)。多亏了@Anonymous,我现在知道了它需要的位掩码,但我仍然无法让它工作。也就是说,当我尝试类似于: var x = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0]; if(x & (x >> 1) & (x >> 2) & 0x739ce7) con

我正在尝试使用JavaScript评估给定的棋盘状态是否是Neutreeko游戏的结束(5x5棋盘,3个连接的水平、对角线或垂直都是胜利)。多亏了@Anonymous,我现在知道了它需要的位掩码,但我仍然无法让它工作。也就是说,当我尝试类似于:

var x = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0];
if(x & (x >> 1) & (x >> 2) & 0x739ce7) console.log("success");
if(x & (x >> 5) & (x >> 10)) console.log("success");
var x = parseInt([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0].join(''), 2);

我从来没有成功过。为什么会这样?

x
是一个数组,不能由JavaScript的位运算符操作。将
x
更改为

var x = parseInt('1111111111111111111100000', 2);
它应该会起作用。请注意,JavaScript的逐位运算符仅适用于-231和231-1(包括-231和231-1)之间的数字

如果要转换与原始阵列类似的阵列,可以执行以下操作:

var x = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0];
if(x & (x >> 1) & (x >> 2) & 0x739ce7) console.log("success");
if(x & (x >> 5) & (x >> 10)) console.log("success");
var x = parseInt([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0].join(''), 2);

x
是一个数组,不能由JavaScript的逐位运算符操作。将
x
更改为

var x = parseInt('1111111111111111111100000', 2);
它应该会起作用。请注意,JavaScript的逐位运算符仅适用于-231和231-1(包括-231和231-1)之间的数字

如果要转换与原始阵列类似的阵列,可以执行以下操作:

var x = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0];
if(x & (x >> 1) & (x >> 2) & 0x739ce7) console.log("success");
if(x & (x >> 5) & (x >> 10)) console.log("success");
var x = parseInt([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0].join(''), 2);