package main

import (
	"fmt"
	"strings"
)

type Kamus struct {
	Data map[string][]string
}

func (k *Kamus) tambah(kata string, sinonim []string) {
	k.Data[kata] = append(k.Data[kata], sinonim...)
	if k.Data[kata] != nil {
		for _, s := range sinonim {
			k.Data[s] = append(k.Data[s], kata)
		}
	}
}

func (k *Kamus) ambilSinonim(kata string) []string {
	var result []string
	for _, s := range k.Data[kata] {
		result = append(result, fmt.Sprintf("'%s'", s))
	}
	return []string{strings.Join(result, ",")}
}

func NewKamus() *Kamus {
	return &Kamus{
		Data: make(map[string][]string),
	}
}

func main() {
	kamus := NewKamus()

	kamus.tambah("big", []string{"large", "great"})
	kamus.tambah("big", []string{"huge", "fat"})
	kamus.tambah("huge", []string{"enormous", "gigantic"})

	fmt.Println(kamus.ambilSinonim("big"))
	fmt.Println(kamus.ambilSinonim("huge"))
	fmt.Println(kamus.ambilSinonim("gigantic"))
	fmt.Println(kamus.ambilSinonim("colossal"))
}
