class Klasemen:
def __init__(self, clubs):
# make every club start at 0 point
self.poin = {club: 0 for club in clubs}
def catatPermainan(self, klubKandang, klubTandang, skor):
home, away = skor.split(":") # split with :
home, away = int(home), int(away)
if home > away:
self.poin[klubKandang] += 3 # home/kandang win
elif away > home:
self.poin[klubTandang] += 3 # away/tandang win
else:
self.poin[klubKandang] += 1 # tie, both teams get 1 poin
self.poin[klubTandang] += 1
# core logic
def ambilPeringkat(self, nomorPeringkat):
clubs = list(self.cetakKlasemen().keys())
# self.cetakKlasemen refers to klasemen table with self so knows which table
# keys only grab the club names like Arsenal, Chelsea, Liverpool
# list makes it into a list like ['Arsenal', 'Chelsea', 'Liverpool']
return clubs[nomorPeringkat - 1] # buat fit ke array karena array mulai dari 0
def cetakKlasemen(self):
return dict(sorted(self.poin.items(), key=lambda x: x[1], reverse=True))
# self.poin.items() turns the dict into pairs, e.g. ('Arsenal', 8)
# lambda x: x[1] means sort by x[1] (points)
# reverse=True sorts descending, and dict() converts it back to a dictionary
# samples
klasemen = Klasemen(['Liverpool', 'Chelsea', 'Arsenal'])
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')
print(klasemen.cetakKlasemen()) # {'Arsenal': 8, 'Chelsea': 5, 'Liverpool': 2}
print(klasemen.ambilPeringkat(2)) # Chelsea
Y2xhc3MgS2xhc2VtZW46CiAgICBkZWYgX19pbml0X18oc2VsZiwgY2x1YnMpOgogICAgICAgICMgbWFrZSBldmVyeSBjbHViIHN0YXJ0IGF0IDAgcG9pbnQKICAgICAgICBzZWxmLnBvaW4gPSB7Y2x1YjogMCBmb3IgY2x1YiBpbiBjbHVic30KCiAgICBkZWYgY2F0YXRQZXJtYWluYW4oc2VsZiwga2x1YkthbmRhbmcsIGtsdWJUYW5kYW5nLCBza29yKToKICAgICAgICBob21lLCBhd2F5ID0gc2tvci5zcGxpdCgiOiIpICAjIHNwbGl0IHdpdGggOgogICAgICAgIGhvbWUsIGF3YXkgPSBpbnQoaG9tZSksIGludChhd2F5KQoKICAgICAgICBpZiBob21lID4gYXdheToKICAgICAgICAgICAgc2VsZi5wb2luW2tsdWJLYW5kYW5nXSArPSAzICAjIGhvbWUva2FuZGFuZyB3aW4KICAgICAgICBlbGlmIGF3YXkgPiBob21lOgogICAgICAgICAgICBzZWxmLnBvaW5ba2x1YlRhbmRhbmddICs9IDMgICMgYXdheS90YW5kYW5nIHdpbgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYucG9pbltrbHViS2FuZGFuZ10gKz0gMSAgIyB0aWUsIGJvdGggdGVhbXMgZ2V0IDEgcG9pbgogICAgICAgICAgICBzZWxmLnBvaW5ba2x1YlRhbmRhbmddICs9IDEKCiAgICAjIGNvcmUgbG9naWMKICAgIGRlZiBhbWJpbFBlcmluZ2thdChzZWxmLCBub21vclBlcmluZ2thdCk6CiAgICAgICAgY2x1YnMgPSBsaXN0KHNlbGYuY2V0YWtLbGFzZW1lbigpLmtleXMoKSkKICAgICAgICAjIHNlbGYuY2V0YWtLbGFzZW1lbiByZWZlcnMgdG8ga2xhc2VtZW4gdGFibGUgd2l0aCBzZWxmIHNvIGtub3dzIHdoaWNoIHRhYmxlCiAgICAgICAgIyBrZXlzIG9ubHkgZ3JhYiB0aGUgY2x1YiBuYW1lcyBsaWtlIEFyc2VuYWwsIENoZWxzZWEsIExpdmVycG9vbAogICAgICAgICMgbGlzdCBtYWtlcyBpdCBpbnRvIGEgbGlzdCBsaWtlIFsnQXJzZW5hbCcsICdDaGVsc2VhJywgJ0xpdmVycG9vbCddCiAgICAgICAgcmV0dXJuIGNsdWJzW25vbW9yUGVyaW5na2F0IC0gMV0gICMgYnVhdCBmaXQga2UgYXJyYXkga2FyZW5hIGFycmF5IG11bGFpIGRhcmkgMAoKICAgIGRlZiBjZXRha0tsYXNlbWVuKHNlbGYpOgogICAgICAgIHJldHVybiBkaWN0KHNvcnRlZChzZWxmLnBvaW4uaXRlbXMoKSwga2V5PWxhbWJkYSB4OiB4WzFdLCByZXZlcnNlPVRydWUpKQogICAgICAgICMgc2VsZi5wb2luLml0ZW1zKCkgdHVybnMgdGhlIGRpY3QgaW50byBwYWlycywgZS5nLiAoJ0Fyc2VuYWwnLCA4KQogICAgICAgICMgbGFtYmRhIHg6IHhbMV0gbWVhbnMgc29ydCBieSB4WzFdIChwb2ludHMpCiAgICAgICAgIyByZXZlcnNlPVRydWUgc29ydHMgZGVzY2VuZGluZywgYW5kIGRpY3QoKSBjb252ZXJ0cyBpdCBiYWNrIHRvIGEgZGljdGlvbmFyeQoKCiMgc2FtcGxlcwprbGFzZW1lbiA9IEtsYXNlbWVuKFsnTGl2ZXJwb29sJywgJ0NoZWxzZWEnLCAnQXJzZW5hbCddKQprbGFzZW1lbi5jYXRhdFBlcm1haW5hbignQXJzZW5hbCcsICdMaXZlcnBvb2wnLCAnMjoxJykKa2xhc2VtZW4uY2F0YXRQZXJtYWluYW4oJ0Fyc2VuYWwnLCAnQ2hlbHNlYScsICcxOjEnKQprbGFzZW1lbi5jYXRhdFBlcm1haW5hbignQ2hlbHNlYScsICdBcnNlbmFsJywgJzA6MycpCmtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCdDaGVsc2VhJywgJ0xpdmVycG9vbCcsICczOjInKQprbGFzZW1lbi5jYXRhdFBlcm1haW5hbignTGl2ZXJwb29sJywgJ0Fyc2VuYWwnLCAnMjoyJykKa2xhc2VtZW4uY2F0YXRQZXJtYWluYW4oJ0xpdmVycG9vbCcsICdDaGVsc2VhJywgJzA6MCcpCnByaW50KGtsYXNlbWVuLmNldGFrS2xhc2VtZW4oKSkgICAgICMgeydBcnNlbmFsJzogOCwgJ0NoZWxzZWEnOiA1LCAnTGl2ZXJwb29sJzogMn0KcHJpbnQoa2xhc2VtZW4uYW1iaWxQZXJpbmdrYXQoMikpICAgIyBDaGVsc2Vh