<?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');
?>
PD9waHAKY2xhc3MgS2FtdXMgewoJcHJpdmF0ZSAka2FtdXMgPSBbXTsKCQoJcHVibGljIGZ1bmN0aW9uIHRhbWJhaChzdHJpbmcgJGthdGEsIGFycmF5ICRzaW5vbmltKSB7CgkJLy8gdGlkYWsgbWVuZ2VtYmFsaWthbiBoYXNpbCAodm9pZCkKCQkKCQlpZighaXNzZXQoJHRoaXMtPmthbXVzWyRrYXRhXSkpIHsKCQkJJHRoaXMtPmthbXVzWyRrYXRhXSA9IFtdOwoJCX0KCQkKCQlmb3JlYWNoKCRzaW5vbmltIGFzICRvdGhlcl9rYXRhKSB7CgkJCWlmKCFpbl9hcnJheSgkb3RoZXJfa2F0YSwgJHRoaXMtPmthbXVzWyRrYXRhXSkpIHsKCQkJCSR0aGlzLT5rYW11c1ska2F0YV0gKz0gJG90aGVyX2thdGE7CgkJCX0KCQkJCgkJCWlmICghaXNzZXQoJHRoaXMtPmthbXVzWyRvdGhlcl9rYXRhXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5rYW11c1skb3RoZXJfa2F0YV0gPSBbXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgka2F0YSwgJHRoaXMtPmthbXVzWyRvdGhlcl9rYXRhXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5rYW11c1skb3RoZXJfa2F0YV0gKz0gJGthdGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGZvcmVhY2goJHNpbm9uaW0gYXMgJG90aGVyX2thdGEyKSB7CiAgICAgICAgICAgIAlpZiAoJG90aGVyX2thdGEgPT0gJG90aGVyX2thdGEyKSBjb250aW51ZTsKICAgICAgICAgICAgCQogICAgICAgICAgICAJaWYgKCFpbl9hcnJheSgkb3RoZXJfa2F0YTIsICR0aGlzLT5rYW11c1skb3RoZXJfa2F0YV0pKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmthbXVzWyRvdGhlcl9rYXRhXSArPSAkb3RoZXJfa2F0YTI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCQl9CgkJIAoJCXJldHVybjsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGFtYmlsU2lub25pbShzdHJpbmcgJGthdGEpIHsKCQkvLyBtZW5nZW1iYWxpa2FuIGhhc2lsIGFycmF5IG9mIHN0cmluZ3MKCQlyZXR1cm4gJHRoaXMtPmthbXVzWyRrYXRhXTsKCX0KfQoKJGthbXVzID0gbmV3IEthbXVzKCk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2xhcmdlJywgJ2dyZWF0J10pOwoka2FtdXMtPnRhbWJhaCgnYmlnJywgWydodWdlJywgJ2ZhdCddKTsKJGthbXVzLT50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwovLyBtZW5nZW1iYWxpa2FuIGhhc2lsIFsnbGFyZ2UnLCAnZ3JlYXQnLCAnaHVnZScsICdmYXQnXQoka2FtdXMtPmFtYmlsU2lub25pbSgnYmlnJyk7Ci8vIFBlcmhhdGlrYW4gYmFpay1iYWlrIGhhc2lsIHBlbmd1amlhbiBkaSBiYXdhaCBpbmkKLy8gbWVuZ2VtYmFsaWthbiBoYXNpbCBbJ2JpZycsICdlbm9ybW91cycsICdnaWdhbnRpYyddCiRrYW11cy0+YW1iaWxTaW5vbmltKCdodWdlJyk7Ci8vIG1lbmdlbWJhbGlrYW4gaGFzaWwgWydodWdlJ10KJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2dpZ2FudGljJyk7Ci8vIG1lbmdlbWJhbGlrYW4gaGFzaWwgbnVsbAoka2FtdXMtPmFtYmlsU2lub25pbSgnY29sb3NzYWwnKTsKPz4=