I was looking over my old code and wanted to make it look more "elegant". Basically overly complicated but looks cooler. I was wondering if anyone could help! Assuming I want to add the 4 neighbours of a given index (x, y)
in a 2D array arr
, to an new array n
, I started with this:
n.add( arr[x][y-1] );
n.add( arr[x][y+1] );
n.add( arr[x-1][y] );
n.add( arr[x+1][y] );
With a bit of googling, this was probably the best answer I managed to find. I tidied it up a little to get this:
for (int i = x-1; i <= x+1; i++) {
for (int j = y-1; j <= y+1; j++) {
if(!((i == x) && (j == y))) {
n.add( arr[i][j] );
}
}
}
With a bit of tweaking I ended up with this:
for (int i = -1; i <= 1; i++) {
for (int j = -1; j <= 1; j++) {
if(Math.abs(i) == Math.abs(j)) continue;
n.add( arr[x+i][y+j] );
}
}
How much further can you go with this? I was thinking there may be a way to simplify the if statement with some math logic but I'm not smart enough to think of anything. Help/thoughts would be appreciated!