from typing import List, Set, Dict, Optional
class Kamus:
def __init__(self):
self._data: Dict[str, Set[str]] = {}
def tambah(self, kata: str, sinonim: List[str]) -> None:
self._data.setdefault(kata, set())
self._data[kata].update(sinonim)
for s in sinonim:
self._data.setdefault(s, set())
self._data[s].add(kata)
def ambil_sinonim(self, kata: str) -> Optional[List[str]]:
hasil_set = self._data.get(kata)
if hasil_set is not None:
return list(hasil_set)
return None
def main_demonstrasi():
"""
Fungsi ini mensimulasikan sesi pengguna secara otomatis untuk Ideone.
"""
kamus = Kamus()
print("--- Memulai Sesi Demonstrasi Kamus ---")
# 1. Menambahkan data awal
print("\n1. Menambahkan data awal: kamus.tambah('big', ['large', 'great'])")
kamus.tambah('big', ['large', 'great'])
print(f" -> Sinonim 'big': {kamus.ambil_sinonim('big')}")
# 2. Mencoba menambahkan sinonim yang sudah ada dan yang baru ke kata 'big'
print("\n2. Menambahkan 'huge' (baru) dan 'large' (duplikat) ke 'big'")
kata = 'big'
sinonim_baru_list = ['huge', 'large']
sinonim_saat_ini = kamus.ambil_sinonim(kata)
sinonim_untuk_ditambahkan = [s for s in sinonim_baru_list if s not in sinonim_saat_ini]
sinonim_yang_diabaikan = [s for s in sinonim_baru_list if s in sinonim_saat_ini]
print(f" -> Input sinonim baru: {sinonim_baru_list}")
if sinonim_yang_diabaikan:
print(f" -> Info: Sinonim '{', '.join(sinonim_yang_diabaikan)}' sudah ada dan diabaikan.")
if sinonim_untuk_ditambahkan:
kamus.tambah(kata, sinonim_untuk_ditambahkan)
print(f" -> Berhasil menambahkan: '{', '.join(sinonim_untuk_ditambahkan)}'")
print(f" -> Hasil akhir sinonim 'big': {kamus.ambil_sinonim('big')}")
# 3. Menambahkan kata yang benar-benar baru
print("\n3. Menambahkan kata baru: kamus.tambah('small', ['tiny'])")
kamus.tambah('small', ['tiny'])
print(f" -> Sinonim 'small': {kamus.ambil_sinonim('small')}")
# 4. Mengambil sinonim dari kata 'tiny' (menguji hubungan dua arah)
print("\n4. Mengambil sinonim 'tiny'")
print(f" -> Hasil: {kamus.ambil_sinonim('tiny')}")
# 5. Mencari kata yang tidak ada
print("\n5. Mencari kata 'fast' yang tidak ada di kamus")
print(f" -> Hasil: {kamus.ambil_sinonim('fast')}")
print("\n--- Sesi Demonstrasi Selesai ---")
# Menjalankan fungsi demonstrasi
main_demonstrasi()