<?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) {
if (!isset($this->data[$kata])) { return null;
}
$hasil = [];
foreach ($this->data as $kunci => $sinonimArray) {
if ($kunci != $kata && in_array($kata, $sinonimArray)) { $hasil[] = $kunci;
}
}
}
}
// Test
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
echo "Sinonim 'big': ";
print_r($kamus->ambilSinonim('big')); echo "\n";
echo "Sinonim 'huge': ";
print_r($kamus->ambilSinonim('huge')); echo "\n";
echo "Sinonim 'gigantic': ";
print_r($kamus->ambilSinonim('gigantic')); echo "\n";
echo "Sinonim 'colossal': ";
var_dump($kamus->ambilSinonim('colossal')); echo "\n";
?>
PD9waHAKCmNsYXNzIEthbXVzIHsKICAgIHByaXZhdGUgJGRhdGEgPSBbXTsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIHRhbWJhaCgka2F0YSwgJHNpbm9uaW0pIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWyRrYXRhXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmRhdGFbJGthdGFdID0gW107CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0aGlzLT5kYXRhWyRrYXRhXSA9IGFycmF5X21lcmdlKCR0aGlzLT5kYXRhWyRrYXRhXSwgJHNpbm9uaW0pOwogICAgICAgIAogICAgICAgICR0aGlzLT5kYXRhWyRrYXRhXSA9IGFycmF5X3VuaXF1ZSgkdGhpcy0+ZGF0YVska2F0YV0pOwogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gYW1iaWxTaW5vbmltKCRrYXRhKSB7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+ZGF0YVska2F0YV0pKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkaGFzaWwgPSBbXTsKICAgICAgICAKICAgICAgICAkaGFzaWwgPSBhcnJheV9tZXJnZSgkaGFzaWwsICR0aGlzLT5kYXRhWyRrYXRhXSk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRhdGEgYXMgJGt1bmNpID0+ICRzaW5vbmltQXJyYXkpIHsKICAgICAgICAgICAgaWYgKCRrdW5jaSAhPSAka2F0YSAmJiBpbl9hcnJheSgka2F0YSwgJHNpbm9uaW1BcnJheSkpIHsKICAgICAgICAgICAgICAgICRoYXNpbFtdID0gJGt1bmNpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiBhcnJheV91bmlxdWUoJGhhc2lsKTsKICAgIH0KfQoKLy8gVGVzdAoka2FtdXMgPSBuZXcgS2FtdXMoKTsKJGthbXVzLT50YW1iYWgoJ2JpZycsIFsnbGFyZ2UnLCAnZ3JlYXQnXSk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwoka2FtdXMtPnRhbWJhaCgnaHVnZScsIFsnZW5vcm1vdXMnLCAnZ2lnYW50aWMnXSk7CgplY2hvICJTaW5vbmltICdiaWcnOiAiOwpwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdiaWcnKSk7CmVjaG8gIlxuIjsKCmVjaG8gIlNpbm9uaW0gJ2h1Z2UnOiAiOwpwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdodWdlJykpOwplY2hvICJcbiI7CgplY2hvICJTaW5vbmltICdnaWdhbnRpYyc6ICI7CnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2dpZ2FudGljJykpOwplY2hvICJcbiI7CgplY2hvICJTaW5vbmltICdjb2xvc3NhbCc6ICI7CnZhcl9kdW1wKCRrYW11cy0+YW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTsKZWNobyAiXG4iOwoKPz4=