gpt4 book ai didi

JavaScript 二维数组函数

转载 作者:行者123 更新时间:2023-11-28 13:00:53 25 4
gpt4 key购买 nike

我有一个二维数组,其中包含 truefalse。我创建了一个函数,返回该数组中的邻居数量(在所有 8 个方向上),其值为 true。但由于某种未知的原因,它无法正常工作(返回错误的邻居数量)。(是的,我正在制作康威的生命游戏。)

function neighbors(seq, x, y) {
var cnt = 0;
try {
if (seq[y-1][x]){
cnt++;
}
}
catch(err) {

}
try {
if (seq[y][x-1]){
cnt++;
}
}
catch(err) {

}
try {
if (seq[y][x+1]){
cnt++;
}
}
catch(err) {

}
try {
if (seq[y+1][x]){
cnt++;
}
}
catch(err) {

}
try {
if (seq[y-1][x+1]){
cnt++;
}
}
catch(err) {

}
try {
if (seq[y-1][x-1]){
cnt++;
}
}
catch(err) {

}
try {
if (seq[y+1][x-1]){
cnt++;
}
}
catch(err) {

}
try {
if (seq[y+1][x+1]){
cnt++;
}
}
catch(err) {

}
return cnt;
}

这段代码基本上是从我的 Python 代码翻译过来的,可以工作。

最佳答案

您可以拿一个具有所有所需方向的物体来进行计数。

然后检查索引是否是数组的键并检查嵌套级别。添加全部并返回该值。

function neighbors(seq, i, j) {
var directions = [{ x: 0, y: -1 }, { x: -1, y: -1 }, { x: -1, y: 0 }, { x: -1, y: 1 }, { x: 0, y: 1 }, { x: 1, y: 1 }, { x: 1, y: 0 }, { x: 1, y: -1 }];

return directions.reduce((r, { x, y }) => {
x += i;
y += j;
return r + (x in seq && seq[x][y] || 0);
}, 0);
}

关于JavaScript 二维数组函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50679023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com