Pada awalnya kita akan membuat file yang kemudian akan dijalankan pada terminal. Cara memanggilnya di terminal adalah sebagai berikut
echo 7 | awk -f
disini echo 7 berfungsi sebagai penanda bahwa ordo dari bujursangkar ajaib tersebut adalah 7x7. Apabila kita menginginkan ordo selain itu maka kita hanya tinggal mengganti angkanya saja. Misalnya kita menginginkan ordonya adalah 4x4 maka cara memanggilnya adalah seperti di bawah ini :
echo 4 | awk -f
Misalnya saja kita beri nama file tersebut bujur_ajaib.txt maka perintah di atas akan menjadi seperti ini :
echo 7 | awk -f bujur_ajaib.txt
yang mana file tersebut akan berisi instruksi sebagai berikut :
{ ordo[55,55]; #array yang menunjukkan ordo dari bujur sangkar
n=$1; #merupakan input dari matriks
X=1; #adalah nilai awal yang diberikan
Y=1; #merupakan interval
Z=1; #merupakan interval yang digunakan untuk pindah
for(a=0; a<=n+2; a++) #digunakan untuk menghitung letak kolom dan baris
{ for(b=0; b<=n+2; b++)
ordo[a,b] = 0;
}
a=1; b=(n+1) / 2;
X-=Y;
for(N=1; N<=n*n;)
{ if(ordo[a,b]==0)
{ X+=Y;
ordo[a,b] = X;
if(a==n) ordo[0,b] = X;
if(b==1) ordo[a,n+1] = X;
if(a==n && b==1 ) ordo[0,n+1] = X;
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;
X=X-Y+Z;
}
}
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 setelah membuat file tersebut kita akan menjalankannya dengan perintah seperti di atas tadi yang kemudian akan menghasilkan tampilan seperti di bawah ini di dalam terminal :
175
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
echo 7 | awk -f
disini echo 7 berfungsi sebagai penanda bahwa ordo dari bujursangkar ajaib tersebut adalah 7x7. Apabila kita menginginkan ordo selain itu maka kita hanya tinggal mengganti angkanya saja. Misalnya kita menginginkan ordonya adalah 4x4 maka cara memanggilnya adalah seperti di bawah ini :
echo 4 | awk -f
Misalnya saja kita beri nama file tersebut bujur_ajaib.txt maka perintah di atas akan menjadi seperti ini :
echo 7 | awk -f bujur_ajaib.txt
yang mana file tersebut akan berisi instruksi sebagai berikut :
{ ordo[55,55]; #array yang menunjukkan ordo dari bujur sangkar
n=$1; #merupakan input dari matriks
X=1; #adalah nilai awal yang diberikan
Y=1; #merupakan interval
Z=1; #merupakan interval yang digunakan untuk pindah
for(a=0; a<=n+2; a++) #digunakan untuk menghitung letak kolom dan baris
{ for(b=0; b<=n+2; b++)
ordo[a,b] = 0;
}
a=1; b=(n+1) / 2;
X-=Y;
for(N=1; N<=n*n;)
{ if(ordo[a,b]==0)
{ X+=Y;
ordo[a,b] = X;
if(a==n) ordo[0,b] = X;
if(b==1) ordo[a,n+1] = X;
if(a==n && b==1 ) ordo[0,n+1] = X;
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;
X=X-Y+Z;
}
}
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 setelah membuat file tersebut kita akan menjalankannya dengan perintah seperti di atas tadi yang kemudian akan menghasilkan tampilan seperti di bawah ini di dalam terminal :
175
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
0 komentar:
Posting Komentar