Anda di halaman 1dari 4

PENYELESAIAN PERMASALAHAN NONOGRAM

DENGAN VISUAL PROLOG


Prayoga Bagas Ariya Wibawa1, Riri Nada Devita2, Romy Azzam Ananta3, Sherly Allsa Siregar4
1405356056561, 1405356048442, 1405356058783, 1405356049124
Program Studi Teknik Informatika
Fakultas Teknik
Universitas Negeri Malang, Jl. Semarang 5 Malang 65145, Indonesia
prayogabagasaw@gmail.com1, ririnadadevita@gmail.com2, romyazzam@gmail.com3,
sherlyallsasiregar@gmail.com4

Abstract Game berasal dari bahasa Inggris. Dalam


kamus bahasa Indonesia Game adalah permainan.
Sebuah permainan adalah sebuah sistem dimana pemain
terlibat dalam konflik buatan. Banyak orang berkeyakinan
bahwa game mempunyai dampak negatif bagi anak-anak.
Tetapi tidak semua game negatif. Ada beberapa game yang
bersifat edukatif serta membantu anak-anak belajar
banyak hal. Salah satu game yang bersifat edukatif adalah
nonogram. Game ini tidak begitu populer dikalangan
masyarakat, sehingga sedikit orang yang berminat untuk
mengembangkan game ini. Untuk itulah penulis
mengusulkan
judul
Penyelesaian
Permasalahan
Nonogram Dengan Visual Prolog. Visual prolog
merupakan algoritma backtracking, yanng menggunakan
teknik pencarian yang disebut heuristik (heuristic) dengan
menggunakan metode pohon logika agar solusi cepat
ditemukkan. Diharapkan dengan adanya algoritma ini
game nonogram dapat lebih dikenal secara luas oleh
masyarakat dan dapat membantu penyelesaian game
nonogram secara cepat dan mudah.
Keywords Game, Nonogram, Visual Prolog.

I. PENDAHULUAN
Game berasal dari bahasa Inggris. Dalam kamus bahasa
Indonesia Game adalah permainan. Sebuah permainan
adalah sebuah sistem dimana pemain terlibat dalam konflik
buatan. Dalam permainan terdapat peraturan yang bertujuan
untuk membatasi perilaku pemain dan menentukan permainan.
Permainan dalam hal ini merujuk pada pengertian kelincahan
intelektual (Intellectual Playability Game) yang juga bisa
diartikan sebagai arena keputusan dan aksi pemainnya [1].
Perdebatan terkait pro kontra pengaruh game terhadap
perkembangan anak-anak memang tak pernah ada habisnya.
Banyak orang berkeyakinan bahwa game mempunyai dampak
negatif bagi anak-anak. Hal itu memang benar, sebab ada
beberapa game yang tidak cocok untuk dimainkan anak-anak
dan cenderung mengajarkan kekerasan. Tetapi jika kita melihat
dengan pikiran terbuka, tidak semua game negatif. Ada
beberapa game yang bersifat edukatif serta membantu anakanak belajar banyak hal, diantaranya bahasa asing,
perencanaan / strategi, berhitung, dan sebagainya.
Salah satu game yang bersifat edukatif adalah nonogram.

Game nonogram adalah sebuah permainan teka-teki sederhana


dari Jepang. Dahulu permainan nonogram disajikan pada
selembaran kertas seperti halnya teka-teki silang. Namun, pada
kenyataannya game ini tidak begitu populer dikalangan
masyarakat, sehingga sedikit orang yang berminat untuk
mengembangkan game ini. Untuk itulah penulis tertarik
membuat suatu algoritma untuk menyelesaikan permainan
nonogram ini. Metode yang dirancang adalah dengan
memanfaatkan algoritma backtracking visual prolog, karena
algoritma ini menggunakan teknik pencarian yang disebut
heuristik (heuristic) dengan menggunakan metode pohon
logika agar solusi cepat ditemukkan.
Dari uraian diatas penulis mengusulkan judul Penyelesaian
Permasalahan Nonogram Dengan Visual Prolog untuk
mengembangkan game nonogram. Diharapkan dengan adanya
algoritma ini game nonogram dapat lebih dikenal secara luas
oleh masyarakat dan dapat membantu penyelesaian game
nonogram secara cepat dan mudah.

II. NONOGRAMS
Permainan nonogram diciptakan pada tahun 1987 oleh
Tetsuya Nishio, dan dikenal dengan berbagai nama, antara lain:
griddler (grid riddle), pixel puzzles, dan paint by numbers.
Pada sebuah puzzle nonogram, terdapat sebuah matriks dua
dimensi, dan setiap sel dapat diwarnai atau dibiarkan kosong
berdasarkan sequence bilangan-bilangan sebagai clue
yang tertera di sekeliling matriks tersebut. Bilanganbilangan tersebut menyatakan kelompok sel berwarna yang
harus berada pada sebuah baris atau kolom.
Contohnya, jika sebuah baris memiliki clue [3 1 2],
maka pada baris tersebut harus terdapat sebuah kelompok yang
terdiri dari 3 sel berwarna, diikuti oleh sebuah kelompok
yang terdiri dari 1 sel berwarna, dan diakhiri dengan
sebuah kelompok yang terdiri dari 2 sel berwarna. Masingmasing kelompok harus dipisah oleh sekurangnya sebuah sel
yang kosong. Biasanya, sebuah puzzle nonogram hanya
memiliki sebuah solusi unik yang sesuai dengan semua
clue yang diberikan. Jika semua sel telah ditentukan diisi
warna atau kosong, maka solusi berupa sebuah gambar yang
muncul pada matriks tersebut. Jadi inti dari permainan ini
adalah menentukan sel mana saja dalam matrik yang akan
diwarnai berdasarkan petunjuk bilangan-bilangan yang
diberikan di sekitar matrik. Sehingga kumpulan piksel

tersebut akan membentuk sebuah gambar, yang ditunjukkan


pada Gambar 1.

Gambar 1. Contoh permasalahan nonogram


Gambar di atas adalah salah satu contoh sederhanna dari
persoalan nonogram. Terlihat terdapat matrik utama berukuran
5x5. Sel-sel di matrik ini lah yang akan dihadapi pemain.
Yakni tiap sel harus ditentukan, diwarnai atau tidak. Petunjuk
yang diberikan adalah angka-angka di sekitar matrik tersebut.
Dari petunjuk tersebut, solusi yang diharapkan ditunjukkan
pada Gambar 2:

pemrograman yang lain, yang menggunakan algoritma


konvensional sebagai teknik pencariannya seperti pada
Delphi, Pascal, BASIC, COBOL dan bahasa pemrograman
yang sejenisnya, maka prolog menggunakan teknik
pencarian yang di sebut heuristik (heutistic) dengan
menggunakan
pohon
logika. Visual prolog dapat
menyelesaikan permasalahan
secara
deduktif
atau
menurunkan kesimpulan sebagai jawaban berdasarkan fakta
(fact) dan aturan (rule) dengan pencarian dari atas ke bawah
[3]. Perbedaan bahasa pemogramam umum dan bahasa
pemograman prolog ditunjukkan pada Tabel 1.
Tabel 1. Perbedaan bahasa pemograman prolog dan bahasa
pemograman umum [3].
Bahasa Pemograman
Bahasa Pemograman
Umum
Prolog
Algoritma / prosedur
untuk
memecahkan
masalah
(procedural
languange)

Object
oriented
languange
atau
declarative language

Program
menjalankan
prosedur yang sama
berulang-ulang dengan
data
masukan
yang
berbeda-beda

Tidak terdapat prosedur,


tetapi hanya kumpulan
data-dataobjek
(fakta)
yang akan diolah, dan
relasi
antar objek
tersebut
membentuk
aturan yang diperlukan
untuk mencari suatu
jawaban

Prosedur
dan
pengendalian
program
ditentukan
oleh
programmer
dan
perhitungan dilakukan
sesuai dengan prosedur
yang telah dibuat

Programmer
menentukan
tujuan
(goal), dan komputer
menentukan bagaimana
caramencapai
tujuan
tersebut serta mencari
jawabannya

Gambar 2. Contoh solusi permasalahan nonogram


Terlihat bahwa angka-angka petunjuk dalam suatu
baris/kolom menyatakan banyaknya sel di tiap-tiap
kelompok yang dipisahkan oleh sel kosong. Lebih jelasnya,
perhatikan Gambar 3:

IV. METODE LOGIKA


Gambar 3. Arti dari angka-angka petunjuk
Setelah menyelesaikan game tersebut, maka akan terbentuk
suatu gambar yang terdiri dari sel-sel yang diwarnai [2].

III. VISUAL PROLOG


Visual Prolog adalah bahasa pemrograman logika atau di
sebut juga sebagai bahasa non-procedural. Namanya
diambil dari bahasa Perancis programmation enlogique
(Pemrograman logika). Bahasa ini diciptakan oleh Alain
Colmerauer dan Robert Kowalski sekitar tahun 1972 dalam
upaya untuk menciptakan suatu bahasa pemrograman yang
memungkinkan pernyataan logika alih-alih rangkaian
perintah untuk dijalankan komputer. Berbeda dengan bahasa

Metode perancangan algoritma yang digunakan dalam


penelitian
ini adalah dengan
menggunakan
model
flowchart.
Flowchart didefinisikan sebagai skema penggambaran dari
algoritma atau proses [4]. Adapun flowchart dari algoritma
yang akan dibuat, ditunjukkan pada Gambar 4.

Implementasi basic idea 1:


make_rectangle(NRows,NCols,Rows,Cols) :Array persegi dari tiap variabel dengan baris NRow dan
kolom NCols telah di generate. Variabel tersebut dapat di
aksaes melalui list Row maupun list Cols. Misalnya variable
row 1 dan column 2 dapat di akses sebagai Rows list [[_,X|_]|
_] atau sebagai Cols list [_,[X|_]|_].
Implementasi basic idea 2:
make_runs(RunLens,Runs) :Runs adalah list dari character-lists yang sesuai dengan run
yang diberiikan RunLens. Sebenarnya, setiap run merupakan
list yang berbeda, misalnya ['x','x'|T]-T.
make_runs2(RunLens,Runs) :sama seperti make_runs hanya saja make_runs dimulai dari
(karakter spasi).
Gambar 4. Flowchart visual prolog

V. HASIL DAN PEMBAHASAN


Algoritma:
1.

2.

3.

Setiap kotak merupakan suatu baris dan kolom


yang di anggap sebagai suatu variable yang dapat di
akses baik melalui baris maupun melalui kolom
yang bertujuan untuk menginisiasi setiap kotak
dengan x atau (sapasi).
Perlakukan setiap kotak dengan cara yang sama ,
cek setiap kemungkinan pada tiap lines, misalnya
kita harus meletakkan 3 X pada suatu lines yang
berisi 8 kotak, maka terdapat 6 kemungkinan.
Pada prinsipnya setiap kemungkinan pada tiap lines
harus dicoba , namun karena kita hanya butuh 1
solusi, maka akan lebih menguntungkan jika kita
sekali
mencoba
lines
dengan
beberapa
kemungkinan.

place_runs(Runs,Line) :Runs adalah list dari runs, yang masing-masing merupakan


list karakter yang berbeda. Line merupakan list karakter. Tiap
runs akan di letakkan pada Line, yang secara opsional
dipisahkan oleh karakter spasi. Setiap kemungkinan akan di
generate dengan cara melakukan backtracking. Ditunjukkan
pada Gambar 4.
Implementasi basic idea 3:
Ide ketiga adalah optimasi. Optimasi dilakukan dengan cara
melakukan order berdasarkan cara tercepat atau yang paling
menguntungkan. Ini dilakukan dengan predikat Optimize.
optimize(LineTasks,LineTasksOpt).
Setelah langkah-langkah di atas yang terakhir adalah
mencetak solusi, yang ditunjukkan pada Gambar 5.

Penjelasan Program:
nonogram(RowNums,ColNums,Solution,Opt) :Sintaks diatas digunakan untuk memberika spesifikasi dari
masing-masing baris dan kolom di RowNums dan ColNums,
puzzle diselesaikan dengan Solution, yang merupakan
representasi row-by-row puzzle yang telah diisi. Opt = 0 adalah
tanpa optimasi, sedangkan opt = 1 mengoptimalkan urutan
task line.

Gambar 5. Solusi Nonogram

VI. KESIMPULAN
Dari pembahasan di bab-bab sebelumnya, terlihat bahwa
permainan nonogram/griddles cukup menarik dan dapat
mengasah daya logika. Karena memang permainan ini
tergolong masalah NP-complete sehingga harus dibuat suatu
algoritma secepat, semudah dan setepat mungkin untuk
penyelesaiannya.
Penyelesaian biasa dengan algoritma brute force cukup
boros karena kompleksitasnya O(2 ). Salah satu alternatif
yaitu menggunakan algoritma runut balik (backtracking) yang
memberikan kompleksitas O(MN). Karena Visual prolog
merupakan algoritma backtracking, yang menggunakan teknik
pencarian yang disebut heuristik (heuristic) dengan
menggunakan metode pohon logika maka implementasinya
untuk menemukan solusi nonograms lebih mudah.
MN

REFERENSI
[1]
[2]
[3]
[4]

M. Rosidi Zamroni, Nizar Suryaman, Ahmad Jalaluddin. 2013. Rancang


Bangun Aplikasi Permainan Untuk Pembelajaran Anak Menggunakan
HTML 5. Universitas Islam Lamongan. Vol. 5 No.2 September 2013.
Choiri, Hendra Hadhil. 2011. Penyelesaian Permasalahan Nonogram
dengan Algoritma Runut Balik. Institut Teknologi Bandung.
Kurniawan, Citra. 2013. Implementasi Artificial Intelligence dalam
Penyelesaian Masalah dengan Metode Unification Dan Back Tracking
Visual Prolog. Sekolah Tinggi Teknik Malang.
Ananda, Dahliar., Ahmad Suryan, Paramita Mayadewi, Lutce Rasiana,
Hendra Kusmayadi. 2009. Algoritma dan Pemrograman. Politeknik
Telkom Bandung.

Anda mungkin juga menyukai