<?php
class Kamus {
public $daftar = [];
// ini untuk menambah kata dan sinonim
public function tambah($kata, $sinonim) {
if (!isset($this->daftar[$kata])) { $this->daftar[$kata] = [];
}
foreach ($sinonim as $s) {
if (!in_array($s, $this->daftar[$kata])) { $this->daftar[$kata][] = $s;
}
if (!isset($this->daftar[$s])) { $this->daftar[$s] = [];
}
if (!in_array($kata, $this->daftar[$s])) { $this->daftar[$s][] = $kata;
}
}
}
// ini untuk mengambil sinonim
public function ambilSinonim($kata) {
if (!isset($this->daftar[$kata])) { return null;
}
return $this->daftar[$kata];
}
}
// ini proses untuk menampilkan sinonim
function tampilkanSinonim($kamus, $kata) {
$hasil = $kamus->ambilSinonim($kata);
echo "Sinonim untuk '$kata': ";
if ($hasil === null || empty($hasil)) { echo "(tidak ditemukan)";
} else {
}
echo "\n";
}
// ini proses contoh pengujian
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
echo "=== HASIL UJI KAMUS SINONIM ===\n";
tampilkanSinonim($kamus, 'big');
tampilkanSinonim($kamus, 'huge');
tampilkanSinonim($kamus, 'gigantic');
tampilkanSinonim($kamus, 'colossal');
PD9waHAKCmNsYXNzIEthbXVzIHsKICAgIHB1YmxpYyAkZGFmdGFyID0gW107CgogICAgLy8gaW5pIHVudHVrIG1lbmFtYmFoIGthdGEgZGFuIHNpbm9uaW0KICAgIHB1YmxpYyBmdW5jdGlvbiB0YW1iYWgoJGthdGEsICRzaW5vbmltKSB7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+ZGFmdGFyWyRrYXRhXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmRhZnRhclska2F0YV0gPSBbXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCAoJHNpbm9uaW0gYXMgJHMpIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkcywgJHRoaXMtPmRhZnRhclska2F0YV0pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZGFmdGFyWyRrYXRhXVtdID0gJHM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmRhZnRhclskc10pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZGFmdGFyWyRzXSA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJGthdGEsICR0aGlzLT5kYWZ0YXJbJHNdKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmRhZnRhclskc11bXSA9ICRrYXRhOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8vIGluaSB1bnR1ayBtZW5nYW1iaWwgc2lub25pbQogICAgcHVibGljIGZ1bmN0aW9uIGFtYmlsU2lub25pbSgka2F0YSkgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmRhZnRhclska2F0YV0pKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoaXMtPmRhZnRhclska2F0YV07CiAgICB9Cn0gICAKCi8vIGluaSBwcm9zZXMgdW50dWsgbWVuYW1waWxrYW4gc2lub25pbQpmdW5jdGlvbiB0YW1waWxrYW5TaW5vbmltKCRrYW11cywgJGthdGEpIHsKICAgICRoYXNpbCA9ICRrYW11cy0+YW1iaWxTaW5vbmltKCRrYXRhKTsKICAgIGVjaG8gIlNpbm9uaW0gdW50dWsgJyRrYXRhJzogIjsKICAgIGlmICgkaGFzaWwgPT09IG51bGwgfHwgZW1wdHkoJGhhc2lsKSkgewogICAgICAgIGVjaG8gIih0aWRhayBkaXRlbXVrYW4pIjsKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyBpbXBsb2RlKCcsICcsICRoYXNpbCk7CiAgICB9CiAgICBlY2hvICJcbiI7Cn0KCi8vIGluaSBwcm9zZXMgY29udG9oIHBlbmd1amlhbiAKJGthbXVzID0gbmV3IEthbXVzKCk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2xhcmdlJywgJ2dyZWF0J10pOwoka2FtdXMtPnRhbWJhaCgnYmlnJywgWydodWdlJywgJ2ZhdCddKTsKJGthbXVzLT50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwoKZWNobyAiPT09IEhBU0lMIFVKSSBLQU1VUyBTSU5PTklNID09PVxuIjsKdGFtcGlsa2FuU2lub25pbSgka2FtdXMsICdiaWcnKTsKdGFtcGlsa2FuU2lub25pbSgka2FtdXMsICdodWdlJyk7CnRhbXBpbGthblNpbm9uaW0oJGthbXVzLCAnZ2lnYW50aWMnKTsKdGFtcGlsa2FuU2lub25pbSgka2FtdXMsICdjb2xvc3NhbCcpOwoKCg==