fork download
  1. # -------- Muhammad Yalqa R.A. - Suitmedia Backend Test --------
  2.  
  3. class Kamus:
  4. def __init__(self):
  5. self.kamus = {}
  6.  
  7. def tambah(self, kata, daftar_sinonim):
  8. if kata not in self.kamus:
  9. self.kamus[kata] = set()
  10. self.kamus[kata].update(daftar_sinonim)
  11.  
  12. def ambilSinonim(self, kata):
  13. hasil = set()
  14.  
  15. if kata in self.kamus:
  16. hasil.update(self.kamus[kata])
  17.  
  18. for key, sinonim_set in self.kamus.items():
  19. if kata in sinonim_set:
  20. hasil.add(key)
  21.  
  22. if not hasil and all(kata not in s for s in self.kamus.values()):
  23. return None
  24.  
  25. if not hasil:
  26. return [kata]
  27.  
  28. return sorted(hasil)
  29.  
  30.  
  31. # -------- TEST CASES --------
  32.  
  33. kamus = Kamus()
  34. kamus.tambah("big", ["large", "great"])
  35. kamus.tambah("big", ["huge", "fat"])
  36. kamus.tambah("huge", ["enormous", "gigantic"])
  37.  
  38. for kata in ["big", "huge", "gigantic", "colossal"]:
  39. hasil = kamus.ambilSinonim(kata)
  40. print(f"Sinonim dari '{kata}': {hasil if hasil is not None else 'null'}")
Success #stdin #stdout 0.08s 14056KB
stdin
Standard input is empty
stdout
Sinonim dari 'big': ['fat', 'great', 'huge', 'large']
Sinonim dari 'huge': ['big', 'enormous', 'gigantic']
Sinonim dari 'gigantic': ['huge']
Sinonim dari 'colossal': null