class Kamus {
constructor() {
this.daftarKata = new Map();
}
tambah(kata, sinonim) {
const sinonimLama = this.daftarKata.get(kata) || [];
this.daftarKata.set(kata, [...sinonimLama, ...sinonim]);
}
ambilSinonim(kata) {
const hasil = new Set(this.daftarKata.get(kata));
for (const [kataUtama, daftarSinonim] of this.daftarKata.entries()) {
if (daftarSinonim.includes(kata)) {
hasil.add(kataUtama);
}
}
return hasil.size ? Array.from(hasil) : null;
}
}
const kamus = new Kamus();
kamus.tambah('big', ['large', 'great']);
kamus.tambah('big', ['huge', 'fat']);
kamus.tambah('huge', ['enormous', 'gigantic']);
console.log(kamus.ambilSinonim('big'));
console.log(kamus.ambilSinonim('huge'));
console.log(kamus.ambilSinonim('gigantic'));
console.log(kamus.ambilSinonim('colossal'));
Y2xhc3MgS2FtdXMgewogIGNvbnN0cnVjdG9yKCkgewogICAgdGhpcy5kYWZ0YXJLYXRhID0gbmV3IE1hcCgpOwogIH0KCiAgdGFtYmFoKGthdGEsIHNpbm9uaW0pIHsKICAgIGNvbnN0IHNpbm9uaW1MYW1hID0gdGhpcy5kYWZ0YXJLYXRhLmdldChrYXRhKSB8fCBbXTsKICAgIHRoaXMuZGFmdGFyS2F0YS5zZXQoa2F0YSwgWy4uLnNpbm9uaW1MYW1hLCAuLi5zaW5vbmltXSk7CiAgfQogIAogIGFtYmlsU2lub25pbShrYXRhKSB7CiAgICBjb25zdCBoYXNpbCA9IG5ldyBTZXQodGhpcy5kYWZ0YXJLYXRhLmdldChrYXRhKSk7CgogICAgZm9yIChjb25zdCBba2F0YVV0YW1hLCBkYWZ0YXJTaW5vbmltXSBvZiB0aGlzLmRhZnRhckthdGEuZW50cmllcygpKSB7CiAgICAgIGlmIChkYWZ0YXJTaW5vbmltLmluY2x1ZGVzKGthdGEpKSB7CiAgICAgICAgaGFzaWwuYWRkKGthdGFVdGFtYSk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaGFzaWwuc2l6ZSA/IEFycmF5LmZyb20oaGFzaWwpIDogbnVsbDsKICB9Cn0KCmNvbnN0IGthbXVzID0gbmV3IEthbXVzKCk7CmthbXVzLnRhbWJhaCgnYmlnJywgWydsYXJnZScsICdncmVhdCddKTsKa2FtdXMudGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwprYW11cy50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwoKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdiaWcnKSk7CmNvbnNvbGUubG9nKGthbXVzLmFtYmlsU2lub25pbSgnaHVnZScpKTsKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdnaWdhbnRpYycpKTsKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTs=