class Kamus {
constructor() {
this.data = new Map();
}
tambah(kata, sinonimList) {
if (!this.data.has(kata)) {
this.data.set(kata, new Set());
}
sinonimList.forEach(sinonim => {
this.data.get(kata).add(sinonim);
if (!this.data.has(sinonim)) {
this.data.set(sinonim, new Set());
}
this.data.get(sinonim).add(kata);
});
}
ambilSinonim(kata) {
if (!this.data.has(kata)) return null;
return Array.from(this.data.get(kata));
}
}
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'));
Y2xhc3MgS2FtdXMgewogIGNvbnN0cnVjdG9yKCkgewogICAgdGhpcy5kYXRhID0gbmV3IE1hcCgpOwogIH0KCiAgdGFtYmFoKGthdGEsIHNpbm9uaW1MaXN0KSB7CiAgICBpZiAoIXRoaXMuZGF0YS5oYXMoa2F0YSkpIHsKICAgICAgdGhpcy5kYXRhLnNldChrYXRhLCBuZXcgU2V0KCkpOwogICAgfQoKICAgIHNpbm9uaW1MaXN0LmZvckVhY2goc2lub25pbSA9PiB7CiAgICAgIHRoaXMuZGF0YS5nZXQoa2F0YSkuYWRkKHNpbm9uaW0pOwoKICAgICAgaWYgKCF0aGlzLmRhdGEuaGFzKHNpbm9uaW0pKSB7CiAgICAgICAgdGhpcy5kYXRhLnNldChzaW5vbmltLCBuZXcgU2V0KCkpOwogICAgICB9CiAgICAgIHRoaXMuZGF0YS5nZXQoc2lub25pbSkuYWRkKGthdGEpOwogICAgfSk7CiAgfQoKICBhbWJpbFNpbm9uaW0oa2F0YSkgewogICAgaWYgKCF0aGlzLmRhdGEuaGFzKGthdGEpKSByZXR1cm4gbnVsbDsKCiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmRhdGEuZ2V0KGthdGEpKTsKICB9Cn0KCmNvbnN0IGthbXVzID0gbmV3IEthbXVzKCk7CmthbXVzLnRhbWJhaCgnYmlnJywgWydsYXJnZScsICdncmVhdCddKTsKa2FtdXMudGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwprYW11cy50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwoKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdiaWcnKSk7CmNvbnNvbGUubG9nKGthbXVzLmFtYmlsU2lub25pbSgnaHVnZScpKTsKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdnaWdhbnRpYycpKTsKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTs=