<?php
class Kamus {
private $data = [];
public function tambah
(string
$kata, array $sinonim): void
{ if (!isset($this->data[$kata])) { $this->data[$kata] = [];
}
// menambahkan hubungan dua arah
foreach ($sinonim as $s) {
if (!isset($this->data[$s])) { $this->data[$s] = [];
}
$this->data[$s][] = $kata;
}
}
public function ambilSinonim
(string
$kata): array { return $this->data[$kata] ?? [];
}
public function tampilkanSemua(): void {
foreach ($this->data as $kata => $sinonim) {
echo "Sinonim dari '$kata':\n";
echo "\n";
}
}
}
// Contoh data awal kamus
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great', 'huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic', 'massive']);
$kamus->tambah('gigantic', ['enormous', 'massive']);
$kamus->tambah('smart', ['intelligent', 'clever', 'bright', 'brilliant']);
$kamus->tambah('happy', ['joyful', 'cheerful', 'content', 'pleased']);
$kamus->tambah('sad', ['unhappy', 'sorrowful', 'depressed', 'melancholy']);
$kamus->tambah('fast', ['quick', 'rapid', 'speedy', 'swift']);
$kamus->tambah('slow', ['sluggish', 'unhurried', 'lethargic', 'lagging']);
$kamus->tambah('beautiful', ['pretty', 'lovely', 'gorgeous', 'attractive']);
$kamus->tambah('angry', ['mad', 'furious', 'irate', 'livid']);
//contoh program eksekusi
echo "Masukkan kata yang ingin dicari sinonimnya (atau kosongkan input untuk menampilkan semuanya): \n";
//JIKA INPUT KOSONG MAKA AKAN MENAMPILKAN SELURUH ENTRI DALAM KAMUS
if ($input === '') {
echo "\nMenampilkan semua entri dalam kamus:\n\n";
$kamus->tampilkanSemua();
} else {
$hasil = $kamus->ambilSinonim($input);
echo "Sinonim dari '$input':\n";
echo null;
} else {
}
}
PD9waHAKCmNsYXNzIEthbXVzIHsKICAgIHByaXZhdGUgJGRhdGEgPSBbXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gdGFtYmFoKHN0cmluZyAka2F0YSwgYXJyYXkgJHNpbm9uaW0pOiB2b2lkIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWyRrYXRhXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmRhdGFbJGthdGFdID0gW107CiAgICAgICAgfQogICAgICAgICR0aGlzLT5kYXRhWyRrYXRhXSA9IGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgkdGhpcy0+ZGF0YVska2F0YV0sICRzaW5vbmltKSk7CgogICAgICAgIC8vIG1lbmFtYmFoa2FuIGh1YnVuZ2FuIGR1YSBhcmFoCiAgICAgICAgZm9yZWFjaCAoJHNpbm9uaW0gYXMgJHMpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+ZGF0YVskc10pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZGF0YVskc10gPSBbXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+ZGF0YVskc11bXSA9ICRrYXRhOwogICAgICAgICAgICAkdGhpcy0+ZGF0YVskc10gPSBhcnJheV91bmlxdWUoJHRoaXMtPmRhdGFbJHNdKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFtYmlsU2lub25pbShzdHJpbmcgJGthdGEpOiBhcnJheSB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWyRrYXRhXSA/PyBbXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGFtcGlsa2FuU2VtdWEoKTogdm9pZCB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRhdGEgYXMgJGthdGEgPT4gJHNpbm9uaW0pIHsKICAgICAgICAgICAgZWNobyAiU2lub25pbSBkYXJpICcka2F0YSc6XG4iOwogICAgICAgICAgICBwcmludF9yKCRzaW5vbmltKTsKICAgICAgICAgICAgZWNobyAiXG4iOwogICAgICAgIH0KICAgIH0KfQoKLy8gQ29udG9oIGRhdGEgYXdhbCBrYW11cwoka2FtdXMgPSBuZXcgS2FtdXMoKTsKJGthbXVzLT50YW1iYWgoJ2JpZycsIFsnbGFyZ2UnLCAnZ3JlYXQnLCAnaHVnZScsICdmYXQnXSk7CiRrYW11cy0+dGFtYmFoKCdodWdlJywgWydlbm9ybW91cycsICdnaWdhbnRpYycsICdtYXNzaXZlJ10pOwoka2FtdXMtPnRhbWJhaCgnZ2lnYW50aWMnLCBbJ2Vub3Jtb3VzJywgJ21hc3NpdmUnXSk7CiRrYW11cy0+dGFtYmFoKCdzbWFydCcsIFsnaW50ZWxsaWdlbnQnLCAnY2xldmVyJywgJ2JyaWdodCcsICdicmlsbGlhbnQnXSk7CiRrYW11cy0+dGFtYmFoKCdoYXBweScsIFsnam95ZnVsJywgJ2NoZWVyZnVsJywgJ2NvbnRlbnQnLCAncGxlYXNlZCddKTsKJGthbXVzLT50YW1iYWgoJ3NhZCcsIFsndW5oYXBweScsICdzb3Jyb3dmdWwnLCAnZGVwcmVzc2VkJywgJ21lbGFuY2hvbHknXSk7CiRrYW11cy0+dGFtYmFoKCdmYXN0JywgWydxdWljaycsICdyYXBpZCcsICdzcGVlZHknLCAnc3dpZnQnXSk7CiRrYW11cy0+dGFtYmFoKCdzbG93JywgWydzbHVnZ2lzaCcsICd1bmh1cnJpZWQnLCAnbGV0aGFyZ2ljJywgJ2xhZ2dpbmcnXSk7CiRrYW11cy0+dGFtYmFoKCdiZWF1dGlmdWwnLCBbJ3ByZXR0eScsICdsb3ZlbHknLCAnZ29yZ2VvdXMnLCAnYXR0cmFjdGl2ZSddKTsKJGthbXVzLT50YW1iYWgoJ2FuZ3J5JywgWydtYWQnLCAnZnVyaW91cycsICdpcmF0ZScsICdsaXZpZCddKTsKCgovL2NvbnRvaCBwcm9ncmFtIGVrc2VrdXNpCmVjaG8gIk1hc3Vra2FuIGthdGEgeWFuZyBpbmdpbiBkaWNhcmkgc2lub25pbW55YSAoYXRhdSBrb3NvbmdrYW4gaW5wdXQgdW50dWsgbWVuYW1waWxrYW4gc2VtdWFueWEpOiBcbiI7Ci8vSklLQSBJTlBVVCBLT1NPTkcgTUFLQSBBS0FOIE1FTkFNUElMS0FOIFNFTFVSVUggRU5UUkkgREFMQU0gS0FNVVMKJGlucHV0ID0gdHJpbShmZ2V0cyhTVERJTikpOwoKaWYgKCRpbnB1dCA9PT0gJycpIHsKICAgIGVjaG8gIlxuTWVuYW1waWxrYW4gc2VtdWEgZW50cmkgZGFsYW0ga2FtdXM6XG5cbiI7CiAgICAka2FtdXMtPnRhbXBpbGthblNlbXVhKCk7Cn0gZWxzZSB7CiAgICAkaGFzaWwgPSAka2FtdXMtPmFtYmlsU2lub25pbSgkaW5wdXQpOwogICAgZWNobyAiU2lub25pbSBkYXJpICckaW5wdXQnOlxuIjsKICAgIGlmIChlbXB0eSgkaGFzaWwpKSB7CiAgICAgICAgZWNobyBudWxsOwogICAgfSBlbHNlIHsKICAgICAgICBwcmludF9yKCRoYXNpbCk7CiAgICB9Cn0K