Magic squares of doubly even order: Difference between revisions

Content added Content deleted
mNo edit summary
m (→‎{{header|Java}}: less obscure)
Line 55: Line 55:
int bits = 0b1001011001101001;
int bits = 0b1001011001101001;
int size = n * n;
int size = n * n;
int mult = n / 4;
int mult = n / 4; // how many multiples of 4


int[][] result = new int[n][n];
int[][] result = new int[n][n];


for (int i = 0; i < size; i++) {
for (int r = 0, i = 0; r < n; r++)
for (int c = 0; c < n; c++, i++) {

int bitsPos = c / mult + (r / mult) * 4;
int value = (bits & (1 << bitsPos)) != 0 ? i + 1 : size - i;
result[r][c] = value;
}


int bitsPos = (i % n) / mult + (i / (n * mult) * 4);
int value = (bits & (1 << bitsPos)) != 0 ? i + 1 : size - i;
result[i / n][i % n] = value;
}
return result;
return result;
}
}