Bujur Sangkar Ajaib

Materi ini saya dapatkan saat kuliah beberapa tahun yang lalu, tepatnya pada mata kuliah Sejarah Matematika. Bersumber dari buku pegangan wajib saat kuliah dan cari sana dan sini akhirnya apa yang digambarkan disini mudah-mudahan merupakan essent dari keunikan bujur sangkar ajaib itu sendiri.

Di dalam ilmu Matematika dapat ditunjukkan keajaiban kumpulan angka-angka yang merupakan suatu deret nilai-nilai tertentu, yang membentuk pola khusus pada matrix bujur sangkar, Bagaimana hal itu bisa terjadi ? maka hal in bisa saja kita katakan sebagai persoalan matemetika.

Disini akan diambil contoh bujur sangkar/persegi nxn dengan n merupakan bilangan ganjil. Karena polanya khusus, dan teratur maka dapat dibuatkan program komputer untuk menyelesaikannya seperti yang akan diuraikan berikut ini.

Kita semua mungkin pernah mendapat teka teki matematik yang meminta kita menyusun angka 1 sampai dengan 9 dalam elemen atau sel matrix 3×3, sedemikian rupa sehingga jumlah nilai tiap baris (secara horizontal), tiap kolom (secara vertikal) dan diagonal tiga buah sel = 15.

Tentunya hasil yang diperoleh akan sama dengan salah satu dari delapan kemungkinan jawaban berikut ini :
gambar-11

Ternyata secara matematik, hal tersebut dapat dijawab dengan cara yang cukup sederhana. Hanya ‘sekedar’ menyusun angka 1 sampai 9 secara linear berurutan mulai sel tertentu dengan arah tertentu. Pada contoh diatas, untuk gambar (1) dan (2) angka 1 sebagai awal ditempatkan di elemen M1,2 (Matrix baris 1, kolom 2), yaitu kolom tengah pada baris yang paling atas. Sedangkan arah merambatnya, untuk gambar (1) ke arah kanan, dan pada gambar (2) ke arah kiri.

Untuk menerangkan prosedur pengisian tiap sel atau elemen matrix, perlu kiranya kita memberikan nama atau kode untuk tiap kotak atau sel matrix tersebut sebagai berikut :
gambar-2

Kita sebut saja matrixnya bernama M, sehingga kita memberikan nama tiap sel M1,1, M1,2 dan seterusnya sampai M3,3. Selain itu perlu dipandang bahwa tiap baris, tiap kolom, dan tiap diagonal, merupakan lingkaran tertutup. Artinya, bila kita menelusuri baris-1 kearah kanan mulai dari M1,1, kita akan mendapatkan M1,2, M1,3, dan kemudian kembali ke M1,1. Jadi disebelah kanan M1,3, adalah M1,1, dan disebelah kiri M1,1 adalah M1,3. Demikian berlaku untuk semua baris, kolom dan diagonal.

Proses pengisian dilakukan secara diagonal sebagai berikut:
Ambil contoh seperti gambar (1) dari 8 kemungkinan seperti yang diilustrasikan diatas.
Pada contoh ini,
gambar-3

1) Mula-mula isilah sel M1,2 dengan angka 1. Kenapa sel M1,2 yang dipilih, ini ada hubungannya dengan pengisian yang akan dilakukan secara diagonal. Seperti terlihat dari contoh 8 buah kemungkinan yang digambarkan pada paling awal, angka 1 dapat juga diletakkan pada setiap titik tengah sisi bujur sangkarseperti pada sel M2,3, M3,2, atau sel M2,1. Bahkan pada matrix 5×5, 7×7 dan seterusnya penempatan angka awal tidak hanya terbatas pada ‘titik tengah’ tiap sisi bujur sangkar.
Nilai awal = 1, ditempatkan di M1,2 (sel tengah baris–1).

2) Kemudian maju secara diagonal atau satu langkah ke ‘kanan atas’, (yang diilustrasikan dengan panah tebal) dan akan sampai pada sebuah sel yang sebenarnya adalah sel M3,3, karena semua baris, semua kolom, dan semua diagonal, dipandang sebagai suatu lingkaran tertutup. Isilah sel ini dengan angka 2.
Urutan pengisian angka berikutnya ke arah diagonal kanan atas,3) Maju lagi secara diagonal, akan sampai pada sel M2,1. Isi sel ini dengan angka 3.

4) Maju lagi secara diagonal ke sel M1,2, ternyata sudah ada isinya. Dikatakan jalan ini buntu, sehingga harus turun vertikal satu langkah ke sel M3,1 (pindah kelompok). Isilah sel ini dengan angka 4.
Bila pengisian secara diagonal buntu, maka pengisian dilajutkan secara vertikal kebawah dengan perubahan nilai naik 1.

5) Maju secara diagonal ke sel M2,2. Isilah sel ini dengan angka 5.

6) Maju secara diagonal ke sel M1,3. Isilah sel ini dengan angka 6.

7) Maju secara diagonal yang ternyata akan sampai pada awal lingkaran diagonal yaitu sel M3,1 yang ternyata sudah ada isinya. Karena buntu turun vertikal ke sel M2,3. Isilah sel ini dengan angka 7.

8) Maju lagi secara diagonal yang ternyata sampai pada sel M1,1 (yang berada disebelah kanan sel M1,3 sebagai suatu lingkaran tertutup). Isilah sel ini dengan angka 8.

9) Maju lagi secara diagonal, akan sampai pada sel M3,2. Isilah sel ini dengan angka 9. Dan proses selesai.
Dengan cara yang sama dapat diselesaikan untuk matrix (5×5) atau (7×7) yang secara singkat hasilnya digambarkan sebagai berikut:

1. Matrix 5×5
gambar-4

Untuk Matrix 5×5, jumlah nilai per baris, per kolom, dan per diagonal = 65.
Contoh diatas hanya merupakan salah satu kemungkinan dari 8 kemungkinan letak atau posisi angka 1 yang berada di ‘titik tengah’ setiap sisi bujur sangkar.

2. Matrix 7×7
gambar-5

Untuk matrix 3×3, 5×5, dan 7×7 seperti yang diilustrasikan diatas, sebenarnya nilai-nilai yang diisikan kedalam matrix dapat dibentangkan menjadi sebuah deret sebagai berikut :

Untuk matrix 3×3 : 1,2,3 4,5,6 7,8,9
Untuk matrix 5×5 : 1,2,3,4,5 6,7,8,9,10 11,12,13,14,15 16,17,18,19,20 21,22,23,24,25
Untuk matrix 7×7 : 1,2,3,4,5,6,7 8,9,10,11,12,13,14 15,16,17,18,19,20,21 22 dan seterusnya.

Terlihat disini : awal nilai = 1
Dalam tiap kelompok nilai selalu naik 1
Perpindahan dari kelompok satu ke kelompok berikutnya juga = 1

Sebenarnya bisa juga dibuat nilai awal bukan 1. Perubahan nilai dalam kelompok bisa bertambah atau berkurang dan perubahan nilai antara ujung kelompok satu dengan awal kelompok berikutnya bertambah atau berkurang dengan suatu nilai tertentu.sebagai contoh untuk matrix 5×5 berikut ini :

1,2,3,4,5 8,9,10,11,12 15, dst. Awal = 1,
Dalam satu kelompok +1,
Perpindahan kelompok berikutnya +3

5,7,9,11,13 17,19,21,23,25 29, dst : Awal = 5,
Dalam satu kelompok + 2,
Perpindahan ke kelompok berikutnya +4

50,47,44,41,38 40,37,34,31,28 30, dst Awal = 50
Dalam satu kelompok -3
Perpindahan ke kelompok berikutnya +2

10,15,20,25,30 20,25,30,35,40 30, dst Awal = 10
Dalam satu kelompok +5
Perpindahan ke kelompok berikutnya –10
Pada contoh yang terakhir ini akan terdapat angka-angka yang nilainya sama

Beberapa contoh untuk matrix 5×5

gambar-6
Dengan cara yang sama, dapat disusun angka 1 sampai 25 untuk matrix 5×5, atau 1 sampai 49 untuk matrix 7×7 dan seterusnya, yang hasilnya dapat dicontohkan sebagai berikut :

gambar-7

Bahkan angka yang disimpan tidak mesti mulai dari 1, juga perubahannya tidak mesti naik 1, malah bisa turun, bisa juga naik dan turun secara teratur seperti deret.

gambar-8

Karena pengisian bilangan atau nilai-nilai tersebut mempunyai pola yang teratur, maka kita dapat membuat program untuk mengisi tiap-tiap sel.
Dari 8 pola pengisian yang diilustrasikan diatas, berikut ini dibuatkan satu program (dalam bahasa C) untuk salah satu pola pengisian yaitu nilai pertama ditempatkan pada sel tengah baris pertama .
Contoh, untuk matrix 3×3, maka nilai awal ditempatkan di M[1,2], untuk 5×5 ditempatkan di M[1,3] dan arah pengisian secara diagonal ke kanan atas, dan bila pengisiannya buntu, pengisian diteruskan ke satu sel vertikal kebawah lalu dilanjutkan lagi secara diagonal.

#include <stdio.h>
#include <math.h>
#include<conio.h>
main()
{ int I,J,N,n,X,Y,Z, T1=0, T2=0;
int M[15][15];
clrscr();
printf(“Matrix nxn, n=bil ganjil, maksimum = 15, minta n = berapa? “);
scanf(“%d”, &n);
printf(“Nilai awalnya = berapa? : “);
scanf(“%d”, &X);
printf(“Interval nilai dalam kelompok, (+) atau (-) berapa? : “);
scanf(“%d”, &Y);
printf(“Interval nilai pindah kelompok (+) atau (-) berapa? : “);
scanf(“%d”,&Z); printf(“\n\n);
for(I=0; I<=n+2; I++)
{for(J=0; J<=n+2; J++)
M[I][J] = 0; }
I=1; J=(n+1) / 2;
X-=Y;
for(N=1; N<=n*n; )
{ if(M[I][J] = = 0)
{ X+=Y;
M[I][J] = X;
if(I==n) M[0][J] = X;
if(J==1) M[I][n+1] = X;
if(I==n && J==1 ) M[0][n+1] = X;
I–; J++; N++;
if(I==0 && J==n+1) continue;
else { if (I==0) I=n;
if(J==n+1) J=1; }
}
else { I+=2; J-=1; X=X-Y+Z; }
}
for(I=1; I<=n; I++) T1+=M[I][n+1-I];
for(I=1; I<=n*5;I++) printf(“%c”, ‘ ‘);
printf(“%5d\n\n” T1);
for(I=1;I<=n+1;I++)
{ for(J=1; J<=n; J++)
{ printf(“%5d”, M[I][J]);
M[I][n+2] += M[I][J];
M[n+1][J] += M[I][J];
}
T2 += M[I][J];
if(I==n+1) M[I][n+2] = T2;
printf(“%5d\n\n”,M[I][n+2]);
}
}Program diatas hanya dibatasi untuk matrix maksimum 15×15, agar tampilannya cukup satu layar saja. Pengembangan lebih lanjut mungkin bisa dilakukan masing-masing jika Anda berminat….

About these ads

11 responses to “Bujur Sangkar Ajaib

  1. tadinya sih pas aku pertama di ajarin sm bu guru tuh susah bgtsss…… sampai berjam jam buat persegi ajaib nya akhirnya buat pr tus di rumah di ajarin sm papa ternyata tuh gampang bgtzzz……. caranya truz liat di sini lebih gampang caranya akhirnya aku bisa juga main

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Logout / Ubah )

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s