// Lusi Alifatul Laila
<?php
class Kamus {
private $data = [];
public function tambah($kata, $sinonim) {
if (!isset($this->data[$kata])) { $this->data[$kata] = [];
}
$this->data[$kata] = array_merge($this->data[$kata], $sinonim); }
public function ambilSinonim($kata) {
// Cari semua sinonim langsung
$result = isset($this->data[$kata]) ?
$this->data[$kata] : [];
// Cari kata-kata lain yang memiliki $kata sebagai sinonim
foreach ($this->data as $k => $sinonim) {
$result[] = $k;
}
}
// Tambahkan kata itu sendiri jika ada kata lain yang memilikinya sebagai sinonim
}
}
}
// Test cases
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
print_r($kamus->ambilSinonim('big')); // ['large', 'great', 'huge', 'fat'] print_r($kamus->ambilSinonim('huge')); // ['big', 'enormous', 'gigantic'] print_r($kamus->ambilSinonim('gigantic')); // ['huge'] print_r($kamus->ambilSinonim('colossal')); // null ?>
Ly8gTHVzaSBBbGlmYXR1bCBMYWlsYQoKPD9waHAKY2xhc3MgS2FtdXMgewogICAgcHJpdmF0ZSAkZGF0YSA9IFtdOwogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gdGFtYmFoKCRrYXRhLCAkc2lub25pbSkgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmRhdGFbJGthdGFdKSkgewogICAgICAgICAgICAkdGhpcy0+ZGF0YVska2F0YV0gPSBbXTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmRhdGFbJGthdGFdID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmRhdGFbJGthdGFdLCAkc2lub25pbSk7CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBhbWJpbFNpbm9uaW0oJGthdGEpIHsKICAgICAgICAvLyBDYXJpIHNlbXVhIHNpbm9uaW0gbGFuZ3N1bmcKICAgICAgICAkcmVzdWx0ID0gaXNzZXQoJHRoaXMtPmRhdGFbJGthdGFdKSA/ICR0aGlzLT5kYXRhWyRrYXRhXSA6IFtdOwogICAgICAgIAogICAgICAgIC8vIENhcmkga2F0YS1rYXRhIGxhaW4geWFuZyBtZW1pbGlraSAka2F0YSBzZWJhZ2FpIHNpbm9uaW0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZGF0YSBhcyAkayA9PiAkc2lub25pbSkgewogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJGthdGEsICRzaW5vbmltKSkgewogICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJGs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gVGFtYmFoa2FuIGthdGEgaXR1IHNlbmRpcmkgamlrYSBhZGEga2F0YSBsYWluIHlhbmcgbWVtaWxpa2lueWEgc2ViYWdhaSBzaW5vbmltCiAgICAgICAgaWYgKGNvdW50KCRyZXN1bHQpID4gMCAmJiAhaW5fYXJyYXkoJGthdGEsICRyZXN1bHQpKSB7CiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHJlc3VsdCwgJGthdGEpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gY291bnQoJHJlc3VsdCkgPiAwID8gYXJyYXlfdW5pcXVlKCRyZXN1bHQpIDogbnVsbDsKICAgIH0KfQoKLy8gVGVzdCBjYXNlcwoka2FtdXMgPSBuZXcgS2FtdXMoKTsKJGthbXVzLT50YW1iYWgoJ2JpZycsIFsnbGFyZ2UnLCAnZ3JlYXQnXSk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwoka2FtdXMtPnRhbWJhaCgnaHVnZScsIFsnZW5vcm1vdXMnLCAnZ2lnYW50aWMnXSk7CgpwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdiaWcnKSk7ICAgICAgLy8gWydsYXJnZScsICdncmVhdCcsICdodWdlJywgJ2ZhdCddCnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2h1Z2UnKSk7ICAgICAvLyBbJ2JpZycsICdlbm9ybW91cycsICdnaWdhbnRpYyddCnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2dpZ2FudGljJykpOyAvLyBbJ2h1Z2UnXQpwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTsgLy8gbnVsbAo/Pg==