fork download
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. )
  6.  
  7. type Kamus struct {
  8. data map[string]map[string]bool
  9. }
  10.  
  11. // Constructor untuk membuat instance baru dari Kamus
  12. func NewKamus() *Kamus {
  13. return &Kamus{
  14. data: make(map[string]map[string]bool),
  15. }
  16. }
  17.  
  18. // Menambahkan kata dan sinonimnya ke dalam kamus
  19. func (k *Kamus) Tambah(kata string, sinonim []string) {
  20. if k.data[kata] == nil {
  21. k.data[kata] = make(map[string]bool)
  22. }
  23.  
  24. for _, s := range sinonim {
  25. k.data[kata][s] = true
  26. if k.data[s] == nil {
  27. k.data[s] = make(map[string]bool)
  28. }
  29. k.data[s][kata] = true
  30. }
  31. }
  32.  
  33. // Mengambil semua sinonim dari sebuah kata
  34. func (k *Kamus) AmbilSinonim(kata string) []string {
  35. sinonimSet, exists := k.data[kata]
  36. if !exists {
  37. return nil
  38. }
  39.  
  40. result := make([]string, 0)
  41. for sinonim := range sinonimSet {
  42. result = append(result, sinonim)
  43. }
  44.  
  45. return result
  46. }
  47.  
  48. func main() {
  49. kamus := NewKamus()
  50. kamus.Tambah("big", []string{"large", "great"})
  51. kamus.Tambah("big", []string{"huge", "fat"})
  52. kamus.Tambah("huge", []string{"enormous", "gigantic"})
  53.  
  54. fmt.Println("Sinonim dari 'big':", kamus.AmbilSinonim("big"))
  55. fmt.Println("Sinonim dari 'huge':", kamus.AmbilSinonim("huge"))
  56. fmt.Println("Sinonim dari 'gigantic':", kamus.AmbilSinonim("gigantic"))
  57. fmt.Println("Sinonim dari 'colossal':", kamus.AmbilSinonim("colossal"))
  58. }
  59.  
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
Sinonim dari 'big': [fat large great huge]
Sinonim dari 'huge': [gigantic big enormous]
Sinonim dari 'gigantic': [huge]
Sinonim dari 'colossal': []