<?php
class Kamus
{
private $data = [];
public function tambah
(string
$kata, array $sinonim): void
{
if (!isset($this->data[$kata])) { $this->data[$kata] = [];
}
foreach ($sinonim as $s) {
if (!in_array($s, $this->data[$kata])) { $this->data[$kata][] = $s;
}
}
}
public function ambilSinonim
(string
$kata): ?
array {
if (isset($this->data[$kata])) { return $this->data[$kata];
}
foreach ($this->data as $kunci => $daftarSinonim) {
}
}
return null;
}
}
$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'));
PD9waHAKCmNsYXNzIEthbXVzCnsKICAgIHByaXZhdGUgJGRhdGEgPSBbXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gdGFtYmFoKHN0cmluZyAka2F0YSwgYXJyYXkgJHNpbm9uaW0pOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+ZGF0YVska2F0YV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5kYXRhWyRrYXRhXSA9IFtdOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHNpbm9uaW0gYXMgJHMpIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkcywgJHRoaXMtPmRhdGFbJGthdGFdKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmRhdGFbJGthdGFdW10gPSAkczsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYW1iaWxTaW5vbmltKHN0cmluZyAka2F0YSk6ID9hcnJheQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+ZGF0YVska2F0YV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVska2F0YV07CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZGF0YSBhcyAka3VuY2kgPT4gJGRhZnRhclNpbm9uaW0pIHsKICAgICAgICAgICAgaWYgKGluX2FycmF5KCRrYXRhLCAkZGFmdGFyU2lub25pbSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheV9tZXJnZShbJGt1bmNpXSwgJHRoaXMtPmRhdGFbJGt1bmNpXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9Cgoka2FtdXMgPSBuZXcgS2FtdXMoKTsKJGthbXVzLT50YW1iYWgoJ2JpZycsIFsnbGFyZ2UnLCAnZ3JlYXQnXSk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwoka2FtdXMtPnRhbWJhaCgnaHVnZScsIFsnZW5vcm1vdXMnLCAnZ2lnYW50aWMnXSk7CgpwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdiaWcnKSk7CnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2h1Z2UnKSk7CnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2dpZ2FudGljJykpOwpwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTsK