<?php
class Kamus {
private $kamus = [];
public function tambah($kata, $sinonim) {
// Jika kata sudah ada, gabungkan sinonim baru dengan yang lama
if (isset($this->kamus[$kata])) { $this->kamus[$kata] = array_merge($this->kamus[$kata], $sinonim); // Hapus duplikat
} else {
$this->kamus[$kata] = $sinonim;
}
}
public function ambilSinonim($kata) {
$hasil = [];
// Jika kata ada di kamus, ambil sinonimnya
if (isset($this->kamus[$kata])) { }
// Cari kata lain yang memiliki kata ini sebagai sinonim
foreach ($this->kamus as $kataLain => $sinonimArray) {
$hasil[] = $kataLain;
}
}
// Hapus duplikat dan kembalikan hasil
// Jika tidak ada hasil, kembalikan null
return null;
}
}
}
// Testing sesuai contoh
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
echo "Testing ambilSinonim('big'):\n";
print_r($kamus->ambilSinonim('big')); echo "\n";
echo "Testing ambilSinonim('huge'):\n";
print_r($kamus->ambilSinonim('huge')); echo "\n";
echo "Testing ambilSinonim('gigantic'):\n";
print_r($kamus->ambilSinonim('gigantic')); echo "\n";
echo "Testing ambilSinonim('colossal'):\n";
var_dump($kamus->ambilSinonim('colossal')); echo "\n";
?><?php
// your code goes here
PD9waHAKCmNsYXNzIEthbXVzIHsKICAgIHByaXZhdGUgJGthbXVzID0gW107CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiB0YW1iYWgoJGthdGEsICRzaW5vbmltKSB7CiAgICAgICAgLy8gSmlrYSBrYXRhIHN1ZGFoIGFkYSwgZ2FidW5na2FuIHNpbm9uaW0gYmFydSBkZW5nYW4geWFuZyBsYW1hCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5rYW11c1ska2F0YV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5rYW11c1ska2F0YV0gPSBhcnJheV9tZXJnZSgkdGhpcy0+a2FtdXNbJGthdGFdLCAkc2lub25pbSk7CiAgICAgICAgICAgIC8vIEhhcHVzIGR1cGxpa2F0CiAgICAgICAgICAgICR0aGlzLT5rYW11c1ska2F0YV0gPSBhcnJheV91bmlxdWUoJHRoaXMtPmthbXVzWyRrYXRhXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmthbXVzWyRrYXRhXSA9ICRzaW5vbmltOwogICAgICAgIH0KICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGFtYmlsU2lub25pbSgka2F0YSkgewogICAgICAgICRoYXNpbCA9IFtdOwogICAgICAgIAogICAgICAgIC8vIEppa2Ega2F0YSBhZGEgZGkga2FtdXMsIGFtYmlsIHNpbm9uaW1ueWEKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmthbXVzWyRrYXRhXSkpIHsKICAgICAgICAgICAgJGhhc2lsID0gYXJyYXlfbWVyZ2UoJGhhc2lsLCAkdGhpcy0+a2FtdXNbJGthdGFdKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gQ2FyaSBrYXRhIGxhaW4geWFuZyBtZW1pbGlraSBrYXRhIGluaSBzZWJhZ2FpIHNpbm9uaW0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+a2FtdXMgYXMgJGthdGFMYWluID0+ICRzaW5vbmltQXJyYXkpIHsKICAgICAgICAgICAgaWYgKGluX2FycmF5KCRrYXRhLCAkc2lub25pbUFycmF5KSkgewogICAgICAgICAgICAgICAgJGhhc2lsW10gPSAka2F0YUxhaW47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gSGFwdXMgZHVwbGlrYXQgZGFuIGtlbWJhbGlrYW4gaGFzaWwKICAgICAgICAkaGFzaWwgPSBhcnJheV91bmlxdWUoJGhhc2lsKTsKICAgICAgICAKICAgICAgICAvLyBKaWthIHRpZGFrIGFkYSBoYXNpbCwga2VtYmFsaWthbiBudWxsCiAgICAgICAgaWYgKGVtcHR5KCRoYXNpbCkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiBhcnJheV92YWx1ZXMoJGhhc2lsKTsgLy8gUmVzZXQgaW5kZXggYXJyYXkKICAgIH0KfQoKLy8gVGVzdGluZyBzZXN1YWkgY29udG9oCiRrYW11cyA9IG5ldyBLYW11cygpOwoka2FtdXMtPnRhbWJhaCgnYmlnJywgWydsYXJnZScsICdncmVhdCddKTsKJGthbXVzLT50YW1iYWgoJ2JpZycsIFsnaHVnZScsICdmYXQnXSk7CiRrYW11cy0+dGFtYmFoKCdodWdlJywgWydlbm9ybW91cycsICdnaWdhbnRpYyddKTsKCmVjaG8gIlRlc3RpbmcgYW1iaWxTaW5vbmltKCdiaWcnKTpcbiI7CnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2JpZycpKTsKZWNobyAiXG4iOwoKZWNobyAiVGVzdGluZyBhbWJpbFNpbm9uaW0oJ2h1Z2UnKTpcbiI7CnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2h1Z2UnKSk7CmVjaG8gIlxuIjsKCmVjaG8gIlRlc3RpbmcgYW1iaWxTaW5vbmltKCdnaWdhbnRpYycpOlxuIjsKcHJpbnRfcigka2FtdXMtPmFtYmlsU2lub25pbSgnZ2lnYW50aWMnKSk7CmVjaG8gIlxuIjsKCmVjaG8gIlRlc3RpbmcgYW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpOlxuIjsKdmFyX2R1bXAoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2NvbG9zc2FsJykpOwplY2hvICJcbiI7Cgo/Pjw/cGhwCgovLyB5b3VyIGNvZGUgZ29lcyBoZXJl