вот такой код получился
Код:
System.out.println("getConvolution");
int[] stuff = {7, 6, 5, 5, 6, 7, 6, 4, 3, 3, 4, 6, 5, 3, 2, 2, 3, 5, 5, 3, 2, 2, 3, 5, 6, 4, 3, 3, 4, 6, 7, 6, 5, 5, 6, 7};
int w = 6;
int h = 6;
int k = 0;
result = new int[w * h];
int count = 0;
for (int i = 0; i < stuff.length; i++) {
if ( (i / w) == 0) { // первый ряд матрицы
if ((i % w) == 0 || (i % w) == (w-1)) { // первая и последняя колонка
k = stuff[i] * 3; // сложили уголок
k += stuff[i + ((i % w) == 0?1:-1)] * -1;
k += stuff[i + w] * -1;
result[count] = k;
count++;
} else {
k = stuff[i] * 4;
k += stuff[i - 1] * -1;
k += stuff[i + 1] * -1;
k += stuff[i + w] * -1;
result[count] = k;
count++;
}
} else if ( (i / (w * (h-1))) > 0) {
if ((i % w) == 0 || (i % w) == (w-1)) {
k = stuff[i] * 3;
k += stuff[i + ((i % w) == 0?1:-1)] * -1;
k += stuff[i - w] * -1;
result[count] = k;
count++;
} else {
k = stuff[i] * 4;
k += stuff[i - 1] * -1;
k += stuff[i + 1] * -1;
k += stuff[i - w] * -1;
result[count] = k;
count++;
}
} else {
if ((i % w) == 0 || (i % w) == (w-1)) {
k = stuff[i] * 4;
k += stuff[i + ((i % w) == 0?1:-1)] * -1;
k += stuff[i + w] * -1;
k += stuff[i - w] * -1;
result[count] = k;
count++;
} else {
k = stuff[i] * 5;
k += stuff[i - 1] * -1;
k += stuff[i + 1] * -1;
k += stuff[i - w] * -1;
k += stuff[i + w] * -1;
result[count] = k;
count++;
}
}
System.out.println(Arrays.toString(result));