Friday, March 25, 2016

[PHP] Anagram : Sukar - Kuras - Kasur - Rusak - Rasuk - Rakus

Sekarang saya sedang aktif membuat website kamus bahasa Indonesia berdasar KBBI. Website kamus bahasa Indonesia sendiri sudah cukup banyak sebenarnya, tapi kami merasa ada sejumlah fitur lebih yang masih dapat dilengkapi. Nah kira-kira fitur/nilai lebih apa yang bisa ditambahkan di dalam website kamus123.com ?

Sebelumnya sudah ditambahkan fitur palindrom di kamus123.com, untuk membuat daftar kata-kata palindrom bahasa Indonesia seperti makam, aba-aba, katak, kocok, kisik, minim, merem, madam dan seterusnya. Tentunya sederhana dengan menggunakan fungsi strrev pada PHP atau fungsi REVERSE pada mysql kita bisa mendapatkan kata yang dibalik.

Kemudian terpikir untuk membuat daftar anagram dari sebuah kata untuk membentuk kata yang lain. Logika sederhananya bagaimana bisa menyatakan kuras = rakus = sukar = rasuk.

1. Pertama harus dipenuhi syarat bahwa kuras = rakus kita harus dapat memastikan bahwa 2 kata tersebut terdiri dari huruf / memiliki susunan huruf yang sama. KURAS (K-U-R-A-S) dan SUKAR (S-U-K-A-R) , hal ini dapat dilakukan menggunakan fungsi str_split dari PHP untuk memecah string menjadi array karakter.

2. Kemudian membandingkan K-U-R-A-S dengan S-U-K-A-R atau dengan  R-A-S-U-K (rasuk), agar dapat dengan mudah dibandingkan. Setelah menjadi array karakter, kita olah array tersebut menjadi array yang urut berdasarkan karakternya. Menggunakan fungsi sort pada PHP , K-U-R-A-S  , S-U-K-A-R dan R-A-S-U-K menjadi A-K-R-S-U

3. Setelah mendapatkan hasil yang sama dapat kita simpan kembali sebagai string menggunakan fungsi populer implode di PHP untuk mengubah array menjadi string.

Oke kita peroleh susunan huruf yang urut untuk setiap kata.

Kurang lebih begini fungsinya dalam PHP

// membuat susunan karakter urut dari sebuah kata
// return value: string
function buat_urutan_karakter($kata){
   // hilangkan karakter non alfanumerik
    $kata = preg_replace("/[^A-Za-z0-9]/", '', $kata);
    $arr_karakter = str_split($kata);
    sort($arr_karakter);
    return implode('-',$arr_karakter);
}

Cukup menarik, ternyata ada sebuah susunan huruf di dalam kamus bahasa Indonesia yang dapat diutak-atik lebih banyak dari susunan  A-K-R-S-U yang hanya bisa menjadi 7 buah kata yaitu : kasur-rusak-rakus-sukar-rasuk-saruk-kuras.

Misal susunan huruf a-i-k-l, dapat menjadi kata: akil, akli, alik, ikal, ilak, kail, kali, kial, kila, laik, laki. Ada 11 kombinasi kata yang dapat diperoleh. Mungkin memang beberapa kata-katanya kurang familiar kita dengar atau gunakan. Tapi itulah kekayaan bahasa kita, untuk mengetahui arti katanya dapat dilihat di kamus123.com, misal arti kata akli atau arti kata kial dan laik.

Dan tentu saja masih banyak susunan huruf lainnya dari kata dalam bahasa Indonesia yang dapat digunakan sebagai anagram untuk kata lainnya. Mungkin itu dulu share saya, sesuai pesan guru bahasa Indonesia saya dulu, "gunakanlah bahasa Indonesia yang baik dan benar" hehe.

 

No comments: