【发布时间】:2018-04-25 20:19:03
【问题描述】:
我无法理解使用箭头函数和 .every() 方法的编码挑战的解决方案,并希望有更多知识的人可以解释发生了什么。挑战是检查网格以查看它是否代表真正的数独板。我理解第一部分连接并乘以行/列/正方形,但无法理解后半部分...
// True, if product of #s in row is 9!
p = a => eval(a.join("*")) == (1*2*3*4*5*6*7*8*9);
// Check each row, column and 3 block grid using p()
sudoku = grid =>
grid.every((r,i) =>
p(r) &&
p(grid.map(r => r[i])) &&
p(r.map((_,j) => grid[3*(i/3|0)+(j/3|0)][3*(i%3)+(j%3)]) ) )
感谢您的帮助!
【问题讨论】:
-
旁注:验证功能不正确。由于它只检查集合的乘积,它会在 (2, 4, 8) 分别替换为 (4, 4, 4) 的行上失败(例如)。
-
你所说的“后半部分”是什么?您已经描述了第二条语句(
sudoku函数)的作用。
标签: javascript ecmascript-6 sudoku arrow-functions