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"))
}
cGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJzdHJpbmdzIgopCgp0eXBlIEthbXVzIHN0cnVjdCB7CglEYXRhIG1hcFtzdHJpbmddW11zdHJpbmcKfQoKZnVuYyAoayAqS2FtdXMpIHRhbWJhaChrYXRhIHN0cmluZywgc2lub25pbSBbXXN0cmluZykgewoJay5EYXRhW2thdGFdID0gYXBwZW5kKGsuRGF0YVtrYXRhXSwgc2lub25pbS4uLikKCWlmIGsuRGF0YVtrYXRhXSAhPSBuaWwgewoJCWZvciBfLCBzIDo9IHJhbmdlIHNpbm9uaW0gewoJCQlrLkRhdGFbc10gPSBhcHBlbmQoay5EYXRhW3NdLCBrYXRhKQoJCX0KCX0KfQoKZnVuYyAoayAqS2FtdXMpIGFtYmlsU2lub25pbShrYXRhIHN0cmluZykgW11zdHJpbmcgewoJdmFyIHJlc3VsdCBbXXN0cmluZwoJZm9yIF8sIHMgOj0gcmFuZ2Ugay5EYXRhW2thdGFdIHsKCQlyZXN1bHQgPSBhcHBlbmQocmVzdWx0LCBmbXQuU3ByaW50ZigiJyVzJyIsIHMpKQoJfQoJcmV0dXJuIFtdc3RyaW5ne3N0cmluZ3MuSm9pbihyZXN1bHQsICIsIil9Cn0KCmZ1bmMgTmV3S2FtdXMoKSAqS2FtdXMgewoJcmV0dXJuICZLYW11c3sKCQlEYXRhOiBtYWtlKG1hcFtzdHJpbmddW11zdHJpbmcpLAoJfQp9CgpmdW5jIG1haW4oKSB7CglrYW11cyA6PSBOZXdLYW11cygpCgoJa2FtdXMudGFtYmFoKCJiaWciLCBbXXN0cmluZ3sibGFyZ2UiLCAiZ3JlYXQifSkKCWthbXVzLnRhbWJhaCgiYmlnIiwgW11zdHJpbmd7Imh1Z2UiLCAiZmF0In0pCglrYW11cy50YW1iYWgoImh1Z2UiLCBbXXN0cmluZ3siZW5vcm1vdXMiLCAiZ2lnYW50aWMifSkKCglmbXQuUHJpbnRsbihrYW11cy5hbWJpbFNpbm9uaW0oImJpZyIpKQoJZm10LlByaW50bG4oa2FtdXMuYW1iaWxTaW5vbmltKCJodWdlIikpCglmbXQuUHJpbnRsbihrYW11cy5hbWJpbFNpbm9uaW0oImdpZ2FudGljIikpCglmbXQuUHJpbnRsbihrYW11cy5hbWJpbFNpbm9uaW0oImNvbG9zc2FsIikpCn0K