Magic squares of odd order: Difference between revisions

Add Seed7 example
(Add Seed7 example)
Line 1,200:
30 41 52 63 65 76 6 17 19
40 51 62 64 75 5 16 27 29
</pre>
 
=={{header|Seed7}}==
<lang seed7>$ include "seed7_05.s7i";
 
const func integer: succ (in integer: num, in integer: max) is
return succ(num mod max);
 
const func integer: pred (in integer: num, in integer: max) is
return succ((num - 2) mod max);
 
const proc: main is func
local
var integer: size is 3;
var array array integer: magic is 0 times 0 times 0;
var integer: row is 1;
var integer: column is 1;
var integer: number is 0;
begin
if length(argv(PROGRAM)) >= 1 then
size := integer parse (argv(PROGRAM)[1]);
end if;
magic := size times size times 0;
column := succ(size div 2);
for number range 1 to size ** 2 do
magic[row][column] := number;
if magic[pred(row, size)][succ(column, size)] = 0 then
row := pred(row, size);
column := succ(column, size);
else
row := succ(row, size);
end if;
end for;
for key row range magic do
for key column range magic[row] do
write(magic[row][column] lpad 4);
end for;
writeln;
end for;
end func;</lang>
 
{{out}}
<pre>
> s7 magicSquaresOfOddOrder 7
SEED7 INTERPRETER Version 5.0.5203 Copyright (c) 1990-2014 Thomas Mertes
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
</pre>