fork download
  1. from typing import List, Set, Dict, Optional
  2.  
  3. class Kamus:
  4. def __init__(self):
  5. self._data: Dict[str, Set[str]] = {}
  6.  
  7. def tambah(self, kata: str, sinonim: List[str]) -> None:
  8. self._data.setdefault(kata, set()).update(sinonim)
  9. for s in sinonim:
  10. self._data.setdefault(s, set()).add(kata)
  11.  
  12. def ambilSinonim(self, kata: str) -> Optional[List[str]]:
  13. hasil_set = self._data.get(kata)
  14. if hasil_set is not None:
  15. return list(hasil_set)
  16. return None
  17.  
  18. def main_demonstrasi():
  19. print("--- Memulai Eksekusi Sesuai Contoh Soal ---")
  20.  
  21. kamus = Kamus()
  22. print("\nLangkah 1: Menambahkan kata dan sinonim")
  23. kamus.tambah('big', ['large', 'great'])
  24. print("-> tambah('big', ['large', 'great'])")
  25.  
  26. kamus.tambah('big', ['huge', 'fat'])
  27. print("-> tambah('big', ['huge', 'fat'])")
  28.  
  29. kamus.tambah('huge', ['enormous', 'gigantic'])
  30. print("-> tambah('huge', ['enormous', 'gigantic'])")
  31.  
  32. print("\nLangkah 2: Menjalankan pengujian")
  33.  
  34. hasil_big = kamus.ambilSinonim('big')
  35. print(f"-> Hasil ambilSinonim('big'): {sorted(hasil_big) if hasil_big else None}")
  36.  
  37. hasil_huge = kamus.ambilSinonim('huge')
  38. print(f"-> Hasil ambilSinonim('huge'): {sorted(hasil_huge) if hasil_huge else None}")
  39.  
  40. hasil_gigantic = kamus.ambilSinonim('gigantic')
  41. print(f"-> Hasil ambilSinonim('gigantic'): {hasil_gigantic}")
  42.  
  43. hasil_colossal = kamus.ambilSinonim('colossal')
  44. print(f"-> Hasil ambilSinonim('colossal'): {hasil_colossal}")
  45.  
  46. print("\n--- Eksekusi Selesai ---")
  47.  
  48. if __name__ == "__main__":
  49. main_demonstrasi()
Success #stdin #stdout 0.19s 16852KB
stdin
Standard input is empty
stdout
--- Memulai Eksekusi Sesuai Contoh Soal ---

Langkah 1: Menambahkan kata dan sinonim
-> tambah('big', ['large', 'great'])
-> tambah('big', ['huge', 'fat'])
-> tambah('huge', ['enormous', 'gigantic'])

Langkah 2: Menjalankan pengujian
-> Hasil ambilSinonim('big'): ['fat', 'great', 'huge', 'large']
-> Hasil ambilSinonim('huge'): ['big', 'enormous', 'gigantic']
-> Hasil ambilSinonim('gigantic'): ['huge']
-> Hasil ambilSinonim('colossal'): None

--- Eksekusi Selesai ---