package main
import (
"fmt"
"strconv"
"sort"
"strings"
)
type Klasemen struct{
poin map[string]int
}
func NewKlasemen(klub []string) *Klasemen{
p := make(map[string]int)
for _, k := range klub {
p[k]=0
}
return &Klasemen{poin: p}
}
func (k *Klasemen) CatatPermainan(klubKandang, klubTandang, skor string){
bagianSkor := strings.Split(skor,":")
skorKandang, _ := strconv.Atoi(bagianSkor[0])
skorTandang, _ := strconv.Atoi(bagianSkor[1])
if skorKandang > skorTandang {
k.poin [klubKandang] +=3
}else if skorTandang > skorKandang {
k.poin [klubTandang] +=3
}else{
k.poin [klubTandang] +=1
k.poin [klubKandang] +=1
}
}
type KlubPoin struct{
Nama string
Poin int
}
func (k *Klasemen) CetakKlasemen() map[string]int{
return k.poin
}
func (k *Klasemen) AmbilPeringkat(nomorPeringkat int) string{
var daftar []KlubPoin
for nama,poin := range k.poin{
daftar = append(daftar, KlubPoin{Nama: nama,Poin: poin})
}
sort.Slice(daftar, func(i, j int) bool {
return daftar[i].Poin > daftar[j].Poin
})
indeks:= nomorPeringkat - 1
if indeks >= 0 && indeks < len(daftar) {
return daftar[indeks].Nama
}
return ""
}
func main(){
klasemen := NewKlasemen([]string{"Liverpool","Arsenal","Mancester United"})
klasemen.CatatPermainan("Arsenal", "Liverpool", "2:1")
klasemen.CatatPermainan("Arsenal", "Chelsea", "1:1")
klasemen.CatatPermainan("Chelsea", "Arsenal", "0:3")
klasemen.CatatPermainan("Chelsea", "Liverpool", "3:2")
klasemen.CatatPermainan("Liverpool", "Arsenal", "2:2")
klasemen.CatatPermainan("Liverpool", "Chelsea", "0:0")
klasemen.CatatPermainan("Manchester United", "Liverpool", "3:0")
klasemen.CatatPermainan("Manchester United", "Chelsea", "2:1")
klasemen.CatatPermainan("Arsenal", "Manchester United", "0:1")
fmt.Println("klasemen Akhir: ", klasemen.CetakKlasemen())
fmt.Println("Peringkat 1: ", klasemen.AmbilPeringkat(1))
}
cGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJzdHJjb252IgoJInNvcnQiCgkic3RyaW5ncyIKKQoKdHlwZSBLbGFzZW1lbiBzdHJ1Y3R7Cglwb2luIG1hcFtzdHJpbmddaW50Cn0KCmZ1bmMgTmV3S2xhc2VtZW4oa2x1YiBbXXN0cmluZykgKktsYXNlbWVuewoJcCA6PSBtYWtlKG1hcFtzdHJpbmddaW50KQoJZm9yIF8sIGsgOj0gcmFuZ2Uga2x1YiB7CgkJcFtrXT0wCgl9CglyZXR1cm4gJktsYXNlbWVue3BvaW46IHB9Cn0KCmZ1bmMgKGsgKktsYXNlbWVuKSBDYXRhdFBlcm1haW5hbihrbHViS2FuZGFuZywga2x1YlRhbmRhbmcsIHNrb3Igc3RyaW5nKXsKCWJhZ2lhblNrb3IgOj0gc3RyaW5ncy5TcGxpdChza29yLCI6IikKCXNrb3JLYW5kYW5nLCBfIDo9IHN0cmNvbnYuQXRvaShiYWdpYW5Ta29yWzBdKQoJc2tvclRhbmRhbmcsIF8gOj0gc3RyY29udi5BdG9pKGJhZ2lhblNrb3JbMV0pCgoJaWYgc2tvckthbmRhbmcgPiBza29yVGFuZGFuZyB7CgkJay5wb2luIFtrbHViS2FuZGFuZ10gKz0zCgl9ZWxzZSBpZiBza29yVGFuZGFuZyA+IHNrb3JLYW5kYW5nIHsKCQlrLnBvaW4gW2tsdWJUYW5kYW5nXSArPTMKCX1lbHNlewoJCWsucG9pbiBba2x1YlRhbmRhbmddICs9MQoJCWsucG9pbiBba2x1YkthbmRhbmddICs9MQoJfQp9CnR5cGUgS2x1YlBvaW4gc3RydWN0ewoJTmFtYSBzdHJpbmcKCVBvaW4gaW50Cn0KZnVuYyAoayAqS2xhc2VtZW4pIENldGFrS2xhc2VtZW4oKSBtYXBbc3RyaW5nXWludHsKCXJldHVybiBrLnBvaW4KfQpmdW5jIChrICpLbGFzZW1lbikgQW1iaWxQZXJpbmdrYXQobm9tb3JQZXJpbmdrYXQgaW50KSBzdHJpbmd7Cgl2YXIgZGFmdGFyIFtdS2x1YlBvaW4KCWZvciBuYW1hLHBvaW4gOj0gcmFuZ2Ugay5wb2luewoJCWRhZnRhciA9IGFwcGVuZChkYWZ0YXIsIEtsdWJQb2lue05hbWE6IG5hbWEsUG9pbjogcG9pbn0pCgl9CgkKCXNvcnQuU2xpY2UoZGFmdGFyLCBmdW5jKGksIGogaW50KSBib29sIHsKCQlyZXR1cm4gZGFmdGFyW2ldLlBvaW4gPiBkYWZ0YXJbal0uUG9pbgoJfSkKCglpbmRla3M6PSBub21vclBlcmluZ2thdCAtIDEKCWlmIGluZGVrcyA+PSAwICYmIGluZGVrcyA8IGxlbihkYWZ0YXIpIHsKCQlyZXR1cm4gZGFmdGFyW2luZGVrc10uTmFtYQoJfQoJcmV0dXJuICIiIAp9CgpmdW5jIG1haW4oKXsKCWtsYXNlbWVuIDo9IE5ld0tsYXNlbWVuKFtdc3RyaW5neyJMaXZlcnBvb2wiLCJBcnNlbmFsIiwiTWFuY2VzdGVyIFVuaXRlZCJ9KQoJCglrbGFzZW1lbi5DYXRhdFBlcm1haW5hbigiQXJzZW5hbCIsICJMaXZlcnBvb2wiLCAiMjoxIikKCWtsYXNlbWVuLkNhdGF0UGVybWFpbmFuKCJBcnNlbmFsIiwgIkNoZWxzZWEiLCAiMToxIikKCWtsYXNlbWVuLkNhdGF0UGVybWFpbmFuKCJDaGVsc2VhIiwgIkFyc2VuYWwiLCAiMDozIikKCWtsYXNlbWVuLkNhdGF0UGVybWFpbmFuKCJDaGVsc2VhIiwgIkxpdmVycG9vbCIsICIzOjIiKQoJa2xhc2VtZW4uQ2F0YXRQZXJtYWluYW4oIkxpdmVycG9vbCIsICJBcnNlbmFsIiwgIjI6MiIpCglrbGFzZW1lbi5DYXRhdFBlcm1haW5hbigiTGl2ZXJwb29sIiwgIkNoZWxzZWEiLCAiMDowIikKCglrbGFzZW1lbi5DYXRhdFBlcm1haW5hbigiTWFuY2hlc3RlciBVbml0ZWQiLCAiTGl2ZXJwb29sIiwgIjM6MCIpCglrbGFzZW1lbi5DYXRhdFBlcm1haW5hbigiTWFuY2hlc3RlciBVbml0ZWQiLCAiQ2hlbHNlYSIsICIyOjEiKQoJa2xhc2VtZW4uQ2F0YXRQZXJtYWluYW4oIkFyc2VuYWwiLCAiTWFuY2hlc3RlciBVbml0ZWQiLCAiMDoxIikKCglmbXQuUHJpbnRsbigia2xhc2VtZW4gQWtoaXI6ICIsIGtsYXNlbWVuLkNldGFrS2xhc2VtZW4oKSkKCWZtdC5QcmludGxuKCJQZXJpbmdrYXQgMTogIiwga2xhc2VtZW4uQW1iaWxQZXJpbmdrYXQoMSkpCn0=