// your code goes here
class Klasemen {
constructor(daftarKlub) {
this.poinklub = {};
for (let klub of daftarKlub) {
this.poinklub[klub] = 0;
}
}
catatPermainan(klubKandang, klubTandang, skor) {
// memisahkan skor menjadi angka
const [skorKandang, skorTandang] = skor.split(":").map(Number);
if (skorKandang > skorTandang) {
// Klub kandang menang
this.poinklub[klubKandang] += 3;
} else if (skorTandang > skorKandang) {
this.poinklub[klubTandang] += 3;
} else {
this.poinklub[klubKandang] += 1;
this.poinklub[klubTandang] += 1;
}
}
cetakKlasemen() {
// Return objek yang berisi klub dan poin, urut dari poin tertinggi
const sorted = Object.entries(this.poinklub)
.sort((a, b) => b[1] - a[1]) // Urut dari tertinggi
.reduce((obj, [klub, poin]) => {
obj[klub] = poin;
return obj;
}, {});
return sorted;
}
ambilPeringkat(nomorPeringkat) {
// urutkan berdasarkan poin, lalu ambil klub di posisi ke-(nomorPeringkat)
const sorted = Object.entries(this.poinklub).sort((a, b) => b[1]);
if (nomorPeringkat < 1 || nomorPeringkat > sorted.length) {
return null;
}
return sorted[nomorPeringkat - 1][0]; // Mengambil Nama klub
}
}
const klasemen = new 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");
console.log(klasemen.cetakKlasemen());
// Output: { Arsenal: 8, Chelsea: 5, Liverpool: 2 }
console.log(klasemen.ambilPeringkat(2));
// Output: Chelsea
Ly8geW91ciBjb2RlIGdvZXMgaGVyZQpjbGFzcyBLbGFzZW1lbiB7CiAgY29uc3RydWN0b3IoZGFmdGFyS2x1YikgewogICAgdGhpcy5wb2lua2x1YiA9IHt9OwogICAgZm9yIChsZXQga2x1YiBvZiBkYWZ0YXJLbHViKSB7CiAgICAgIHRoaXMucG9pbmtsdWJba2x1Yl0gPSAwOwogICAgfQogIH0KICBjYXRhdFBlcm1haW5hbihrbHViS2FuZGFuZywga2x1YlRhbmRhbmcsIHNrb3IpIHsKICAgIC8vIG1lbWlzYWhrYW4gc2tvciBtZW5qYWRpIGFuZ2thCiAgICBjb25zdCBbc2tvckthbmRhbmcsIHNrb3JUYW5kYW5nXSA9IHNrb3Iuc3BsaXQoIjoiKS5tYXAoTnVtYmVyKTsKICAgIGlmIChza29yS2FuZGFuZyA+IHNrb3JUYW5kYW5nKSB7CiAgICAgIC8vIEtsdWIga2FuZGFuZyBtZW5hbmcKICAgICAgdGhpcy5wb2lua2x1YltrbHViS2FuZGFuZ10gKz0gMzsKICAgIH0gZWxzZSBpZiAoc2tvclRhbmRhbmcgPiBza29yS2FuZGFuZykgewogICAgICB0aGlzLnBvaW5rbHViW2tsdWJUYW5kYW5nXSArPSAzOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5wb2lua2x1YltrbHViS2FuZGFuZ10gKz0gMTsKICAgICAgdGhpcy5wb2lua2x1YltrbHViVGFuZGFuZ10gKz0gMTsKICAgIH0KICB9CiAgY2V0YWtLbGFzZW1lbigpIHsKICAgIC8vIFJldHVybiBvYmplayB5YW5nIGJlcmlzaSBrbHViIGRhbiBwb2luLCB1cnV0IGRhcmkgcG9pbiB0ZXJ0aW5nZ2kKICAgIGNvbnN0IHNvcnRlZCA9IE9iamVjdC5lbnRyaWVzKHRoaXMucG9pbmtsdWIpCiAgICAgIC5zb3J0KChhLCBiKSA9PiBiWzFdIC0gYVsxXSkgLy8gVXJ1dCBkYXJpIHRlcnRpbmdnaQogICAgICAucmVkdWNlKChvYmosIFtrbHViLCBwb2luXSkgPT4gewogICAgICAgIG9ialtrbHViXSA9IHBvaW47CiAgICAgICAgcmV0dXJuIG9iajsKICAgICAgfSwge30pOwogICAgcmV0dXJuIHNvcnRlZDsKICB9CiAgYW1iaWxQZXJpbmdrYXQobm9tb3JQZXJpbmdrYXQpIHsKICAgIC8vIHVydXRrYW4gYmVyZGFzYXJrYW4gcG9pbiwgbGFsdSBhbWJpbCBrbHViIGRpIHBvc2lzaSBrZS0obm9tb3JQZXJpbmdrYXQpCiAgICBjb25zdCBzb3J0ZWQgPSBPYmplY3QuZW50cmllcyh0aGlzLnBvaW5rbHViKS5zb3J0KChhLCBiKSA9PiBiWzFdKTsKICAgIGlmIChub21vclBlcmluZ2thdCA8IDEgfHwgbm9tb3JQZXJpbmdrYXQgPiBzb3J0ZWQubGVuZ3RoKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQogICAgcmV0dXJuIHNvcnRlZFtub21vclBlcmluZ2thdCAtIDFdWzBdOyAvLyBNZW5nYW1iaWwgTmFtYSBrbHViCiAgfQp9Cgpjb25zdCBrbGFzZW1lbiA9IG5ldyBLbGFzZW1lbihbIkxpdmVycG9vbCIsICJDaGVsc2VhIiwgIkFyc2VuYWwiXSk7CgprbGFzZW1lbi5jYXRhdFBlcm1haW5hbigiQXJzZW5hbCIsICJMaXZlcnBvb2wiLCAiMjoxIik7CmtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCJBcnNlbmFsIiwgIkNoZWxzZWEiLCAiMToxIik7CmtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCJDaGVsc2VhIiwgIkFyc2VuYWwiLCAiMDozIik7CmtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCJDaGVsc2VhIiwgIkxpdmVycG9vbCIsICIzOjIiKTsKa2xhc2VtZW4uY2F0YXRQZXJtYWluYW4oIkxpdmVycG9vbCIsICJBcnNlbmFsIiwgIjI6MiIpOwprbGFzZW1lbi5jYXRhdFBlcm1haW5hbigiTGl2ZXJwb29sIiwgIkNoZWxzZWEiLCAiMDowIik7Cgpjb25zb2xlLmxvZyhrbGFzZW1lbi5jZXRha0tsYXNlbWVuKCkpOwovLyBPdXRwdXQ6IHsgQXJzZW5hbDogOCwgQ2hlbHNlYTogNSwgTGl2ZXJwb29sOiAyIH0KCmNvbnNvbGUubG9nKGtsYXNlbWVuLmFtYmlsUGVyaW5na2F0KDIpKTsKLy8gT3V0cHV0OiBDaGVsc2VhCg==