ಮಾಯಾಚೌಕದ ಎರಡು ವಿಧಾನಗಳು

ಮಾಯಾಚೌಕದ ಎರಡು ವಿಧಾನಗಳು

ಬರಹ

ªÀ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

    

‍ನಿಮಗೆ ಈ ಬರಹ ಇಷ್ಟವಾಯಿತೇ? ತಿಳಿಸಿ
No votes yet
Rating
No votes yet