<?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) {
// Jika kata adalah kunci utama, kembalikan langsung sinonimnya
if (isset($this->data[$kata])) { return $this->data[$kata];
}
// Jika kata hanya muncul sebagai sinonim dari kata lain
foreach ($this->data as $kunci => $daftarSinonim) {
return [$kunci]; // hanya tampilkan kunci utamanya
}
}
return null;
}
}
// Pengujian
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
print_r($kamus->ambilSinonim('big')); print_r($kamus->ambilSinonim('huge')); print_r($kamus->ambilSinonim('gigantic')); print_r($kamus->ambilSinonim('colossal'));
?>
PD9waHAKCmNsYXNzIEthbXVzIHsKICAgIHByaXZhdGUgJGRhdGEgPSBbXTsKCiAgICAvLyBNZW5hbWJhaGthbiBrYXRhIGRhbiBzaW5vbmltLXNpbm9uaW1ueWEKICAgIHB1YmxpYyBmdW5jdGlvbiB0YW1iYWgoJGthdGEsICRzaW5vbmltQXJyYXkpIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWyRrYXRhXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmRhdGFbJGthdGFdID0gW107CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkc2lub25pbUFycmF5IGFzICRzaW5vbmltKSB7CiAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJHNpbm9uaW0sICR0aGlzLT5kYXRhWyRrYXRhXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5kYXRhWyRrYXRhXVtdID0gJHNpbm9uaW07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gTWVuZ2FtYmlsIHNpbm9uaW0gZGFyaSBzdWF0dSBrYXRhCiAgICBwdWJsaWMgZnVuY3Rpb24gYW1iaWxTaW5vbmltKCRrYXRhKSB7CiAgICAgICAgLy8gSmlrYSBrYXRhIGFkYWxhaCBrdW5jaSB1dGFtYSwga2VtYmFsaWthbiBsYW5nc3VuZyBzaW5vbmltbnlhCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5kYXRhWyRrYXRhXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWyRrYXRhXTsKICAgICAgICB9CgogICAgICAgIC8vIEppa2Ega2F0YSBoYW55YSBtdW5jdWwgc2ViYWdhaSBzaW5vbmltIGRhcmkga2F0YSBsYWluCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRhdGEgYXMgJGt1bmNpID0+ICRkYWZ0YXJTaW5vbmltKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgka2F0YSwgJGRhZnRhclNpbm9uaW0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gWyRrdW5jaV07IC8vIGhhbnlhIHRhbXBpbGthbiBrdW5jaSB1dGFtYW55YQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQoKLy8gUGVuZ3VqaWFuCiRrYW11cyA9IG5ldyBLYW11cygpOwoKJGthbXVzLT50YW1iYWgoJ2JpZycsIFsnbGFyZ2UnLCAnZ3JlYXQnXSk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwoka2FtdXMtPnRhbWJhaCgnaHVnZScsIFsnZW5vcm1vdXMnLCAnZ2lnYW50aWMnXSk7CgpwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdiaWcnKSk7ICAgICAgIApwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdodWdlJykpOyAgICAgIApwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdnaWdhbnRpYycpKTsgIApwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTsgIAoKPz4K