Jump to content

Magic squares of odd order: Difference between revisions

Added Wren
m (→‎{{header|Phix}}: pp_StrFmt tweaks)
(Added Wren)
Line 4,502:
72 55 47 39 31 23 15 7 80
The magic number is: 369
</pre>
 
=={{header|Wren}}==
{{trans|Go}}
{{libheader|Wren-fmt}}
<lang ecmascript>import "/fmt" for Fmt
 
var ms = Fn.new { |n|
var M = Fn.new { |x| (x + n - 1) % n }
if (n <= 0 || n&1 == 0) {
n = 5
System.print("forcing size %(n)")
}
var m = List.filled(n * n, 0)
var i = 0
var j = (n/2).floor
for (k in 1..n*n) {
m[i*n + j] = k
if (m[M.call(i)*n + M.call(j)] != 0) {
i = (i + 1) % n
} else {
i = M.call(i)
j = M.call(j)
}
}
return [n, m]
}
 
var res = ms.call(5)
var n = res[0]
var m = res[1]
for (i in 0...n) {
for (j in 0...n) System.write(Fmt.d(4, m[i*n+j]))
System.print()
}
System.print("\nMagic number : %(((n*n + 1)/2).floor * n)")</lang>
 
{{out}}
<pre>
15 8 1 24 17
16 14 7 5 23
22 20 13 6 4
3 21 19 12 10
9 2 25 18 11
 
Magic number : 65
</pre>
 
9,482

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.