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. func NewKamus() *Kamus {
  12. return &Kamus{
  13. data: make(map[string]map[string]bool),
  14. }
  15. }
  16.  
  17. func (k *Kamus) Tambah(kata string, sinonim []string) {
  18. if _, ok := k.data[kata]; !ok {
  19. k.data[kata] = make(map[string]bool)
  20. }
  21. for _, s := range sinonim {
  22. k.data[kata][s] = true
  23. if _, ok := k.data[s]; !ok {
  24. k.data[s] = make(map[string]bool)
  25. }
  26. k.data[s][kata] = true
  27. }
  28. }
  29.  
  30. func (k *Kamus) AmbilSinonim(kata string) []string {
  31. sinonim, ok := k.data[kata]
  32. if !ok {
  33. return nil
  34. }
  35. var result []string
  36. for s := range sinonim {
  37. result = append(result, s)
  38. }
  39. return result
  40. }
  41.  
  42. func main() {
  43. kamus := NewKamus()
  44. kamus.Tambah("big", []string{"large", "great"})
  45. kamus.Tambah("big", []string{"huge", "fat"})
  46. kamus.Tambah("huge", []string{"enormous", "gigantic"})
  47.  
  48. fmt.Println(kamus.AmbilSinonim("big"))
  49. fmt.Println(kamus.AmbilSinonim("huge"))
  50. fmt.Println(kamus.AmbilSinonim("gigantic"))
  51. fmt.Println(kamus.AmbilSinonim("colossal"))
  52. }
  53.  
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
[large great huge fat]
[big enormous gigantic]
[huge]
[]