<?php
class Kamus
{
private $data = [];
public function tambah
(string
$kata, array $sinonim): void
{
if (!isset($this->data[$kata])) { $this->data[$kata] = [];
}
}
public function ambilSinonim
(string
$kata): ?
array {
if (isset($this->data[$kata])) { return $this->data[$kata];
}
foreach ($this->data as $kunciUtama => $daftarSinonim) {
$hasilSinonim = [];
$hasilSinonim[] = $kunciUtama;
if (isset($this->data[$kunciUtama])) { $hasilSinonim = array_merge($hasilSinonim, $this->data[$kunciUtama]); }
if (isset($this->data[$kata])) { $hasilSinonim = array_merge($hasilSinonim, $this->data[$kata]); }
return $item !== $kata;
})));
return [$kunciUtama];
}
return $hasilSinonim;
}
}
return null;
}
}
PD9waHAKCmNsYXNzIEthbXVzCnsKICAgIHByaXZhdGUgJGRhdGEgPSBbXTsgCiAgIAogICAgcHVibGljIGZ1bmN0aW9uIHRhbWJhaChzdHJpbmcgJGthdGEsIGFycmF5ICRzaW5vbmltKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmRhdGFbJGthdGFdKSkgewogICAgICAgICAgICAkdGhpcy0+ZGF0YVska2F0YV0gPSBbXTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmRhdGFbJGthdGFdID0gYXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCR0aGlzLT5kYXRhWyRrYXRhXSwgJHNpbm9uaW0pKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYW1iaWxTaW5vbmltKHN0cmluZyAka2F0YSk6ID9hcnJheQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+ZGF0YVska2F0YV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVska2F0YV07CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZGF0YSBhcyAka3VuY2lVdGFtYSA9PiAkZGFmdGFyU2lub25pbSkgewogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJGthdGEsICRkYWZ0YXJTaW5vbmltKSkgewogICAgICAgICAgICAgICAgJGhhc2lsU2lub25pbSA9IFtdOwogICAgICAgICAgICAgICAgJGhhc2lsU2lub25pbVtdID0gJGt1bmNpVXRhbWE7CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5kYXRhWyRrdW5jaVV0YW1hXSkpIHsKICAgICAgICAgICAgICAgICAgICAkaGFzaWxTaW5vbmltID0gYXJyYXlfbWVyZ2UoJGhhc2lsU2lub25pbSwgJHRoaXMtPmRhdGFbJGt1bmNpVXRhbWFdKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJGthdGFdKSkgewogICAgICAgICAgICAgICAgICAgICRoYXNpbFNpbm9uaW0gPSBhcnJheV9tZXJnZSgkaGFzaWxTaW5vbmltLCAkdGhpcy0+ZGF0YVska2F0YV0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRoYXNpbFNpbm9uaW0gPSBhcnJheV92YWx1ZXMoYXJyYXlfdW5pcXVlKGFycmF5X2ZpbHRlcigkaGFzaWxTaW5vbmltLCBmdW5jdGlvbigkaXRlbSkgdXNlICgka2F0YSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkaXRlbSAhPT0gJGthdGE7CiAgICAgICAgICAgICAgICB9KSkpOwoKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkaGFzaWxTaW5vbmltKSAmJiBpbl9hcnJheSgka2F0YSwgJGRhZnRhclNpbm9uaW0pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFska3VuY2lVdGFtYV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRoYXNpbFNpbm9uaW07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9Cn0K