Professional Documents
Culture Documents
I. PENDAHULUAN
Permainan ini pertama kali ditemukan pada tahun 1989
oleh perusahaan Jepang Nipoli. Dari sejak pertama kali
ditemukan puzzle ini memiliki banyak nama seperti
Fences atau Dotty Dilemma. Teka-teki ini seperti
layaknya sudoku, tapi kurang begitu dikenal dan literatur
pembahasan algoritma pada permainan ini masih kurang
dibanding dengan permainan Sudoku.
Loop the loop dimainkan pada titik-titik kisi persegi,
beberapa kotak yang dibentuk oleh titik terdapat nomor di
dalamnya. Tujuannya adalah untuk menghubungkan titik-
titik horizontal dan vertikal yang berdekatan sehingga
akhirnya akan membentuk sebuah garis loop yang tidak Gambar 2 : Solusi permainan loop the loop
mempunyai ujung. Nomor di dalam persegi merupakan
banyaknya garis yang ada disekelilingnya. Nomor-nomor
ini bisa 0, 1, 2, atau 3. Jika tidak ada nomornya, berarti II. PETUNJUK PENYELESAIAN
bisa ada berapa saja garis ada di sekelilingnya, antara 0 A. Notasi
sampai 3.
Berikut adalah contoh permasalahan teka-teki pada Setiap kali jumlah garis pada kotak cocok dengan
permainan loop the loop: nomor yang ada di sel persegi, maka kemungkinan lain
dihilangkan. Notasi lain yang berguna untuk
menyelesaikan permainan ini adalah 75 derajat diantara
dua garis adjacent, untuk menentukan bahwa salah satu
diantara keduanya harus diisi. Notasi ini tidak diperlukan
dalam solusi tapi dapat membantu untuk
menyelesaikannya.
Gambar 4 : Angka 1 yang terdapat di pojok Jika dua angka 3 saling berdekatan secara lurus atau
datar, tepi yang berseberangan pasti harus diisi, jika tidak
Jika angka 3 dipojok maka dua garis harus berada di maka akan mustahil untuk menyelesaikan permasalahan,
pojok, jika tidak maka permasalahan tidak akan selesai. dan sisa garis diberikan satu sisi 3 dengan sisi 3 yang
Karena kemungkinan yang pasti untuk garis yang terletak lainnya berbeda sehingga membentuk seperti huruf S.
dipojok di angka 3 sangat minim, apakah itu garis lurus Dan pada tepi atas pada garis di tengah angka 3 dengan
atau mendatar yang akan bertetanggan dengan garis pada angka 3, tidak akan bisa diberikan garis karena akan bisa
pojok tersebut. membentuk tiga garis keluar pada satu titik.
Gambar 5 : Angka 3 yang terdapat di pojok Gambar 8 : Angka 3 yang bertetanggan dengan angka 3
Jika angka 2 dipojok, dua garis harus terletak di pinggir Jika angka 3 bertetanggan dengan angka 0 secara
setelah perbatasan sel persegi pada pojok. Karena diagonal, sisi yang bertemu dengan pojok pada angka 0
kemungkinan yang pasti dimanapun dua garis tepi yang harus diisi, jika tidak maka garis di pojok 0 akan terbuka
akan melewat angka 2 pasti akan keluar pada garis dan pasti akan melewati angka 0 tersebut. Hal ini
pinggir setelahnya. dikarenakan juga bahwa pada angka 3 hanya memilik satu
tepi terbuka, jadi jika berdekatan secara diagonal pasti
pojok yang berdekatan dengan garis yang tidak mungkin
dilalui akan dibentuk sebuah garis yang bertemu dipojok.
if(CariTitikAwal) {
ProsesTitik(sx, sy);
if(!Found && (A[si, sj] == [1,2]))
ProsesTitik(si+1, sj);
if(!Found && (A[si,sj]==1)
ProsesTitik(si, sj+1);
}
if(!Found)
printf(“Tidak ada Solusi”);
Gambar 11 : Dua angka 3 bertetanggan diagonal }
Sama dengan jika ada dua angka 3 pada diagonal yang Prosedur diatas menetapkan beberapa global parameter
sama tetapi dipisahkan dengan angka 2, jadi sisi tepi luar menggunakan fungsi SetParameters(). Kemudian
pada angka 3 harus diisi. dibaca data permasalahan Problem_NR menggunakan
fungsi PilihProblem(). Permainan ini didefinisikan oleh
jumlah sel horizontal, titik vertical, dan dua dimensi
integer matriks yang berisi jumlah dari sel. Temu
digunakan jika solusi ditemukan atau tidak, dan titik awal
(sx, sy) sebagai titik awal pencarian. Selanjutnya MAXM
dan MAXN didefinisikan untuk menyimpan maximal
jumlah titik.
#define MAXM = 30
#define MAXN = 30
#define true 1
Gambar 12 : Angka 2 ditengah angka 3 diagonal
int ok;
ok = true;
if((i<1)||(i>n+1)||(j>1)||(j>m+1)){
ok = false; }
if(TitikDalamPath[i,j]) {
ok = false; }
return ok;
}