class Kamus {
constructor() {
this.data = new Map();
}
tambah(kata, sinonim) {
if (!this.data.has(kata)) {
this.data.set(kata, []);
}
// Tambahkan sinonim baru
const existingSinonim = this.data.get(kata);
for (let sin of sinonim) {
if (!existingSinonim.includes(sin)) {
existingSinonim.push(sin);
}
}
// Update sinonim
for (let sin of sinonim) {
if (!this.data.has(sin)) {
this.data.set(sin, []);
}
const sinData = this.data.get(sin);
if (!sinData.includes(kata)) {
sinData.push(kata);
}
}
}
ambilSinonim(kata) {
if (!this.data.has(kata)) {
return null;
}
return 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')); // ['large', 'great', 'huge', 'fat']
console.log(kamus.ambilSinonim('huge')); // ['big', 'enormous', 'gigantic']
console.log(kamus.ambilSinonim('gigantic')); // ['huge']
console.log(kamus.ambilSinonim('colossal')); // null
Y2xhc3MgS2FtdXMgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgdGhpcy5kYXRhID0gbmV3IE1hcCgpOwogICAgfQogICAgCiAgICB0YW1iYWgoa2F0YSwgc2lub25pbSkgewogICAgICAgIAogICAgICAgIGlmICghdGhpcy5kYXRhLmhhcyhrYXRhKSkgewogICAgICAgICAgICB0aGlzLmRhdGEuc2V0KGthdGEsIFtdKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gVGFtYmFoa2FuIHNpbm9uaW0gYmFydQogICAgICAgIGNvbnN0IGV4aXN0aW5nU2lub25pbSA9IHRoaXMuZGF0YS5nZXQoa2F0YSk7CiAgICAgICAgZm9yIChsZXQgc2luIG9mIHNpbm9uaW0pIHsKICAgICAgICAgICAgaWYgKCFleGlzdGluZ1Npbm9uaW0uaW5jbHVkZXMoc2luKSkgewogICAgICAgICAgICAgICAgZXhpc3RpbmdTaW5vbmltLnB1c2goc2luKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBVcGRhdGUgc2lub25pbSAKICAgICAgICBmb3IgKGxldCBzaW4gb2Ygc2lub25pbSkgewogICAgICAgICAgICBpZiAoIXRoaXMuZGF0YS5oYXMoc2luKSkgewogICAgICAgICAgICAgICAgdGhpcy5kYXRhLnNldChzaW4sIFtdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBzaW5EYXRhID0gdGhpcy5kYXRhLmdldChzaW4pOwogICAgICAgICAgICBpZiAoIXNpbkRhdGEuaW5jbHVkZXMoa2F0YSkpIHsKICAgICAgICAgICAgICAgIHNpbkRhdGEucHVzaChrYXRhKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgYW1iaWxTaW5vbmltKGthdGEpIHsKICAgICAgICBpZiAoIXRoaXMuZGF0YS5oYXMoa2F0YSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLmRhdGEuZ2V0KGthdGEpOwogICAgfQp9Cgpjb25zdCBrYW11cyA9IG5ldyBLYW11cygpOwprYW11cy50YW1iYWgoJ2JpZycsIFsnbGFyZ2UnLCAnZ3JlYXQnXSk7CmthbXVzLnRhbWJhaCgnYmlnJywgWydodWdlJywgJ2ZhdCddKTsKa2FtdXMudGFtYmFoKCdodWdlJywgWydlbm9ybW91cycsICdnaWdhbnRpYyddKTsKCmNvbnNvbGUubG9nKGthbXVzLmFtYmlsU2lub25pbSgnYmlnJykpOyAvLyBbJ2xhcmdlJywgJ2dyZWF0JywgJ2h1Z2UnLCAnZmF0J10KY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdodWdlJykpOyAvLyBbJ2JpZycsICdlbm9ybW91cycsICdnaWdhbnRpYyddCmNvbnNvbGUubG9nKGthbXVzLmFtYmlsU2lub25pbSgnZ2lnYW50aWMnKSk7IC8vIFsnaHVnZSddCmNvbnNvbGUubG9nKGthbXVzLmFtYmlsU2lub25pbSgnY29sb3NzYWwnKSk7IC8vIG51bGw=