fork download
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "strconv"
  6. "sort"
  7. "strings"
  8. )
  9.  
  10. type Klasemen struct{
  11. poin map[string]int
  12. }
  13.  
  14. func NewKlasemen(klub []string) *Klasemen{
  15. p := make(map[string]int)
  16. for _, k := range klub {
  17. p[k]=0
  18. }
  19. return &Klasemen{poin: p}
  20. }
  21.  
  22. func (k *Klasemen) CatatPermainan(klubKandang, klubTandang, skor string){
  23. bagianSkor := strings.Split(skor,":")
  24. skorKandang, _ := strconv.Atoi(bagianSkor[0])
  25. skorTandang, _ := strconv.Atoi(bagianSkor[1])
  26.  
  27. if skorKandang > skorTandang {
  28. k.poin [klubKandang] +=3
  29. }else if skorTandang > skorKandang {
  30. k.poin [klubTandang] +=3
  31. }else{
  32. k.poin [klubTandang] +=1
  33. k.poin [klubKandang] +=1
  34. }
  35. }
  36. type KlubPoin struct{
  37. Nama string
  38. Poin int
  39. }
  40. func (k *Klasemen) CetakKlasemen() map[string]int{
  41. return k.poin
  42. }
  43. func (k *Klasemen) AmbilPeringkat(nomorPeringkat int) string{
  44. var daftar []KlubPoin
  45. for nama,poin := range k.poin{
  46. daftar = append(daftar, KlubPoin{Nama: nama,Poin: poin})
  47. }
  48.  
  49. sort.Slice(daftar, func(i, j int) bool {
  50. return daftar[i].Poin > daftar[j].Poin
  51. })
  52.  
  53. indeks:= nomorPeringkat - 1
  54. if indeks >= 0 && indeks < len(daftar) {
  55. return daftar[indeks].Nama
  56. }
  57. return ""
  58. }
  59.  
  60. func main(){
  61. klasemen := NewKlasemen([]string{"Liverpool","Arsenal","Mancester United"})
  62.  
  63. klasemen.CatatPermainan("Arsenal", "Liverpool", "2:1")
  64. klasemen.CatatPermainan("Arsenal", "Chelsea", "1:1")
  65. klasemen.CatatPermainan("Chelsea", "Arsenal", "0:3")
  66. klasemen.CatatPermainan("Chelsea", "Liverpool", "3:2")
  67. klasemen.CatatPermainan("Liverpool", "Arsenal", "2:2")
  68. klasemen.CatatPermainan("Liverpool", "Chelsea", "0:0")
  69.  
  70. klasemen.CatatPermainan("Manchester United", "Liverpool", "3:0")
  71. klasemen.CatatPermainan("Manchester United", "Chelsea", "2:1")
  72. klasemen.CatatPermainan("Arsenal", "Manchester United", "0:1")
  73.  
  74. fmt.Println("klasemen Akhir: ", klasemen.CetakKlasemen())
  75. fmt.Println("Peringkat 1: ", klasemen.AmbilPeringkat(1))
  76. }
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
klasemen Akhir:  map[Arsenal:8 Chelsea:5 Liverpool:2 Mancester United:0 Manchester United:9]
Peringkat 1:  Manchester United