<?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']);
// mengembalikan hasil ['large', 'great', 'huge', 'fat']
$kamus->ambilSinonim('big');
// Perhatikan baik-baik hasil pengujian di bawah ini
// mengembalikan hasil ['big', 'enormous', 'gigantic']
$kamus->ambilSinonim('huge');
// mengembalikan hasil ['huge']
$kamus->ambilSinonim('gigantic');
// mengembalikan hasil null
$kamus->ambilSinonim('colossal');
?>
PD9waHAKY2xhc3MgS2FtdXMgewoJcHJpdmF0ZSAka2FtdXMgPSBbXTsKCQoJcHVibGljIGZ1bmN0aW9uIHRhbWJhaChzdHJpbmcgJGthdGEsIGFycmF5ICRzaW5vbmltKSB7CgkJLy8gdGlkYWsgbWVuZ2VtYmFsaWthbiBoYXNpbCAodm9pZCkKCQkKCQlpZighaXNzZXQoJHRoaXMtPmthbXVzWyRrYXRhXSkpIHsKCQkJJHRoaXMtPmthbXVzWyRrYXRhXSA9IFtdOwoJCX0KCQkKCQlmb3JlYWNoKCRzaW5vbmltIGFzICRvdGhlcl9rYXRhKSB7CgkJCWlmKCFpbl9hcnJheSgkb3RoZXJfa2F0YSwgJHRoaXMtPmthbXVzWyRrYXRhXSkpIHsKCQkJCSR0aGlzLT5rYW11c1ska2F0YV1bXSA9ICRvdGhlcl9rYXRhOwoJCQl9CgkJCQoJCQlpZiAoIWlzc2V0KCR0aGlzLT5rYW11c1skb3RoZXJfa2F0YV0pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+a2FtdXNbJG90aGVyX2thdGFdID0gW107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJGthdGEsICR0aGlzLT5rYW11c1skb3RoZXJfa2F0YV0pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+a2FtdXNbJG90aGVyX2thdGFdW10gPSAka2F0YTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZm9yZWFjaCgkc2lub25pbSBhcyAkb3RoZXJfa2F0YTIpIHsKICAgICAgICAgICAgCWlmICgkb3RoZXJfa2F0YSA9PSAkb3RoZXJfa2F0YTIpIGNvbnRpbnVlOwogICAgICAgICAgICAJCiAgICAgICAgICAgIAlpZiAoIWluX2FycmF5KCRvdGhlcl9rYXRhMiwgJHRoaXMtPmthbXVzWyRvdGhlcl9rYXRhXSkpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+a2FtdXNbJG90aGVyX2thdGFdW10gPSAkb3RoZXJfa2F0YTI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCQl9CgkJIAoJCXJldHVybjsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGFtYmlsU2lub25pbShzdHJpbmcgJGthdGEpIHsKCQkvLyBtZW5nZW1iYWxpa2FuIGhhc2lsIGFycmF5IG9mIHN0cmluZ3MKCQlyZXR1cm4gJHRoaXMtPmthbXVzWyRrYXRhXTsKCX0KfQoKJGthbXVzID0gbmV3IEthbXVzKCk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2xhcmdlJywgJ2dyZWF0J10pOwoka2FtdXMtPnRhbWJhaCgnYmlnJywgWydodWdlJywgJ2ZhdCddKTsKJGthbXVzLT50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwovLyBtZW5nZW1iYWxpa2FuIGhhc2lsIFsnbGFyZ2UnLCAnZ3JlYXQnLCAnaHVnZScsICdmYXQnXQoka2FtdXMtPmFtYmlsU2lub25pbSgnYmlnJyk7Ci8vIFBlcmhhdGlrYW4gYmFpay1iYWlrIGhhc2lsIHBlbmd1amlhbiBkaSBiYXdhaCBpbmkKLy8gbWVuZ2VtYmFsaWthbiBoYXNpbCBbJ2JpZycsICdlbm9ybW91cycsICdnaWdhbnRpYyddCiRrYW11cy0+YW1iaWxTaW5vbmltKCdodWdlJyk7Ci8vIG1lbmdlbWJhbGlrYW4gaGFzaWwgWydodWdlJ10KJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2dpZ2FudGljJyk7Ci8vIG1lbmdlbWJhbGlrYW4gaGFzaWwgbnVsbAoka2FtdXMtPmFtYmlsU2lub25pbSgnY29sb3NzYWwnKTsKPz4=