<?php
class Kamus {
private $data = [];
public function tambah
(string
$kata, array $sinonim): void
{ if (!isset($this->data[$kata])) { $this->data[$kata] = [];
}
// Gabungkan sinonim baru tanpa duplikat
}
public function ambilSinonim
(string
$kata): ?
array { $hasil = [];
// 1. Tambahkan sinonim langsung dari key
if (isset($this->data[$kata])) { $hasil = $this->data[$kata];
}
// 2. Tambahkan key lain yang menjadikan kata ini sebagai sinonim
foreach ($this->data as $k => $sinonim) {
$hasil[] = $k;
}
}
return null;
}
}
}
$kamus = new Kamus();
$kamus->tambah('big', ['large', 'great']);
$kamus->tambah('big', ['huge', 'fat']);
$kamus->tambah('huge', ['enormous', 'gigantic']);
print_r($kamus->ambilSinonim('big')); // ['large', 'great', 'huge', 'fat']
print_r($kamus->ambilSinonim('huge')); // ['enormous', 'gigantic', 'big']
print_r($kamus->ambilSinonim('gigantic')); // ['huge']
print_r($kamus->ambilSinonim('colossal')); // null
PD9waHAKCmNsYXNzIEthbXVzIHsKICAgIHByaXZhdGUgJGRhdGEgPSBbXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gdGFtYmFoKHN0cmluZyAka2F0YSwgYXJyYXkgJHNpbm9uaW0pOiB2b2lkIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWyRrYXRhXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmRhdGFbJGthdGFdID0gW107CiAgICAgICAgfQoKICAgICAgICAvLyBHYWJ1bmdrYW4gc2lub25pbSBiYXJ1IHRhbnBhIGR1cGxpa2F0CiAgICAgICAgJHRoaXMtPmRhdGFbJGthdGFdID0gYXJyYXlfdmFsdWVzKGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgkdGhpcy0+ZGF0YVska2F0YV0sICRzaW5vbmltKSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhbWJpbFNpbm9uaW0oc3RyaW5nICRrYXRhKTogP2FycmF5IHsKICAgICAgICAkaGFzaWwgPSBbXTsKCiAgICAgICAgLy8gMS4gVGFtYmFoa2FuIHNpbm9uaW0gbGFuZ3N1bmcgZGFyaSBrZXkKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJGthdGFdKSkgewogICAgICAgICAgICAkaGFzaWwgPSAkdGhpcy0+ZGF0YVska2F0YV07CiAgICAgICAgfQoKICAgICAgICAvLyAyLiBUYW1iYWhrYW4ga2V5IGxhaW4geWFuZyBtZW5qYWRpa2FuIGthdGEgaW5pIHNlYmFnYWkgc2lub25pbQogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kYXRhIGFzICRrID0+ICRzaW5vbmltKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgka2F0YSwgJHNpbm9uaW0sIHRydWUpKSB7CiAgICAgICAgICAgICAgICAkaGFzaWxbXSA9ICRrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoJGhhc2lsKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBhcnJheV92YWx1ZXMoYXJyYXlfdW5pcXVlKCRoYXNpbCkpOwogICAgfQp9CgoKJGthbXVzID0gbmV3IEthbXVzKCk7CiRrYW11cy0+dGFtYmFoKCdiaWcnLCBbJ2xhcmdlJywgJ2dyZWF0J10pOwoka2FtdXMtPnRhbWJhaCgnYmlnJywgWydodWdlJywgJ2ZhdCddKTsKJGthbXVzLT50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwoKcHJpbnRfcigka2FtdXMtPmFtYmlsU2lub25pbSgnYmlnJykpOwovLyBbJ2xhcmdlJywgJ2dyZWF0JywgJ2h1Z2UnLCAnZmF0J10KCnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2h1Z2UnKSk7Ci8vIFsnZW5vcm1vdXMnLCAnZ2lnYW50aWMnLCAnYmlnJ10KCnByaW50X3IoJGthbXVzLT5hbWJpbFNpbm9uaW0oJ2dpZ2FudGljJykpOwovLyBbJ2h1Z2UnXQoKcHJpbnRfcigka2FtdXMtPmFtYmlsU2lub25pbSgnY29sb3NzYWwnKSk7Ci8vIG51bGwK