ಮಾಯಾಚೌಕದ ಎರಡು ವಿಧಾನಗಳು
ªÀiÁAiÀiÁZËPÀ: ªÀiÁAiÀiÁZËPÀªÉAzÀgÉ ZËPÁPÁgÀzÀ°è ¸ÀASÉåUÀ¼À£ÀÄß GzÀݪÁV PÀÆrzÀgÀÆ, CqÀتÁV PÀÆrzÀgÀÆ ºÁUÀÆ JgÀqÀÆ PÀtðUÀ¼À ¢QÌ£À°è PÀÆrzÀgÀÆ MAzÉà ªÉÆvÀÛ §gÀĪÀAvÉ 1¾ôAzÀ ªÀiÁAiÀiÁZËPÀzÀ DPÁgÀzÀ ªÀUÀðzÀªÀgÉV£À ¸ÀASÉåUÀ¼À£ÀÄß eÉÆÃr¸ÀĪÀÅzÀÄ.¸ÀªÀÄ DPÁgÀzÀ ªÀiÁAiÀiÁZËPÀPÉÌ C£Àé¬Ä¸ÀĪÀ ¸ÁªÀiÁ£Àå ¤AiÀĪÀÄ«®è. DzÀgÉ ¨É¸À DPÁgÀPÉÌ ¸ÁªÀiÁ£Àå ¤AiÀĪÀÄ gÀƦ¸À§ºÀÄzÀÄ. CAzÀgÉ ªÀiÁAiÀiÁZËPÀzÀ DPÁgÀ 1, 3, 5, 7 EvÁå¢ ¨É¸À¸ÀASÉåAiÀiÁVzÁÝUÀ ¸ÁªÀiÁ£Àå¤AiÀĪÀĪÀ£ÀÄß C£ÀéAĸÀ§ºÀÄzÀÄ. £Á£ÀÄ F ¨É¸À ªÀiÁAiÀiÁZËPÀPÉÌ ¸ÀA§A¢ü¹zÀAvÉ JgÀqÀÄ «zsÁ£ÀzÀ ªÀiÁAiÀiÁZËPÀ gÀZÀ£ÉAiÀÄ£ÀÄß «ªÀj¸ÀÄvÉÛãÉ. ºÁUÀÆ F ¤AiÀĪÀĪÀ£ÀÄß UÀtPÀAiÀÄAvÀæPÉÌ C¼ÀªÀr¸ÀĪÀAvÉ C++ ªÀÄvÀÄÛ Pascal programUÀ¼À£ÀÄß G¯ÉèÃT¸ÀÄvÉÛãÉ. PÁPïìlgï «zsÁ£À:- F «zsÁ£ÀzÀ°è MAzÀÄ jÃwAiÀÄ eÉÆÃqÀuÉAiÀÄ£ÀÄß «ªÀj¸ÀÄvÉÛãÉ. 5X5 ªÀiÁAiÀiÁZËPÀªÀ£ÀÄß GzÁºÀgÀuÉAiÀiÁV vÉUÉzÀÄPÉƼÉÆîÃt. ªÀÄzsÀåzÀ CqÀظÁ®Ä ºÁUÀÆ PÉÆ£ÉAiÀÄ GzÀݸÁ®Ä £ÀªÀÄä ªÉÆzÀ® ¸ÀASÉåAiÀÄ£ÀÄß vÀÄA§ÄªÀ ªÀÄ£É (CAzÀgÉ ªÀÄ£É[3, 5] ªÉÆzÀ® ªÀÄ£É). E°è 1 £ÀÄß vÀÄA¨ÉÆÃt. »ÃUÉ vÀÄA©zÀ £ÀAvÀgÀ ¸ÀASÉå 2 £ÀÄß vÀÄA§®Ä JgÀqÀ£Éà PÀtðzÀ (Secondary diagonal) ¢QÌ£À°è ºÉƾªÀÄÄRªÁV ªÀÄÄAzÀĪÀgÉAiÉÆÃt (¨ÁtzÀ UÀľÄw£À ¢QÌ£À°è) ZÀ°¸ÉÆÃt. CAzÀgÉ 2£ÀÄß vÀÄA§ÄªÀ ªÀÄ£É ªÀÄ£É[2, 6] DUÀÄvÀÛzÉ. DzÀgÉ EzÀÄ 5X5 ªÀiÁAiÀiÁZËPÀªÁVgÀĪÀÅzÀ¾ôAzÀ £ÀªÀÄUÉ GzÀݸÁ®Ä EgÀĪÀÅ¢®è. ºÁUÁV CzÉà CqÀظÁ°£À°è CAzÀgÉ 2£Éà CqÀØݸÁ°£À°è 1£Éà GzÀݸÁ°£À°è CAzÀgÉ ªÀÄ£É[2, 1]¾°è 2£ÀÄß vÀÄA© ¥ÀÅ£ÀB JgÀqÀ£Éà PÀtðzÀ ¢QÌ£À°è ªÀÄÄA¢£À ¸ÀASÉåAiÀÄ£ÀÄß vÀÄA¨ÉÆÃt. GzÀÝ CxÀªÁ CqÀØ ¸Á°£À°è ªÀÄ£É DPÁgÀªÀ£ÀÄß «ÄÃgôzÀgÉ PÉÆ£ÉAiÀÄ GzÀÝPÉÌ ºÁUÀÆ ªÉÆzÀ® CqÀØPÉÌ ºÉÆÃUÉÆÃt. »ÃUÉ ºÉÆÃUÀĪÁUÀ ªÀÄÄA¢£À ªÀÄ£É FUÁUÀ¯Éà vÀÄA©zÀÝgÉ MAzÀÄ GzÀÝ »AzÀPÉÌ §AzÀÄ ¥ÀÅ£ÀB JgÀqÀ£Éà PÀtðzÀ ¢QÌ£À°è ¸ÀASÉåUÀ¼À£ÀÄß 25¾ªÀgÉUÉ (F GzÁºÀgÀuÉUÉ) vÀÄA§ÄvÁÛ ºÉÆÃzÀgÉ PÁPïìlgï ªÀiÁzÀjAiÀÄ°è ªÀiÁAiÀiÁZËPÀ ¹zÀÞªÁUÀÄvÀÛzÉ. EzÀPÉÌ avÀæ 1£ÀÄß £ÉÆÃr.
avÀæ 1
9 | 3 | 22 | 16 | 15 |
2 | 21 | 20 | 14 | 8 |
25 | 19 | 13 | 7 | 1 |
18 | 12 | 6 | 5 | 24 |
11 | 10 | 4 | 23 | 17 |
EzÀPÉÌ C++ ªÀÄvÀÄÛ Pascal programUÀ¼ÀÄ F jÃw EªÉ.
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void coxeter(int n)
{
int i, inext, j, jnext, k, u, arr[20][20];
for (i=0; i<n; i++)
for (j=0; j<n; j++)
arr[i][j]=0;
u=n*n;
i=(n-1)/2; j=n-1;
for (k=1; k<=u; k++)
{
arr[i][j]=k;
inext=i>0?i-1:n-1;
jnext=j<n-1?j+1:0;
if (arr[inext][jnext]) j--;
else { i=inext; j=jnext;}
}
cout << "Magic Square by Coxeter Method is " << endl;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cout << setw(5) << arr[i][j];
cout << endl;
}
}
void main()
{
int n;
do
{
cout << "Enter a positive odd integer :";
cin >> n;
}
while (n<0 || !(n%2));
cout << endl;
coxeter(n);
getch();
}
Pascal program:
program xx;
uses crt;
var
n:integer;
procedure coxeter(n:integer);
var
i, inext, j, jnext, k, u:integer;
arr: array[1..20, 1..20] of integer;
begin
for i:=1 to n do
for j:= 1 to n do
arr[i,j]:=0;
u:=n*n;
i:=(n+1) div 2; j:=n;
for k:= 1 to u do
begin
arr[i,j]:=k;
if (i>1) then inext:=i-1 else inext:=n;
if (j<n) then jnext:=j+1 else jnext:=1;
if (arr[inext, jnext]<>0) then j:=j-1
else begin i:=inext; j:=jnext end
end;
Writeln('By Coxeter Method');
for i:= 1 to n do
begin
for j:= 1 to n do
write(arr[i, j]:5);
writeln
end;
end;
begin {Main}
repeat
Write('A positive odd integer :') ;
readln(n)
until (n>=0) and (n mod 2<>0);
coxeter(n);
repeat until keypressed
end.
EzÀPÉÌ C++ ªÀÄvÀÄÛ Pascal programUÀ¼ÀÄ F jÃw EªÉ.
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void bachet(int n)
{
int i,j, k, u, arr[20][20];
for (i=0; i<n; i++)
for (j=0; j<n; j++)
arr[i][j]=0;
u=n*n;
i=(n-1)/2; j=i+1;
for (k=1; k<=u; k++)
{
i=i<0?n-1:i;
i=i>n-1?0:i;
j=j<0?n-1:j;
j=j>n-1?0:j;
arr[i][j]=k;
i--; j++;
i=i<0?n-1:i;
i=i>n-1?0:i;
j=j<0?n-1:j;
j=j>n-1?0:j;
if (arr[i][j]) { i++; j++;}
}
cout << "Magic Square by Bachet Method is " << endl;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cout << setw(5) << arr[i][j];
cout << endl;
}
}
void main()
{
int n;
do
{
cout << "Enter a positive odd integer :";
cin >> n;
}
while (n<0 || !(n%2));
cout << endl;
bachet(n);
getch();
}
Pascal program:
program xx;
uses crt;
var
n:integer;
procedure bachet(n:integer);
var
i, j, k, u:integer;
arr:array[1..20, 1..20] of integer;
begin
for i:=1 to n do
for j:= 1 to n do
arr[i,j]:=0;
i:=(n+1) div 2; j:=i+1;
u:=n*n;
for k:=1 to u do
begin
if (i>n) then i:=1 else if (i<1) then i:=n;
if (j>n) then j:=1 else if (j<1) then j:=n;
arr[i,j]:=k;
i:=i-1; j:=j+1;
if (i>n) then i:=1 else if (i<1) then i:=n;
if (j>n) then j:=1 else if (j<1) then j:=n;
if (arr[i,j]<>0) then begin i:=i+1; j:=j+1 end
end;
writeln('Bachet Method');
for i:= 1 to n do
begin
for j:= 1 to n do
write(arr[i,j]:5);
writeln
end
end;
begin
repeat
Write('A positive odd integer :') ;
readln(n)
until (n>=0) and (n mod 2<>0);
bachet(n);
repeat until keypressed
end.
¨ÉZÉmï «zsÁ£À: F «zsÁ£ÀzÀ°è MAzÀÄ PÀæªÀÄzÀ°è ªÀÄzsÀåzÀ CqÀظÁ®Ä ºÁUÀÆ ªÀÄzsÀåzÀ GzÀݸÁ°VAvÀ MAzÀÄ ªÀÄ£É §®zÀ°ègÀĪÀ ªÀÄ£ÉAiÀÄ°è CAzÀgÉ ªÀÄ£É[3, 4]¾°è 1 £ÀÄß vÀÄA¨ÉÆÃt. E®Æè »ÃUÉ vÀÄA©zÀ £ÀAvÀgÀ ¸ÀASÉå 2 £ÀÄß vÀÄA§®Ä JgÀqÀ£Éà PÀtðzÀ (Secondary diagonal) ¢QÌ£À°è ºÉƾªÀÄÄRªÁV ªÀÄÄAzÀĪÀgÉAiÉÆÃt (¨ÁtzÀ UÀľÄw£À ¢QÌ£À°è) ZÀ°¸ÉÆÃt. CAzÀgÉ 2£ÀÄß ªÀÄ£É[2, 5]¾°è vÀÄA¨ÉÆÃt. ªÀÄÄA¢£À ¸ÀASÉå 3£ÀÄß vÀÄA§ÄªÀ ªÀÄ£É ªÀÄ£É[1, 6] DUÀÄvÀÛzÉ. DzÀgÉ EzÀÄ 5X5 ªÀiÁAiÀiÁZËPÀªÁVgÀĪÀÅzÀ¾ôAzÀ £ÀªÀÄUÉ GzÀݸÁ®Ä EgÀĪÀÅ¢®è. ºÁUÁV ªÀÄ£É[1,1]¾°è 3£ÀÄß vÀÄA¨ÉÆÃt. ¥ÀÅ£ÀB JgÀqÀ£Éà PÀtðzÀ ¢QÌ£À°è ªÀÄÄA¢£À ¸ÀASÉåAiÀÄ£ÀÄß vÀÄA¨ÉÆÃt. GzÀÝ CxÀªÁ CqÀØ ¸Á°£À°è ªÀÄ£É DPÁgÀªÀ£ÀÄß «ÄÃgôzÀgÉ PÉÆ£ÉAiÀÄ GzÀÝPÉÌ ºÁUÀÆ ªÉÆzÀ® CqÀØPÉÌ ºÉÆÃUÉÆÃt. »ÃUÉ vÀÄA§ÄªÁUÀ FUÁUÀ¯Éà vÀÄA©zÀ ªÀÄ£É ¹PÀÌgÉ ¥ÀæªÀiÄS PÀtðzÀ ¢QÌ£À°è (Main diagonal) MAzÀÄ ªÀÄ£É ªÀÄÄAzÀĪÀgÉzÀÄ ªÀÄÄA¢£À ¸ÀASÉåAiÀÄ£ÀÄß D ªÀÄ£ÉAiÀÄ°è vÀÄA© ¥ÀÅ£ÀB JgÀqÀ£Éà PÀtðzÀ (Secondary diagonal) ¢QÌ£À°è ZÀ°¸ÀÄvÁÛ ¸ÀASÉåUÀ¼À£ÀÄß 25¾ªÀgÉUÉ(F GzÁºÀgÀuÉAiÀÄ°è) vÀÄA§ÄvÁÛ ºÉÆÃzÀgÉ ¨ÉZÉmï «zsÁ£ÀzÀ°è ªÀiÁAiÀiÁZËPÀ vÀAiÀiÁgÁUÀÄvÀÛzÉ. EzÀPÉÌ avÀæ 2£ÀÄß £ÉÆÃr.avÀæ 2.
3 |
16 | 9 | 22 | 15 |
20 | 8 | 21 | 14 | 2 |
7 | 25 | 13 | 1 | 19 |
24 | 12 | 5 | 18 | 6 |
11 | 4 | 17 | 10 | 23 |