<?php
class Kamus {
private $data = [];
// Menambahkan kata dan sinonim-sinonimnya
public function tambah($kata, $sinonimArray) {
if (!isset($this->data[$kata])) { $this->data[$kata] = [];
}
foreach ($sinonimArray as $sinonim) {
if (!in_array($sinonim, $this->data[$kata])) { $this->data[$kata][] = $sinonim;
}
}
}
// Mengambil sinonim dari suatu kata
public function ambilSinonim($kata) {
if (isset($this->data[$kata])) { return $this->data[$kata];
}
// Jika kata bukan kunci utama, cek apakah dia muncul sebagai sinonim
foreach ($this->data as $k => $daftarSinonim) {
}
}
return null;
}
}
// Pengujian
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
// Uji hasil
print_r($kamus->ambilSinonim('big')); // ['large', 'great', 'huge', 'fat'] print_r($kamus->ambilSinonim('huge')); // ['big', 'large', 'great', 'huge', 'fat'] print_r($kamus->ambilSinonim('gigantic')); // ['huge', 'enormous', 'gigantic'] print_r($kamus->ambilSinonim('colossal')); // null
?>
PD9waHAKCmNsYXNzIEthbXVzIHsKICAgIHByaXZhdGUgJGRhdGEgPSBbXTsKCiAgICAvLyBNZW5hbWJhaGthbiBrYXRhIGRhbiBzaW5vbmltLXNpbm9uaW1ueWEKICAgIHB1YmxpYyBmdW5jdGlvbiB0YW1iYWgoJGthdGEsICRzaW5vbmltQXJyYXkpIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWyRrYXRhXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmRhdGFbJGthdGFdID0gW107CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkc2lub25pbUFycmF5IGFzICRzaW5vbmltKSB7CiAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJHNpbm9uaW0sICR0aGlzLT5kYXRhWyRrYXRhXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5kYXRhWyRrYXRhXVtdID0gJHNpbm9uaW07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gTWVuZ2FtYmlsIHNpbm9uaW0gZGFyaSBzdWF0dSBrYXRhCiAgICBwdWJsaWMgZnVuY3Rpb24gYW1iaWxTaW5vbmltKCRrYXRhKSB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5kYXRhWyRrYXRhXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWyRrYXRhXTsKICAgICAgICB9CgogICAgICAgIC8vIEppa2Ega2F0YSBidWthbiBrdW5jaSB1dGFtYSwgY2VrIGFwYWthaCBkaWEgbXVuY3VsIHNlYmFnYWkgc2lub25pbQogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kYXRhIGFzICRrID0+ICRkYWZ0YXJTaW5vbmltKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgka2F0YSwgJGRhZnRhclNpbm9uaW0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXlfbWVyZ2UoWyRrXSwgJHRoaXMtPmRhdGFbJGtdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9Cn0KCi8vIFBlbmd1amlhbgoka2FtdXMgPSBuZXcgS2FtdXMoKTsKCiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2xhcmdlJywgJ2dyZWF0J10pOwoka2FtdXMtPnRhbWJhaCgnYmlnJywgWydodWdlJywgJ2ZhdCddKTsKJGthbXVzLT50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwoKLy8gVWppIGhhc2lsCnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2JpZycpKTsgICAgICAgLy8gWydsYXJnZScsICdncmVhdCcsICdodWdlJywgJ2ZhdCddCnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2h1Z2UnKSk7ICAgICAgLy8gWydiaWcnLCAnbGFyZ2UnLCAnZ3JlYXQnLCAnaHVnZScsICdmYXQnXQpwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdnaWdhbnRpYycpKTsgIC8vIFsnaHVnZScsICdlbm9ybW91cycsICdnaWdhbnRpYyddCnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2NvbG9zc2FsJykpOyAgLy8gbnVsbAoKPz4K