fork download
  1. class Kamus {
  2. constructor() {
  3. this.daftarKata = new Map();
  4. }
  5.  
  6. tambah(kata, sinonim) {
  7. const sinonimLama = this.daftarKata.get(kata) || [];
  8. this.daftarKata.set(kata, [...sinonimLama, ...sinonim]);
  9. }
  10.  
  11. ambilSinonim(kata) {
  12. const hasil = new Set(this.daftarKata.get(kata));
  13.  
  14. for (const [kataUtama, daftarSinonim] of this.daftarKata.entries()) {
  15. if (daftarSinonim.includes(kata)) {
  16. hasil.add(kataUtama);
  17. }
  18. }
  19.  
  20. return hasil.size ? Array.from(hasil) : null;
  21. }
  22. }
  23.  
  24. const kamus = new Kamus();
  25. kamus.tambah('big', ['large', 'great']);
  26. kamus.tambah('big', ['huge', 'fat']);
  27. kamus.tambah('huge', ['enormous', 'gigantic']);
  28.  
  29. console.log(kamus.ambilSinonim('big'));
  30. console.log(kamus.ambilSinonim('huge'));
  31. console.log(kamus.ambilSinonim('gigantic'));
  32. console.log(kamus.ambilSinonim('colossal'));
Success #stdin #stdout 0.05s 19532KB
stdin
Standard input is empty
stdout
large,great,huge,fat
enormous,gigantic,big
huge
null