class Kamus {
constructor() {
this.sinonimMap = {};
}
tambah(kata, sinonim) {
if (!this.sinonimMap[kata]) {
this.sinonimMap[kata] = [];
}
for (const s of sinonim) {
if (!this.sinonimMap[kata].includes(s)) {
this.sinonimMap[kata].push(s);
}
if (!this.sinonimMap[s]) {
this.sinonimMap[s] = [];
}
if (!this.sinonimMap[s].includes(kata)) {
this.sinonimMap[s].push(kata);
}
}
}
ambilSinonim(kata) {
if (this.sinonimMap.hasOwnProperty(kata)) {
return this.sinonimMap[kata];
}
return 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'));
Y2xhc3MgS2FtdXMgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgdGhpcy5zaW5vbmltTWFwID0ge307CiAgICB9CgogICAgdGFtYmFoKGthdGEsIHNpbm9uaW0pIHsKICAgICAgICBpZiAoIXRoaXMuc2lub25pbU1hcFtrYXRhXSkgewogICAgICAgICAgICB0aGlzLnNpbm9uaW1NYXBba2F0YV0gPSBbXTsKICAgICAgICB9CgogICAgICAgIGZvciAoY29uc3QgcyBvZiBzaW5vbmltKSB7CiAgICAgICAgICAgIGlmICghdGhpcy5zaW5vbmltTWFwW2thdGFdLmluY2x1ZGVzKHMpKSB7CiAgICAgICAgICAgICAgICB0aGlzLnNpbm9uaW1NYXBba2F0YV0ucHVzaChzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCF0aGlzLnNpbm9uaW1NYXBbc10pIHsKICAgICAgICAgICAgICAgIHRoaXMuc2lub25pbU1hcFtzXSA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoIXRoaXMuc2lub25pbU1hcFtzXS5pbmNsdWRlcyhrYXRhKSkgewogICAgICAgICAgICAgICAgdGhpcy5zaW5vbmltTWFwW3NdLnB1c2goa2F0YSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIGFtYmlsU2lub25pbShrYXRhKSB7CiAgICAgICAgaWYgKHRoaXMuc2lub25pbU1hcC5oYXNPd25Qcm9wZXJ0eShrYXRhKSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zaW5vbmltTWFwW2thdGFdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQoKY29uc3Qga2FtdXMgPSBuZXcgS2FtdXMoKTsKCmthbXVzLnRhbWJhaCgnYmlnJywgWydsYXJnZScsICdncmVhdCddKTsKa2FtdXMudGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwprYW11cy50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwoKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdiaWcnKSk7CmNvbnNvbGUubG9nKGthbXVzLmFtYmlsU2lub25pbSgnaHVnZScpKTsKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdnaWdhbnRpYycpKTsKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTs=