Magic squares of doubly even order: Difference between revisions

Content added Content deleted
(Added solution for EDSAC)
Line 274: Line 274:
133 134 135 9 8 7 6 5 4 142 143 144
133 134 135 9 8 7 6 5 4 142 143 144
magic constant = 870
magic constant = 870
</pre>

=={{header|Amazing Hopper}}==
{{Trans|C++}}
<syntaxhighlight lang="c">
/*
Magic squares of doubly even order. Rosettacode.org
By Mr. Dalien.
*/

#include <basico.h>

#proto cuadradomágico(_X_)
#synon _cuadradomágico generarcuadradomágico

principal {
decimales '0', fijar separador 'NULO'
malla de bits(bits,'1,0,0,1','0,1,1,0','0,1,1,0','1,0,0,1')
borrar pantalla
iterar para( i=1; n=4, #(i<=3), ++i; #(n=4*i) )
dim( #(n*n) ) matriz de ceros 'sqr'
generar cuadrado mágico (n);
ir a sub ( meter en tabla, sqr, #(n+1), 4 ), para 'sqr'
imprimir '"Magic square order ",n,\
"\nMagic constant : ",#((n * n + 1) * n / 2),\
NL,sqr,NL,NL'
luego limpiar 'sqr'
siguiente
terminar
}

subrutinas

sub( meter en tabla, s, n, w ) {
i=n,rareti(i, 'i')
retener 'n', insertar columnas en 's'
insertar filas en 's'
#basic{
s[1:2:2*n-1,1:_end_] = "---"
s[1:_end_, 1:2:2*n-1] = "|"
s[1:2:_end_,1:2:_end_] = "+"
}
retornar 's'
}

cuadrado mágico ( n )
iterar para ( cr=0;i=0, #(cr<n), ++cr )
iterar para ( cc=0, #(cc<n), ++cc;++i )
#( sqr[ (cc+n*cr)+1 ] = (bits[(cr%4+1),(cc%4+1)]) ? (i+1) : (n^2-i); )
siguiente
siguiente
#( sqr = lpad(" ",3,string(sqr)))
redim ( sqr, n, n )
retornar
</syntaxhighlight>
{{out}}
<pre>
Magic square order 4
Magic constant : 34
+---+---+---+---+
| 1| 15| 14| 4|
+---+---+---+---+
| 12| 6| 7| 9|
+---+---+---+---+
| 8| 10| 11| 5|
+---+---+---+---+
| 13| 3| 2| 16|
+---+---+---+---+


Magic square order 8
Magic constant : 260
+---+---+---+---+---+---+---+---+
| 1| 63| 62| 4| 5| 59| 58| 8|
+---+---+---+---+---+---+---+---+
| 56| 10| 11| 53| 52| 14| 15| 49|
+---+---+---+---+---+---+---+---+
| 48| 18| 19| 45| 44| 22| 23| 41|
+---+---+---+---+---+---+---+---+
| 25| 39| 38| 28| 29| 35| 34| 32|
+---+---+---+---+---+---+---+---+
| 33| 31| 30| 36| 37| 27| 26| 40|
+---+---+---+---+---+---+---+---+
| 24| 42| 43| 21| 20| 46| 47| 17|
+---+---+---+---+---+---+---+---+
| 16| 50| 51| 13| 12| 54| 55| 9|
+---+---+---+---+---+---+---+---+
| 57| 7| 6| 60| 61| 3| 2| 64|
+---+---+---+---+---+---+---+---+


Magic square order 12
Magic constant : 870
+---+---+---+---+---+---+---+---+---+---+---+---+
| 1|143|142| 4| 5|139|138| 8| 9|135|134| 12|
+---+---+---+---+---+---+---+---+---+---+---+---+
|132| 14| 15|129|128| 18| 19|125|124| 22| 23|121|
+---+---+---+---+---+---+---+---+---+---+---+---+
|120| 26| 27|117|116| 30| 31|113|112| 34| 35|109|
+---+---+---+---+---+---+---+---+---+---+---+---+
| 37|107|106| 40| 41|103|102| 44| 45| 99| 98| 48|
+---+---+---+---+---+---+---+---+---+---+---+---+
| 49| 95| 94| 52| 53| 91| 90| 56| 57| 87| 86| 60|
+---+---+---+---+---+---+---+---+---+---+---+---+
| 84| 62| 63| 81| 80| 66| 67| 77| 76| 70| 71| 73|
+---+---+---+---+---+---+---+---+---+---+---+---+
| 72| 74| 75| 69| 68| 78| 79| 65| 64| 82| 83| 61|
+---+---+---+---+---+---+---+---+---+---+---+---+
| 85| 59| 58| 88| 89| 55| 54| 92| 93| 51| 50| 96|
+---+---+---+---+---+---+---+---+---+---+---+---+
| 97| 47| 46|100|101| 43| 42|104|105| 39| 38|108|
+---+---+---+---+---+---+---+---+---+---+---+---+
| 36|110|111| 33| 32|114|115| 29| 28|118|119| 25|
+---+---+---+---+---+---+---+---+---+---+---+---+
| 24|122|123| 21| 20|126|127| 17| 16|130|131| 13|
+---+---+---+---+---+---+---+---+---+---+---+---+
|133| 11| 10|136|137| 7| 6|140|141| 3| 2|144|
+---+---+---+---+---+---+---+---+---+---+---+---+

</pre>
</pre>