<?php
class Kamus {
private $data = [];
public function tambah($kata, $sinonim) {
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($kata) {
if (isset($this->data[$kata])) { return $this->data[$kata];
}
foreach ($this->data as $k => $sinonimList) {
$hasil = [$k];
if (isset($this->data[$kata])) { }
return $hasil;
}
}
return null;
}
}
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
function cetak($kata, $hasil) {
echo "Sinonim dari '{$kata}': ";
if ($hasil === null) {
echo "null\n";
} else {
echo "[" . implode(", ", $hasil) . "]\n"; }
}
cetak('big', $kamus->ambilSinonim('big'));
cetak('huge', $kamus->ambilSinonim('huge'));
cetak('gigantic', $kamus->ambilSinonim('gigantic'));
cetak('colossal', $kamus->ambilSinonim('colossal'));
?>
PD9waHAKCmNsYXNzIEthbXVzIHsKICAgIHByaXZhdGUgJGRhdGEgPSBbXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gdGFtYmFoKCRrYXRhLCAkc2lub25pbSkgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmRhdGFbJGthdGFdKSkgewogICAgICAgICAgICAkdGhpcy0+ZGF0YVska2F0YV0gPSBbXTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRzaW5vbmltIGFzICRzKSB7CiAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJHMsICR0aGlzLT5kYXRhWyRrYXRhXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5kYXRhWyRrYXRhXVtdID0gJHM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFtYmlsU2lub25pbSgka2F0YSkgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+ZGF0YVska2F0YV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVska2F0YV07CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZGF0YSBhcyAkayA9PiAkc2lub25pbUxpc3QpIHsKICAgICAgICAgICAgaWYgKGluX2FycmF5KCRrYXRhLCAkc2lub25pbUxpc3QpKSB7CiAgICAgICAgICAgICAgICAkaGFzaWwgPSBbJGtdOwoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+ZGF0YVska2F0YV0pKSB7CiAgICAgICAgICAgICAgICAgICAgJGhhc2lsID0gYXJyYXlfbWVyZ2UoJGhhc2lsLCAkdGhpcy0+ZGF0YVska2F0YV0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkaGFzaWw7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9Cgoka2FtdXMgPSBuZXcgS2FtdXMoKTsKJGthbXVzLT50YW1iYWgoJ2JpZycsIFsnbGFyZ2UnLCAnZ3JlYXQnXSk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwoka2FtdXMtPnRhbWJhaCgnaHVnZScsIFsnZW5vcm1vdXMnLCAnZ2lnYW50aWMnXSk7CgpmdW5jdGlvbiBjZXRhaygka2F0YSwgJGhhc2lsKSB7CiAgICBlY2hvICJTaW5vbmltIGRhcmkgJ3ska2F0YX0nOiAiOwogICAgaWYgKCRoYXNpbCA9PT0gbnVsbCkgewogICAgICAgIGVjaG8gIm51bGxcbiI7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gIlsiIC4gaW1wbG9kZSgiLCAiLCAkaGFzaWwpIC4gIl1cbiI7CiAgICB9Cn0KCmNldGFrKCdiaWcnLCAka2FtdXMtPmFtYmlsU2lub25pbSgnYmlnJykpOwpjZXRhaygnaHVnZScsICRrYW11cy0+YW1iaWxTaW5vbmltKCdodWdlJykpOwpjZXRhaygnZ2lnYW50aWMnLCAka2FtdXMtPmFtYmlsU2lub25pbSgnZ2lnYW50aWMnKSk7CmNldGFrKCdjb2xvc3NhbCcsICRrYW11cy0+YW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTsKCj8+Cg==