Magic squares of doubly even order: Difference between revisions

(added draft task)
 
(→‎{{headerJava}}: added Java)
Line 10:
; See also:
* [http://www.1728.org/magicsq2.htm Doubly Even Magic Squares (1728.org)]<br><br>
 
=={{header|Java}}==
<lang java>public class MagicSquareDoublyEven {
 
public static void main(String[] args) {
int n = 8;
for (int[] row : magicSquareDoublyEven(n)) {
for (int x : row)
System.out.printf("%2s ", x);
System.out.println();
}
System.out.printf("\nMagic constant: %d ", (n * n + 1) * n / 2);
}
 
static int[][] magicSquareDoublyEven(final int n) {
if (n < 4 || n % 4 != 0)
throw new IllegalArgumentException("base must be a positive "
+ "multiple of 4");
 
int bits = 0b1001011001101001;
int size = n * n;
int mult = n / 4;
 
int[][] result = new int[n][n];
 
for (int i = 0; i < size; i++) {
 
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;
}
}</lang>
 
<pre> 1 2 62 61 60 59 7 8
9 10 54 53 52 51 15 16
48 47 19 20 21 22 42 41
40 39 27 28 29 30 34 33
32 31 35 36 37 38 26 25
24 23 43 44 45 46 18 17
49 50 14 13 12 11 55 56
57 58 6 5 4 3 63 64
 
Magic constant: 260</pre>
Anonymous user