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())
  9. self._data[kata].update(sinonim)
  10. for s in sinonim:
  11. self._data.setdefault(s, set())
  12. self._data[s].add(kata)
  13.  
  14. def ambil_sinonim(self, kata: str) -> Optional[List[str]]:
  15. hasil_set = self._data.get(kata)
  16. if hasil_set is not None:
  17. return list(hasil_set)
  18. return None
  19.  
  20. def main_demonstrasi():
  21. """
  22. Fungsi ini mensimulasikan sesi pengguna secara otomatis untuk Ideone.
  23. """
  24. kamus = Kamus()
  25. print("--- Memulai Sesi Demonstrasi Kamus ---")
  26.  
  27. # 1. Menambahkan data awal
  28. print("\n1. Menambahkan data awal: kamus.tambah('big', ['large', 'great'])")
  29. kamus.tambah('big', ['large', 'great'])
  30. print(f" -> Sinonim 'big': {kamus.ambil_sinonim('big')}")
  31.  
  32. # 2. Mencoba menambahkan sinonim yang sudah ada dan yang baru ke kata 'big'
  33. print("\n2. Menambahkan 'huge' (baru) dan 'large' (duplikat) ke 'big'")
  34. kata = 'big'
  35. sinonim_baru_list = ['huge', 'large']
  36. sinonim_saat_ini = kamus.ambil_sinonim(kata)
  37.  
  38. sinonim_untuk_ditambahkan = [s for s in sinonim_baru_list if s not in sinonim_saat_ini]
  39. sinonim_yang_diabaikan = [s for s in sinonim_baru_list if s in sinonim_saat_ini]
  40.  
  41. print(f" -> Input sinonim baru: {sinonim_baru_list}")
  42. if sinonim_yang_diabaikan:
  43. print(f" -> Info: Sinonim '{', '.join(sinonim_yang_diabaikan)}' sudah ada dan diabaikan.")
  44. if sinonim_untuk_ditambahkan:
  45. kamus.tambah(kata, sinonim_untuk_ditambahkan)
  46. print(f" -> Berhasil menambahkan: '{', '.join(sinonim_untuk_ditambahkan)}'")
  47.  
  48. print(f" -> Hasil akhir sinonim 'big': {kamus.ambil_sinonim('big')}")
  49.  
  50. # 3. Menambahkan kata yang benar-benar baru
  51. print("\n3. Menambahkan kata baru: kamus.tambah('small', ['tiny'])")
  52. kamus.tambah('small', ['tiny'])
  53. print(f" -> Sinonim 'small': {kamus.ambil_sinonim('small')}")
  54.  
  55. # 4. Mengambil sinonim dari kata 'tiny' (menguji hubungan dua arah)
  56. print("\n4. Mengambil sinonim 'tiny'")
  57. print(f" -> Hasil: {kamus.ambil_sinonim('tiny')}")
  58.  
  59. # 5. Mencari kata yang tidak ada
  60. print("\n5. Mencari kata 'fast' yang tidak ada di kamus")
  61. print(f" -> Hasil: {kamus.ambil_sinonim('fast')}")
  62.  
  63. print("\n--- Sesi Demonstrasi Selesai ---")
  64.  
  65. # Menjalankan fungsi demonstrasi
  66. main_demonstrasi()
Success #stdin #stdout 0.24s 16648KB
stdin
Standard input is empty
stdout
--- Memulai Sesi Demonstrasi Kamus ---

1. Menambahkan data awal: kamus.tambah('big', ['large', 'great'])
   -> Sinonim 'big': ['great', 'large']

2. Menambahkan 'huge' (baru) dan 'large' (duplikat) ke 'big'
   -> Input sinonim baru: ['huge', 'large']
   -> Info: Sinonim 'large' sudah ada dan diabaikan.
   -> Berhasil menambahkan: 'huge'
   -> Hasil akhir sinonim 'big': ['great', 'huge', 'large']

3. Menambahkan kata baru: kamus.tambah('small', ['tiny'])
   -> Sinonim 'small': ['tiny']

4. Mengambil sinonim 'tiny'
   -> Hasil: ['small']

5. Mencari kata 'fast' yang tidak ada di kamus
   -> Hasil: None

--- Sesi Demonstrasi Selesai ---