我不明白这个循环有什么问题,它通常会检查(x,y)的周围单元格。 调用此函数时,循环中只有4个段落而不是8个段落 这可能是一个愚蠢的错误,但我看不到它!
private int countAliveNeighbors(int x, int y) {
int count = 0;
for (int i = Math.max(0, x - 1); i < Math.min(grid.getWidth()-1, x + 1); i++) {
for (int j = Math.max(0, y - 1); j < Math.min(grid.getHeight()-1, y + 1); j++) {
if (!(i == x && j == y)) {
if (grid.isAlive(i, j))
count++;
}
}
}
return count;
}
答案 0 :(得分:1)
for
语句中的上限应该通过检查<=
而不仅仅是小于。x+1
。在到达y+1
或for (int i = Math.max(0, x - 1); i <= Math.min(grid.getWidth()-1, x + 1); i++) {
for (int j = Math.max(0, y - 1); j <= Math.min(grid.getHeight()-1, y + 1); j++) {
之前,通过测试的时间少于停止。它应该是这样的:
preg_replace("/([^; ]+)=>([^; ]+)/", "ec_set('$1',$2);", $input_lines);