<?php
class Kamus {
private $kamus = [];
public function tambah
(string
$kata, array $sinonim) { // tidak mengembalikan hasil (void)
if(!isset($this->kamus[$kata])) { $this->kamus[$kata] = [];
}
foreach($sinonim as $other_kata) {
if(!in_array($other_kata, $this->kamus[$kata])) { $this->kamus[$kata][] = $other_kata;
}
if (!isset($this->kamus[$other_kata])) { $this->kamus[$other_kata] = [];
}
if (!in_array($kata, $this->kamus[$other_kata])) { $this->kamus[$other_kata][] = $kata;
}
// foreach($sinonim as $other_kata2) {
// if ($other_kata == $other_kata2) continue;
// if (!in_array($other_kata2, $this->kamus[$other_kata])) {
// $this->kamus[$other_kata][] = $other_kata2;
// }
// }
}
return;
}
public function ambilSinonim(string $kata) {
// mengembalikan hasil array of strings
return $this->kamus[$kata];
}
}
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
function cetakSinonim($kamus, $kata) {
echo "Sinonim dari '$kata': ";
$hasil = $kamus->ambilSinonim($kata);
if ($hasil === null) {
echo "null\n";
} else {
echo "[" . implode(", ", $hasil) . "]\n"; }
}
cetakSinonim($kamus, 'big');
cetakSinonim($kamus, 'huge');
cetakSinonim($kamus, 'gigantic');
cetakSinonim($kamus, 'colossal');
?>
PD9waHAKY2xhc3MgS2FtdXMgewoJcHJpdmF0ZSAka2FtdXMgPSBbXTsKCQoJcHVibGljIGZ1bmN0aW9uIHRhbWJhaChzdHJpbmcgJGthdGEsIGFycmF5ICRzaW5vbmltKSB7CgkJLy8gdGlkYWsgbWVuZ2VtYmFsaWthbiBoYXNpbCAodm9pZCkKCQkKCQlpZighaXNzZXQoJHRoaXMtPmthbXVzWyRrYXRhXSkpIHsKCQkJJHRoaXMtPmthbXVzWyRrYXRhXSA9IFtdOwoJCX0KCQkKCQlmb3JlYWNoKCRzaW5vbmltIGFzICRvdGhlcl9rYXRhKSB7CgkJCWlmKCFpbl9hcnJheSgkb3RoZXJfa2F0YSwgJHRoaXMtPmthbXVzWyRrYXRhXSkpIHsKCQkJCSR0aGlzLT5rYW11c1ska2F0YV1bXSA9ICRvdGhlcl9rYXRhOwoJCQl9CgkJCQoJCQlpZiAoIWlzc2V0KCR0aGlzLT5rYW11c1skb3RoZXJfa2F0YV0pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+a2FtdXNbJG90aGVyX2thdGFdID0gW107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJGthdGEsICR0aGlzLT5rYW11c1skb3RoZXJfa2F0YV0pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+a2FtdXNbJG90aGVyX2thdGFdW10gPSAka2F0YTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZm9yZWFjaCgkc2lub25pbSBhcyAkb3RoZXJfa2F0YTIpIHsKICAgICAgICAgICAgLy8gCWlmICgkb3RoZXJfa2F0YSA9PSAkb3RoZXJfa2F0YTIpIGNvbnRpbnVlOwogICAgICAgICAgICAJCiAgICAgICAgICAgIC8vIAlpZiAoIWluX2FycmF5KCRvdGhlcl9rYXRhMiwgJHRoaXMtPmthbXVzWyRvdGhlcl9rYXRhXSkpIHsKICAgICAgICAgICAgLy8gICAgICAgICAkdGhpcy0+a2FtdXNbJG90aGVyX2thdGFdW10gPSAkb3RoZXJfa2F0YTI7CiAgICAgICAgICAgIC8vICAgICB9CiAgICAgICAgICAgIC8vIH0KCQl9CgkJIAoJCXJldHVybjsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGFtYmlsU2lub25pbShzdHJpbmcgJGthdGEpIHsKCQkvLyBtZW5nZW1iYWxpa2FuIGhhc2lsIGFycmF5IG9mIHN0cmluZ3MKCQlyZXR1cm4gJHRoaXMtPmthbXVzWyRrYXRhXTsKCX0KfQoKJGthbXVzID0gbmV3IEthbXVzKCk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2xhcmdlJywgJ2dyZWF0J10pOwoka2FtdXMtPnRhbWJhaCgnYmlnJywgWydodWdlJywgJ2ZhdCddKTsKJGthbXVzLT50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwpmdW5jdGlvbiBjZXRha1Npbm9uaW0oJGthbXVzLCAka2F0YSkgewoJZWNobyAiU2lub25pbSBkYXJpICcka2F0YSc6ICI7CgkkaGFzaWwgPSAka2FtdXMtPmFtYmlsU2lub25pbSgka2F0YSk7CglpZiAoJGhhc2lsID09PSBudWxsKSB7CgkJZWNobyAibnVsbFxuIjsKCX0gZWxzZSB7CgkJZWNobyAiWyIgLiBpbXBsb2RlKCIsICIsICRoYXNpbCkgLiAiXVxuIjsKCX0KfQoKY2V0YWtTaW5vbmltKCRrYW11cywgJ2JpZycpOwpjZXRha1Npbm9uaW0oJGthbXVzLCAnaHVnZScpOwpjZXRha1Npbm9uaW0oJGthbXVzLCAnZ2lnYW50aWMnKTsKY2V0YWtTaW5vbmltKCRrYW11cywgJ2NvbG9zc2FsJyk7Cj8+
Sinonim dari 'big': [large, great, huge, fat]
Sinonim dari 'huge': [big, enormous, gigantic]
Sinonim dari 'gigantic': [huge]
Sinonim dari 'colossal': null
PHP Notice: Undefined index: colossal in /home/WhiMB1/prog.php on line 39