ANALISIS PERMAINAN KATA MENGGUNAKAN ALGORITMA PEMROGRAMAN ANAGRAM DAN SUBANAGRAM OLEH : MUFADHOL Fakultas Teknologi Informasi dan Komunikasi Universitas Semarang [email protected], [email protected] ABSTRAK : Anagram adalah salah satu jenis permainan kata, huruf-huruf di kata awal biasa diacak. Anagram juga sering digunakan sebagai kode untuk penyandian pesan. Untuk menyelesaikan program anagram dan subanagram menggunakan strategi bruteforce atau exhaustive search. Tetapi tidak menggunakan bruteforce murni, dan yang digunakan adalah metode heuristic. Dalam program anagram dan subanagram sebuah kamus akan digunakan sebagai database. Untuk mempercepat proses pencocokan kata, bisa dilakukan dengan mengubah kamus. Adapun pengubahan yang dapat di lakukan yaitu dengan cara mengubah suatu kata menjadi terurut sesuai tanda baca dan abjad dalam ASCII. KATA KUNCI : Permainan Kata, Anagram, Subanagram, Algoritma. I. PENDAHULUAN Anagram adalah salah satu jenis permainan kata, huruf-huruf di kata awal biasa diacak yang dapat dibentuk dari kata lain dengan menggunakan seluruh huruf kata tersebut dan merubah urutan huruf-hurufnya untuk membentuk kata lain atau sebuah kalimat. Permainan yang menggunakan anagram antara lain adalah Scrabble dan Boggle. Dalam kedua permainan ini, pemain berusaha membentuk kata-kata dari huruf yang disediakan. Anagram juga sering digunakan sebagai kode untuk penyandian pesan, dalam buku karangan Dan Brown, the Da Vinci Code, anagram dipakai untuk menyampaikan pesan kematian. Pada pengolahan anagram dan subanagram, dilakukan penginputan dan akan dicari kata yang memiliki jumlah anagram dan subanagram paling banyak dan paling sedikit, maka yang dilakukan oleh aplikasi ialah menghitung dan membandingkan jumlah subanagram dan jumlah anagram dari masing-masing kata dan kemudian membandingkan mana yang maksimal dan mana yang minimal. Proses perbandingan dilakukan dari tiap kata terhadap tiap kata yang lain di kamus yang sama, maka akan dihasilkan output yang membutuhkan waktu pemrosesan yang sangat lama. Jika program anagram dan subanagram dijalankan lalu dengan memasukkan input nama seseorang, maka dapat diketahui ternyata seseorang tersebut baru menyadari bahwa dirinya bisa sangat tertarik melihat bagaimana namanya dapat membentuk kata lain dengan merubah urutannya. Hal ini juga merupakan salah satu dari sedikit hal yang dapat dilakukan komputer yang dapat menarik perhatian orang yang tidak mengerti dan tidak paham tentang komputer. II. METODE Untuk menyelesaikan program anagram dan subanagram menggunakan strategi bruteforce atau exhaustive search. Tetapi tidak menggunakan bruteforce murni, dan yang digunakan adalah metode heuristic. Heuristic yang dipakai yaitu dengan hanya memproses kata-kata dalam kamus yang memiliki panjang kata sama dengan (=) atau kurang (<) dengan kata yang dicari anagram dan subanagramnya, karena kata yang lebih panjang tidak mungkin merupakan anagram atau subanagram dari kata yang lebih pendek. Dalam program anagram dan subanagram sebuah kamus akan digunakan sebagai database kata-kata yang akan dijadikan acuan dalam menyelasikan persoalan anagram dan subanagram. Terdapat 3 persoalan yang harus dipecahkan 1) Mencari kata dalam kamus dimana kata tersebut merupakan kata yang memiliki anagram dan subanagram terbanyak. Jika dalam anagram menggunakan seluruh huruf dari kata yang dicari anagramnya, maka pada subanagram kita tidak harus menggunakan seluruh hurufnya. 2) Langkahnya sama seperti yang pertama, tetapi kali ini dengan mencari kata yang anagram dan sub anagramnya paling sedikit. 3) Jika diberikan inputan sebuah kata, maka program tersebut harus mampu mencari semua anagram dan subanagramnya di dalam kamus yang telah diberikan. Untuk mempercepat proses pencocokan kata, bisa dilakukan dengan mengubah kamus yang ada menjadi kamus baru yang format katanya gampang diproses. Adapun pengubahan yang dapat di lakukan ialah dengan cara mengubah suatu kata menjadi terurut huruf-hurufnya sesuai tanda baca dan abjad dalam ASCII. Contoh : kata “kakak”, diubah menjadi “aakkk”, lalu setelah itu kata yang sudah terurut menurut abjad ini direduksi dengan cara hanya mengambil huruf-huruf yang berbeda saja beserta jumlahnya, sehingga huruf yang sama, tidak perlu ditulis berulang-ulang. Sehingga “aakkk” tadi berubah menjadi “a2k3”.kemudian di depan kata tadi ditambahkan panjang (length) kata tersebut. Sehingga hasil akhirnya, kata “kakak” menjadi “5a2k3”. III. PEMBAHASAN Struktur data serta algoritma pemrograman merupakan algoritma yang umum, yaitu algoritma untuk pencarian anagram serta subanagram. Dengan format baru yaitu peringkasan kata, maka proses mencari anagram dan subanagram lebih gampang. Pertama untuk mencari angram dan subangram dari suatu kata, bisa dilakukan hanya dengan membandingkan angka di depan kata tersebut (bisa 1 atau 2 digit), dimana angka tersebut menunjukkan panjang kata. Bila panjang kata dalam kamus kurang dari atau sama dengan (<=) panjang kata yang dicari, maka proses dilanjutkan dengan mengecek karakter dan jumlah karakter selanjutnya. Syarat anagram dan subanagram adalah semua karakter pada kata kamus ada pada kata yang dicari anagramnya, dan jumlah per karakter (dalam format baru, karakter yang sama hanya ditulis 1 beserta jumlah kemunculannya) kata kamus tersebut kurang dari atau sama dengan (<=) dengan jumlah karakter kata yang dicari anagram dan subanagramnya. Tentu saja hal ini hanya bisa dilakukan dengan terlebih dahulu menyamakan format kata yang dicari anagram dan subanagramnya dengan format kata diatas ([ length kata] [char1] [ jumlah char1] [char2] [ jumlah char 2]). 1. Struktur Data Anagram dan Subanagram Pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, atau simbol. Berikut adalah algoritma untuk program anagram dan subanagram : Struktur data program ini merupakan data yang bertipe TextFile untuk pengolahan kata, sehingga disini digunakan file teks bantu untuk mencari anagram dan subanagram. Untuk mencari kata dalam kamus yang memiliki jumlah anagram serta subanagram jumlah maksimal, sehingga ditambahkan : Sedemikian rupa dengan prosedur untuk mencari kata yang memiliki anagram dan sub-anagram paling sedikit sama seperti mencari maksimal hanya saja statement “if (max<=count) then” diganti dengan statement “if (max>=count) then”. Melalui algoritma dan struktur data, solusi pada metode ini akan ditemukan dengan lebih cepat, karena memiliki kompleksitas yang jauh lebih rendah. Adapun metode pendekatan ini untuk seterusnya digunakan sebagai dasar logika dalam menemukan anagram maupun subanagram dari sebuah kata. 2. Algoritma Pemrograman Anagram dan Subanagram a. Prosedur untuk mengecek anagram b. Prosedur untuk mengecek subanagram 3. Hasil Pencarian Program Pada pengolahan anagram dan subanagram, dilakukan penginputan dan akan dicari kata yang memiliki jumlah anagram dan subanagram paling banyak dan paling sedikit, maka yang dilakukan oleh aplikasi yaitu menghitung dan membandingkan jumlah subanagram dijumlahkan dengan jumlah anagram dari masing-masing kata dan kemudian membandingkan mana yang maksimal dan mana yang minimal. Proses perbandingan dilakukan dari tiap kata terhadap tiap kata yang lain di kamus yang sama, maka akan dihasilkan output yang membutuhkan waktu pemrosesan yang sangat lama, bentuk optimasi hanya bisa dilakukan pada pemrosesan anagram dan subanagram saja. IV. KESIMPULAN Pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana. Pada pengolahan anagram dan subanagram, dilakukan penginputan dan akan dicari kata yang memiliki jumlah anagram dan subanagram paling banyak dan paling sedikit. Untuk menyelesaikan program anagram dan subanagram menggunakan strategi bruteforce atau exhaustive search. Tetapi tidak menggunakan bruteforce murni, dan yang digunakan adalah metode heuristic. Daftar Pustaka Antonie Pranata, 2000, Algoritma dan Pemrograman, J&J Learning, Yogyakarta. Bambang Wahyudi, 2004, Struktur Data dan Algoritma, Andi Offset, Yogyakarta. Dwi Sanjaya, 2001, Bertualang dengan Struktur Data di Planet Pascal, JJ Learning, Yogyakarta. Iwan Binanto, 2005, Konsep Bahasa Pemrograman, Andi Offset, Yogyakarta, Lihardo, Ranjaliba. S, 2006, Desain Analisis Algoritma Anagram dan SubAnagram, STT Telkom, Bandung. Rinaldi, Munir, 2003, Algoritma dan Pemrograman II, Informatika, Bandung. Santoso, Insap, P., 1997, Struktur Data dengan Turbo Pascal, Andi Offset, Yogyakarta.