class Kamus:
def __init__(self):
self.dictionary = {}
def tambah(self, kata, sinonim):
"""
Menambahkan kata beserta sinonimnya ke dalam kamus
:param kata: kata yang akan ditambahkan (string)
:param sinonim: sinonim dari kata tersebut (list)
:return: None
"""
# Jika kata belum ada di dictionary, inisialisasi dengan list kosong
if kata not in self.dictionary:
self.dictionary[kata] = []
# Gabungkan sinonim baru dengan sinonim yang sudah ada
self.dictionary[kata].extend(sinonim)
# Hapus duplikat dengan menggunakan set lalu kembali ke list
self.dictionary[kata] = list(set(self.dictionary[kata]))
# Tambahkan hubungan balik (sinonim juga menunjuk ke kata asli)
if sin not in self.
dictionary: self.
dictionary[sin] = []
# Tambahkan kata asli ke sinonim jika belum ada
if kata not in self.
dictionary[sin]: self.
dictionary[sin].
append(kata
)
def ambil_sinonim(self, kata):
"""
Mengambil semua sinonim dari kata yang diberikan
:param kata: kata yang akan dicari sinonimnya (string)
:return: list sinonim atau None jika kata tidak ditemukan
"""
# Jika kata tidak ada di dictionary, return None
if kata not in self.dictionary:
return None
return self.dictionary[kata]
if __name__ == "__main__":
kamus = Kamus()
kamus.tambah('big', ['large', 'great'])
kamus.tambah('big', ['huge', 'fat'])
kamus.tambah('huge', ['enormous', 'gigantic'])
# Test hasil
print("Sinonim dari 'big':", kamus.ambil_sinonim('big'))
print("Sinonim dari 'huge':", kamus.ambil_sinonim('huge'))
print("Sinonim dari 'gigantic':", kamus.ambil_sinonim('gigantic'))
print("Sinonim dari 'colossal':", kamus.ambil_sinonim('colossal'))
Y2xhc3MgS2FtdXM6CiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5kaWN0aW9uYXJ5ID0ge30KICAgIAogICAgZGVmIHRhbWJhaChzZWxmLCBrYXRhLCBzaW5vbmltKToKICAgICAgICAiIiIKICAgICAgICBNZW5hbWJhaGthbiBrYXRhIGJlc2VydGEgc2lub25pbW55YSBrZSBkYWxhbSBrYW11cwogICAgICAgIDpwYXJhbSBrYXRhOiBrYXRhIHlhbmcgYWthbiBkaXRhbWJhaGthbiAoc3RyaW5nKQogICAgICAgIDpwYXJhbSBzaW5vbmltOiBzaW5vbmltIGRhcmkga2F0YSB0ZXJzZWJ1dCAobGlzdCkKICAgICAgICA6cmV0dXJuOiBOb25lCiAgICAgICAgIiIiCiAgICAgICAgIyBKaWthIGthdGEgYmVsdW0gYWRhIGRpIGRpY3Rpb25hcnksIGluaXNpYWxpc2FzaSBkZW5nYW4gbGlzdCBrb3NvbmcKICAgICAgICBpZiBrYXRhIG5vdCBpbiBzZWxmLmRpY3Rpb25hcnk6CiAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVtrYXRhXSA9IFtdCiAgICAgICAgCiAgICAgICAgIyBHYWJ1bmdrYW4gc2lub25pbSBiYXJ1IGRlbmdhbiBzaW5vbmltIHlhbmcgc3VkYWggYWRhCiAgICAgICAgc2VsZi5kaWN0aW9uYXJ5W2thdGFdLmV4dGVuZChzaW5vbmltKQogICAgICAgIAogICAgICAgICMgSGFwdXMgZHVwbGlrYXQgZGVuZ2FuIG1lbmdndW5ha2FuIHNldCBsYWx1IGtlbWJhbGkga2UgbGlzdAogICAgICAgIHNlbGYuZGljdGlvbmFyeVtrYXRhXSA9IGxpc3Qoc2V0KHNlbGYuZGljdGlvbmFyeVtrYXRhXSkpCiAgICAgICAgCiAgICAgICAgIyBUYW1iYWhrYW4gaHVidW5nYW4gYmFsaWsgKHNpbm9uaW0ganVnYSBtZW51bmp1ayBrZSBrYXRhIGFzbGkpCiAgICAgICAgZm9yIHNpbiBpbiBzaW5vbmltOgogICAgICAgICAgICBpZiBzaW4gbm90IGluIHNlbGYuZGljdGlvbmFyeToKICAgICAgICAgICAgICAgIHNlbGYuZGljdGlvbmFyeVtzaW5dID0gW10KICAgICAgICAgICAgCiAgICAgICAgICAgICMgVGFtYmFoa2FuIGthdGEgYXNsaSBrZSBzaW5vbmltIGppa2EgYmVsdW0gYWRhCiAgICAgICAgICAgIGlmIGthdGEgbm90IGluIHNlbGYuZGljdGlvbmFyeVtzaW5dOgogICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5W3Npbl0uYXBwZW5kKGthdGEpCiAgICAKICAgIGRlZiBhbWJpbF9zaW5vbmltKHNlbGYsIGthdGEpOgogICAgICAgICIiIgogICAgICAgIE1lbmdhbWJpbCBzZW11YSBzaW5vbmltIGRhcmkga2F0YSB5YW5nIGRpYmVyaWthbgogICAgICAgIDpwYXJhbSBrYXRhOiBrYXRhIHlhbmcgYWthbiBkaWNhcmkgc2lub25pbW55YSAoc3RyaW5nKQogICAgICAgIDpyZXR1cm46IGxpc3Qgc2lub25pbSBhdGF1IE5vbmUgamlrYSBrYXRhIHRpZGFrIGRpdGVtdWthbgogICAgICAgICIiIgogICAgICAgICMgSmlrYSBrYXRhIHRpZGFrIGFkYSBkaSBkaWN0aW9uYXJ5LCByZXR1cm4gTm9uZQogICAgICAgIGlmIGthdGEgbm90IGluIHNlbGYuZGljdGlvbmFyeToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAKICAgICAgICByZXR1cm4gc2VsZi5kaWN0aW9uYXJ5W2thdGFdCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIGthbXVzID0gS2FtdXMoKQogICAga2FtdXMudGFtYmFoKCdiaWcnLCBbJ2xhcmdlJywgJ2dyZWF0J10pCiAgICBrYW11cy50YW1iYWgoJ2JpZycsIFsnaHVnZScsICdmYXQnXSkKICAgIGthbXVzLnRhbWJhaCgnaHVnZScsIFsnZW5vcm1vdXMnLCAnZ2lnYW50aWMnXSkKICAgIAogICAgIyBUZXN0IGhhc2lsCiAgICBwcmludCgiU2lub25pbSBkYXJpICdiaWcnOiIsIGthbXVzLmFtYmlsX3Npbm9uaW0oJ2JpZycpKQogICAgcHJpbnQoIlNpbm9uaW0gZGFyaSAnaHVnZSc6Iiwga2FtdXMuYW1iaWxfc2lub25pbSgnaHVnZScpKQogICAgcHJpbnQoIlNpbm9uaW0gZGFyaSAnZ2lnYW50aWMnOiIsIGthbXVzLmFtYmlsX3Npbm9uaW0oJ2dpZ2FudGljJykpCiAgICBwcmludCgiU2lub25pbSBkYXJpICdjb2xvc3NhbCc6Iiwga2FtdXMuYW1iaWxfc2lub25pbSgnY29sb3NzYWwnKSk=