<?php
class Kamus
{
private $kamus = [];
public function tambah
(string
$kata, array $sinonim): void
{
if (!isset($this->kamus[$kata])) { $this->kamus[$kata] = [];
}
foreach ($sinonim as $sin) {
if (!isset($this->kamus[$sin])) { $this->kamus[$sin] = [];
}
if (!in_array($kata, $this->kamus[$sin])) { $this->kamus[$sin][] = $kata;
}
}
}
public function ambilSinonim(string $kata)
{
return $this->kamus[$kata] ?? null;
}
}
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
// mengembalikan hasil ['large', 'great', 'huge', 'fat']
// Perhatikan baik-baik hasil pengujian di bawah ini
// mengembalikan hasil ['big', 'enormous', 'gigantic']
// mengembalikan hasil ['huge']
var_dump($kamus->ambilSinonim('gigantic')); // mengembalikan hasil null
var_dump($kamus->ambilSinonim('colossal'));
PD9waHAKCmNsYXNzIEthbXVzCnsKICBwcml2YXRlICRrYW11cyA9IFtdOwoKICBwdWJsaWMgZnVuY3Rpb24gdGFtYmFoKHN0cmluZyAka2F0YSwgYXJyYXkgJHNpbm9uaW0pOiB2b2lkCiAgewogICAgaWYgKCFpc3NldCgkdGhpcy0+a2FtdXNbJGthdGFdKSkgewogICAgICAkdGhpcy0+a2FtdXNbJGthdGFdID0gW107CiAgICB9CgogICAgJHRoaXMtPmthbXVzWyRrYXRhXSA9IGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgkdGhpcy0+a2FtdXNbJGthdGFdLCAkc2lub25pbSkpOwoKICAgIGZvcmVhY2ggKCRzaW5vbmltIGFzICRzaW4pIHsKICAgICAgaWYgKCFpc3NldCgkdGhpcy0+a2FtdXNbJHNpbl0pKSB7CiAgICAgICAgJHRoaXMtPmthbXVzWyRzaW5dID0gW107CiAgICAgIH0KICAgICAgaWYgKCFpbl9hcnJheSgka2F0YSwgJHRoaXMtPmthbXVzWyRzaW5dKSkgewogICAgICAgICR0aGlzLT5rYW11c1skc2luXVtdID0gJGthdGE7CiAgICAgIH0KICAgIH0KICB9CgogIHB1YmxpYyBmdW5jdGlvbiBhbWJpbFNpbm9uaW0oc3RyaW5nICRrYXRhKQogIHsKICAgIHJldHVybiAkdGhpcy0+a2FtdXNbJGthdGFdID8/IG51bGw7CiAgfQp9Cgoka2FtdXMgPSBuZXcgS2FtdXMoKTsKJGthbXVzLT50YW1iYWgoJ2JpZycsIFsnbGFyZ2UnLCAnZ3JlYXQnXSk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwoka2FtdXMtPnRhbWJhaCgnaHVnZScsIFsnZW5vcm1vdXMnLCAnZ2lnYW50aWMnXSk7Ci8vIG1lbmdlbWJhbGlrYW4gaGFzaWwgWydsYXJnZScsICdncmVhdCcsICdodWdlJywgJ2ZhdCddCnZhcl9kdW1wKCRrYW11cy0+YW1iaWxTaW5vbmltKCdiaWcnKSk7Ci8vIFBlcmhhdGlrYW4gYmFpay1iYWlrIGhhc2lsIHBlbmd1amlhbiBkaSBiYXdhaCBpbmkKLy8gbWVuZ2VtYmFsaWthbiBoYXNpbCBbJ2JpZycsICdlbm9ybW91cycsICdnaWdhbnRpYyddCnZhcl9kdW1wKCRrYW11cy0+YW1iaWxTaW5vbmltKCdodWdlJykpOwovLyBtZW5nZW1iYWxpa2FuIGhhc2lsIFsnaHVnZSddCnZhcl9kdW1wKCRrYW11cy0+YW1iaWxTaW5vbmltKCdnaWdhbnRpYycpKTsKLy8gbWVuZ2VtYmFsaWthbiBoYXNpbCBudWxsCnZhcl9kdW1wKCRrYW11cy0+YW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTs=