class Kamus {
constructor() {
this.data = new Map();
}
tambah(kata, sinonim) {
// Jika kata belum ada, buat array kosong
if (!this.data.has(kata)) {
this.data.set(kata, []);
}
// Tambahkan sinonim baru ke kata yang ada
const existingSinonim = this.data.get(kata);
for (let sin of sinonim) {
if (!existingSinonim.includes(sin)) {
existingSinonim.push(sin);
}
}
// Update sinonim yang sudah ada untuk menambahkan kata ini sebagai sinonim mereka
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);
}
}
// Contoh penggunaan sesuai dengan yang diminta
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
Y2xhc3MgS2FtdXMgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgdGhpcy5kYXRhID0gbmV3IE1hcCgpOwogICAgfQogICAgCiAgICB0YW1iYWgoa2F0YSwgc2lub25pbSkgewogICAgICAgIC8vIEppa2Ega2F0YSBiZWx1bSBhZGEsIGJ1YXQgYXJyYXkga29zb25nCiAgICAgICAgaWYgKCF0aGlzLmRhdGEuaGFzKGthdGEpKSB7CiAgICAgICAgICAgIHRoaXMuZGF0YS5zZXQoa2F0YSwgW10pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBUYW1iYWhrYW4gc2lub25pbSBiYXJ1IGtlIGthdGEgeWFuZyBhZGEKICAgICAgICBjb25zdCBleGlzdGluZ1Npbm9uaW0gPSB0aGlzLmRhdGEuZ2V0KGthdGEpOwogICAgICAgIGZvciAobGV0IHNpbiBvZiBzaW5vbmltKSB7CiAgICAgICAgICAgIGlmICghZXhpc3RpbmdTaW5vbmltLmluY2x1ZGVzKHNpbikpIHsKICAgICAgICAgICAgICAgIGV4aXN0aW5nU2lub25pbS5wdXNoKHNpbik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gVXBkYXRlIHNpbm9uaW0geWFuZyBzdWRhaCBhZGEgdW50dWsgbWVuYW1iYWhrYW4ga2F0YSBpbmkgc2ViYWdhaSBzaW5vbmltIG1lcmVrYQogICAgICAgIGZvciAobGV0IHNpbiBvZiBzaW5vbmltKSB7CiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhLmhhcyhzaW4pKSB7CiAgICAgICAgICAgICAgICB0aGlzLmRhdGEuc2V0KHNpbiwgW10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHNpbkRhdGEgPSB0aGlzLmRhdGEuZ2V0KHNpbik7CiAgICAgICAgICAgIGlmICghc2luRGF0YS5pbmNsdWRlcyhrYXRhKSkgewogICAgICAgICAgICAgICAgc2luRGF0YS5wdXNoKGthdGEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICBhbWJpbFNpbm9uaW0oa2F0YSkgewogICAgICAgIGlmICghdGhpcy5kYXRhLmhhcyhrYXRhKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5nZXQoa2F0YSk7CiAgICB9Cn0KCi8vIENvbnRvaCBwZW5nZ3VuYWFuIHNlc3VhaSBkZW5nYW4geWFuZyBkaW1pbnRhCmNvbnN0IGthbXVzID0gbmV3IEthbXVzKCk7CmthbXVzLnRhbWJhaCgnYmlnJywgWydsYXJnZScsICdncmVhdCddKTsKa2FtdXMudGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pOwprYW11cy50YW1iYWgoJ2h1Z2UnLCBbJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10pOwoKY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdiaWcnKSk7IC8vIFsnbGFyZ2UnLCAnZ3JlYXQnLCAnaHVnZScsICdmYXQnXQpjb25zb2xlLmxvZyhrYW11cy5hbWJpbFNpbm9uaW0oJ2h1Z2UnKSk7IC8vIFsnYmlnJywgJ2Vub3Jtb3VzJywgJ2dpZ2FudGljJ10KY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdnaWdhbnRpYycpKTsgLy8gWydodWdlJ10KY29uc29sZS5sb2coa2FtdXMuYW1iaWxTaW5vbmltKCdjb2xvc3NhbCcpKTsgLy8gbnVsbA==