class Kamus {
constructor() {
this.isi = new Map();
}
tambah(kata, sinonim) {
if (!this.isi.has(kata)) {
this.isi.set(kata, new Set());
}
for (const persinonim of sinonim) {
this.isi.get(kata).add(persinonim);
if (!this.isi.has(persinonim)) {
this.isi.set(persinonim, new Set());
}
this.isi.get(persinonim).add(kata);
}
}
ambilSinonim(kata) {
if (!this.isi.has(kata)) {
return null;
}
return Array.from(this.isi.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'));
Y2xhc3MgS2FtdXMgewogIGNvbnN0cnVjdG9yKCkgewogICAgdGhpcy5pc2kgPSBuZXcgTWFwKCk7CiAgfQoKICB0YW1iYWgoa2F0YSwgc2lub25pbSkgewogICAgaWYgKCF0aGlzLmlzaS5oYXMoa2F0YSkpIHsKICAgICAgdGhpcy5pc2kuc2V0KGthdGEsIG5ldyBTZXQoKSk7CiAgICB9CgogICAgZm9yIChjb25zdCBwZXJzaW5vbmltIG9mIHNpbm9uaW0pIHsKICAgICAgdGhpcy5pc2kuZ2V0KGthdGEpLmFkZChwZXJzaW5vbmltKTsKCiAgICAgIGlmICghdGhpcy5pc2kuaGFzKHBlcnNpbm9uaW0pKSB7CiAgICAgICAgdGhpcy5pc2kuc2V0KHBlcnNpbm9uaW0sIG5ldyBTZXQoKSk7CiAgICAgIH0KCiAgICAgIHRoaXMuaXNpLmdldChwZXJzaW5vbmltKS5hZGQoa2F0YSk7CiAgICB9CiAgfQoKICBhbWJpbFNpbm9uaW0oa2F0YSkgewogICAgaWYgKCF0aGlzLmlzaS5oYXMoa2F0YSkpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5pc2kuZ2V0KGthdGEpKTsKICB9Cn0KCmNvbnN0IGthbXVzID0gbmV3IEthbXVzKCk7CmthbXVzLnRhbWJhaCgnYmlnJywgWydsYXJnZScsICdncmVhdCddKTsKa2FtdXMudGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwprYW11cy50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwoKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdiaWcnKSk7Cgpjb25zb2xlLmxvZyhrYW11cy5hbWJpbFNpbm9uaW0oJ2h1Z2UnKSk7Cgpjb25zb2xlLmxvZyhrYW11cy5hbWJpbFNpbm9uaW0oJ2dpZ2FudGljJykpOwoKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTs=