Kamis, 18 Juni 2009

Magic Square

Untuk membuat magic square dalam AWK Languages, hal pertama yang kita lakukan adalah membuat sebuah file bernama MAGICSQUARE.txt. Kemudian isi file tersebut dengan perintah di bawah ini :

{ ordo[55,55];
n=$1;
K=1;
L=1;
M=1;

for(a=0; a<=n+2; a++)
{ for(b=0; b<=n+2; b++)
ordo[a,b] = 0;
}
a=1; b=(n+1) / 2;
K-=L;
for(N=1; N<=n*n;)
{ if(ordo[a,b]==0)
{ K+=L;
ordo[a,b] = K;
if(a==n) ordo[0,b] = K;
if(b==1) ordo[a,n+1] = K;
if(a==n && b==1 ) ordo[0,n+1] = K;
a--; b++; N++;
if(a==0&&b==n+1) continue;
else
{
if (a==0) a=n;
if(b==n+1) b=1;
}
}
else
{
a+=2;
b-=1;
K=K-L+M;
}
}
for(a=1; a<=n; a++)
T1+=ordo[a,n+1-a];

for(a=1; a<=n*5;a++)
printf(" ");
printf("%5d\n\n",T1);

for(a=1;a<=n+1;a++)
{
for(b=1; b<=n; b++)
{
printf("%5d", ordo[a,b]);
ordo[a,n+2] += ordo[a,b];
ordo[n+1,b] += ordo[a,b];
}
T2 += ordo[a,b];
if(a==n+1) ordo[a,n+2] = T2;
printf("%5d\n\n",ordo[a,n+2]);
}
}


Kemudian simpan file tersebut. Pada jendela terminal, kita berikan perintah untuk memanggil file MAGICSQUARE.txt :

echo 7 | awk -f bujursangkar.txt

Sehingga hasil yang ditampilkan adalah :

30 39 48 1 10 19 28 175

38 47 7 9 18 27 29 175

46 6 8 17 26 35 37 175

5 14 16 25 34 36 45 175

13 15 24 33 42 44 4 175

21 23 32 41 43 3 12 175

22 31 40 49 2 11 20 175

175 175 175 175 175 175 175 175


NOTE : echo 7 yang dimaksud pada perintah di atas adalah ordo 7x7. Sehingga apabila kita ingin membuat ordo selain 7 hanya tinggal menggantinya saja...

Tidak ada komentar:

Posting Komentar