<?php
class Kamus {
private $kamus = [];
public function tambah($kata, $sinonim) {
// Inisialisasi array untuk kata jika belum ada
if (!isset($this->kamus[$kata])) { $this->kamus[$kata] = [];
}
// Tambahkan sinonim ke kata utama
foreach ($sinonim as $sin) {
if (!in_array($sin, $this->kamus[$kata])) { $this->kamus[$kata][] = $sin;
}
}
foreach ($sinonim as $sin) {
if (!isset($this->kamus[$sin])) { $this->kamus[$sin] = [];
}
// Tambahkan kata utama ke sinonim jika belum ada
if (!in_array($kata, $this->kamus[$sin])) { $this->kamus[$sin][] = $kata;
}
}
}
// Mengambil sinonim dari kata yang diberikan
public function ambilSinonim($kata) {
if (isset($this->kamus[$kata])) { return $this->kamus[$kata];
}
return null;
}
}
$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";
?>
PD9waHAKCmNsYXNzIEthbXVzIHsKICAgIHByaXZhdGUgJGthbXVzID0gW107CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiB0YW1iYWgoJGthdGEsICRzaW5vbmltKSB7CiAgICAgICAgLy8gSW5pc2lhbGlzYXNpIGFycmF5IHVudHVrIGthdGEgamlrYSBiZWx1bSBhZGEKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5rYW11c1ska2F0YV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5rYW11c1ska2F0YV0gPSBbXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gVGFtYmFoa2FuIHNpbm9uaW0ga2Uga2F0YSB1dGFtYQogICAgICAgIGZvcmVhY2ggKCRzaW5vbmltIGFzICRzaW4pIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkc2luLCAkdGhpcy0+a2FtdXNbJGthdGFdKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmthbXVzWyRrYXRhXVtdID0gJHNpbjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBmb3JlYWNoICgkc2lub25pbSBhcyAkc2luKSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmthbXVzWyRzaW5dKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmthbXVzWyRzaW5dID0gW107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFRhbWJhaGthbiBrYXRhIHV0YW1hIGtlIHNpbm9uaW0gamlrYSBiZWx1bSBhZGEKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgka2F0YSwgJHRoaXMtPmthbXVzWyRzaW5dKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmthbXVzWyRzaW5dW10gPSAka2F0YTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gTWVuZ2FtYmlsIHNpbm9uaW0gZGFyaSBrYXRhIHlhbmcgZGliZXJpa2FuCiAgICBwdWJsaWMgZnVuY3Rpb24gYW1iaWxTaW5vbmltKCRrYXRhKSB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5rYW11c1ska2F0YV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+a2FtdXNbJGthdGFdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQoKJGthbXVzID0gbmV3IEthbXVzKCk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2xhcmdlJywgJ2dyZWF0J10pOwoka2FtdXMtPnRhbWJhaCgnYmlnJywgWydodWdlJywgJ2ZhdCddKTsKJGthbXVzLT50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwoKZWNobyAiU2lub25pbSAnYmlnJzogIjsKcHJpbnRfcigka2FtdXMtPmFtYmlsU2lub25pbSgnYmlnJykpOwplY2hvICJcbiI7CgplY2hvICJTaW5vbmltICdodWdlJzogIjsKcHJpbnRfcigka2FtdXMtPmFtYmlsU2lub25pbSgnaHVnZScpKTsKZWNobyAiXG4iOwoKZWNobyAiU2lub25pbSAnZ2lnYW50aWMnOiAiOwpwcmludF9yKCRrYW11cy0+YW1iaWxTaW5vbmltKCdnaWdhbnRpYycpKTsKZWNobyAiXG4iOwoKZWNobyAiU2lub25pbSAnY29sb3NzYWwnOiAiOwp2YXJfZHVtcCgka2FtdXMtPmFtYmlsU2lub25pbSgnY29sb3NzYWwnKSk7CmVjaG8gIlxuIjsKCj8+