class Klasemen:
def __init__(self):
self.poin_klub = {}
def catatPermainan(self, klubKandang, klubTandang, skor):
# Pisahkan skor menjadi angka
skor_kandang, skor_tandang = map(int, skor.split('-'))
# Pastikan klub ada dalam dict
if klubKandang not in self.poin_klub:
self.poin_klub[klubKandang] = 0
if klubTandang not in self.poin_klub:
self.poin_klub[klubTandang] = 0
# Hitung poin
if skor_kandang > skor_tandang:
self.poin_klub[klubKandang] += 3
elif skor_kandang < skor_tandang:
self.poin_klub[klubTandang] += 3
else:
self.poin_klub[klubKandang] += 1
self.poin_klub[klubTandang] += 1
def cetakKlasemen(self):
# Urutkan berdasarkan poin (descending), lalu nama (ascending)
return sorted(self.poin_klub.items(), key=lambda x: (-x[1], x[0]))
def ambilPeringkat(self, nomorPeringkat):
klasemen = self.cetakKlasemen()
if 1 <= nomorPeringkat <= len(klasemen):
return klasemen[nomorPeringkat - 1][0]
else:
return "Peringkat tidak tersedia"
# Contoh Penggunaan:
k = Klasemen()
k.catatPermainan("Persija", "Persib", "2-1")
k.catatPermainan("Persebaya", "Persija", "1-1")
k.catatPermainan("Persib", "Persebaya", "0-3")
print("Klasemen:")
for klub, poin in k.cetakKlasemen():
print(f"{klub}: {poin} poin")
print("\nPeringkat ke-1:", k.ambilPeringkat(1))
print("Peringkat ke-2:", k.ambilPeringkat(2))
print("Peringkat ke-3:", k.ambilPeringkat(3))
Y2xhc3MgS2xhc2VtZW46CiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5wb2luX2tsdWIgPSB7fQoKICAgIGRlZiBjYXRhdFBlcm1haW5hbihzZWxmLCBrbHViS2FuZGFuZywga2x1YlRhbmRhbmcsIHNrb3IpOgogICAgICAgICMgUGlzYWhrYW4gc2tvciBtZW5qYWRpIGFuZ2thCiAgICAgICAgc2tvcl9rYW5kYW5nLCBza29yX3RhbmRhbmcgPSBtYXAoaW50LCBza29yLnNwbGl0KCctJykpCgogICAgICAgICMgUGFzdGlrYW4ga2x1YiBhZGEgZGFsYW0gZGljdAogICAgICAgIGlmIGtsdWJLYW5kYW5nIG5vdCBpbiBzZWxmLnBvaW5fa2x1YjoKICAgICAgICAgICAgc2VsZi5wb2luX2tsdWJba2x1YkthbmRhbmddID0gMAogICAgICAgIGlmIGtsdWJUYW5kYW5nIG5vdCBpbiBzZWxmLnBvaW5fa2x1YjoKICAgICAgICAgICAgc2VsZi5wb2luX2tsdWJba2x1YlRhbmRhbmddID0gMAoKICAgICAgICAjIEhpdHVuZyBwb2luCiAgICAgICAgaWYgc2tvcl9rYW5kYW5nID4gc2tvcl90YW5kYW5nOgogICAgICAgICAgICBzZWxmLnBvaW5fa2x1YltrbHViS2FuZGFuZ10gKz0gMwogICAgICAgIGVsaWYgc2tvcl9rYW5kYW5nIDwgc2tvcl90YW5kYW5nOgogICAgICAgICAgICBzZWxmLnBvaW5fa2x1YltrbHViVGFuZGFuZ10gKz0gMwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYucG9pbl9rbHViW2tsdWJLYW5kYW5nXSArPSAxCiAgICAgICAgICAgIHNlbGYucG9pbl9rbHViW2tsdWJUYW5kYW5nXSArPSAxCgogICAgZGVmIGNldGFrS2xhc2VtZW4oc2VsZik6CiAgICAgICAgIyBVcnV0a2FuIGJlcmRhc2Fya2FuIHBvaW4gKGRlc2NlbmRpbmcpLCBsYWx1IG5hbWEgKGFzY2VuZGluZykKICAgICAgICByZXR1cm4gc29ydGVkKHNlbGYucG9pbl9rbHViLml0ZW1zKCksIGtleT1sYW1iZGEgeDogKC14WzFdLCB4WzBdKSkKCiAgICBkZWYgYW1iaWxQZXJpbmdrYXQoc2VsZiwgbm9tb3JQZXJpbmdrYXQpOgogICAgICAgIGtsYXNlbWVuID0gc2VsZi5jZXRha0tsYXNlbWVuKCkKICAgICAgICBpZiAxIDw9IG5vbW9yUGVyaW5na2F0IDw9IGxlbihrbGFzZW1lbik6CiAgICAgICAgICAgIHJldHVybiBrbGFzZW1lbltub21vclBlcmluZ2thdCAtIDFdWzBdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICJQZXJpbmdrYXQgdGlkYWsgdGVyc2VkaWEiCgoKIyBDb250b2ggUGVuZ2d1bmFhbjoKayA9IEtsYXNlbWVuKCkKay5jYXRhdFBlcm1haW5hbigiUGVyc2lqYSIsICJQZXJzaWIiLCAiMi0xIikKay5jYXRhdFBlcm1haW5hbigiUGVyc2ViYXlhIiwgIlBlcnNpamEiLCAiMS0xIikKay5jYXRhdFBlcm1haW5hbigiUGVyc2liIiwgIlBlcnNlYmF5YSIsICIwLTMiKQoKcHJpbnQoIktsYXNlbWVuOiIpCmZvciBrbHViLCBwb2luIGluIGsuY2V0YWtLbGFzZW1lbigpOgogICAgcHJpbnQoZiJ7a2x1Yn06IHtwb2lufSBwb2luIikKCnByaW50KCJcblBlcmluZ2thdCBrZS0xOiIsIGsuYW1iaWxQZXJpbmdrYXQoMSkpCnByaW50KCJQZXJpbmdrYXQga2UtMjoiLCBrLmFtYmlsUGVyaW5na2F0KDIpKQpwcmludCgiUGVyaW5na2F0IGtlLTM6Iiwgay5hbWJpbFBlcmluZ2thdCgzKSkK