fork download
  1. class Kamus {
  2. constructor() {
  3. this.data = new Map();
  4. }
  5.  
  6. tambah(kata, sinonim) {
  7. if (!this.data.has(kata)) {
  8. this.data.set(kata, []);
  9. }
  10.  
  11. const existingSinonim = this.data.get(kata);
  12.  
  13. for (let sin of sinonim) {
  14. if (!existingSinonim.includes(sin)) {
  15. existingSinonim.push(sin);
  16. }
  17. }
  18. }
  19.  
  20. ambilSinonim(kata) {
  21. if (!this.data.has(kata)) {
  22. return null;
  23. }
  24.  
  25. const sinonimLangsung = this.data.get(kata) || [];
  26.  
  27. const sinonimTidakLangsung = [];
  28.  
  29. for (let [kataLain, daftarSinonim] of this.data.entries()) {
  30. if (kataLain !== kata && daftarSinonim.includes(kata)) {
  31. sinonimTidakLangsung.push(kataLain);
  32. }
  33. }
  34.  
  35. const hasil = [...sinonimLangsung, ...sinonimTidakLangsung];
  36.  
  37. return console.log([...new Set(hasil)]);
  38. }
  39.  
  40. tampilkanSemuaData() {
  41. console.log("Data Kamus:");
  42. for (let [kata, sinonim] of this.data.entries()) {
  43. console.log(`${kata}: [${sinonim.join(', ')}]`);
  44. }
  45. }
  46. }
  47.  
  48. const kamus = new Kamus();
  49. kamus.tambah('huge', ['giant', 'enourmous', 'gigantic']);
  50. kamus.tambah('big', ['large', 'great']);
  51. kamus.ambilSinonim('huge');
  52. kamus.ambilSinonim('big');
  53. kamus.tampilkanSemuaData();
Success #stdin #stdout 0.03s 17488KB
stdin
Standard input is empty
stdout
giant,enourmous,gigantic
large,great
Data Kamus:
huge: [giant, enourmous, gigantic]
big: [large, great]