class Klasemen {
constructor(daftarKlub) {
this.poinKlub = {};
for (let klub of daftarKlub) {
this.poinKlub[klub] = 0;
}
}
catatPermainan(klubKandang, klubTandang, skor) {
const [skorKandang, skorTandang] = skor.split(':').map(Number);
if (skorKandang > skorTandang) {
this.poinKlub[klubKandang] += 3;
} else if (skorKandang < skorTandang) {
this.poinKlub[klubTandang] += 3;
} else {
this.poinKlub[klubKandang] += 1;
this.poinKlub[klubTandang] += 1;
}
}
cetakKlasemen() {
const klasemen = Object.entries(this.poinKlub)
.sort((a, b) => {
if (b[1] === a[1]) {
return a[0].localeCompare(b[0]);
}
return b[1] - a[1];
});
return Object.fromEntries(klasemen);
}
ambilPeringkat(nomorPeringkat) {
const klasemen = this.cetakKlasemen();
const klubUrut = Object.keys(klasemen);
return klubUrut[nomorPeringkat - 1] || null;
}
}
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());
console.log(klasemen.ambilPeringkat(2));
Y2xhc3MgS2xhc2VtZW4gewogIGNvbnN0cnVjdG9yKGRhZnRhcktsdWIpIHsKICAgIHRoaXMucG9pbktsdWIgPSB7fTsKICAgIGZvciAobGV0IGtsdWIgb2YgZGFmdGFyS2x1YikgewogICAgICB0aGlzLnBvaW5LbHViW2tsdWJdID0gMDsKICAgIH0KICB9CgogIGNhdGF0UGVybWFpbmFuKGtsdWJLYW5kYW5nLCBrbHViVGFuZGFuZywgc2tvcikgewogICAgY29uc3QgW3Nrb3JLYW5kYW5nLCBza29yVGFuZGFuZ10gPSBza29yLnNwbGl0KCc6JykubWFwKE51bWJlcik7CiAgICBpZiAoc2tvckthbmRhbmcgPiBza29yVGFuZGFuZykgewogICAgICB0aGlzLnBvaW5LbHViW2tsdWJLYW5kYW5nXSArPSAzOwogICAgfSBlbHNlIGlmIChza29yS2FuZGFuZyA8IHNrb3JUYW5kYW5nKSB7CiAgICAgIHRoaXMucG9pbktsdWJba2x1YlRhbmRhbmddICs9IDM7CiAgICB9IGVsc2UgewogICAgICB0aGlzLnBvaW5LbHViW2tsdWJLYW5kYW5nXSArPSAxOwogICAgICB0aGlzLnBvaW5LbHViW2tsdWJUYW5kYW5nXSArPSAxOwogICAgfQogIH0KCiAgY2V0YWtLbGFzZW1lbigpIHsKICAgIGNvbnN0IGtsYXNlbWVuID0gT2JqZWN0LmVudHJpZXModGhpcy5wb2luS2x1YikKICAgICAgLnNvcnQoKGEsIGIpID0+IHsKICAgICAgICBpZiAoYlsxXSA9PT0gYVsxXSkgewogICAgICAgICAgcmV0dXJuIGFbMF0ubG9jYWxlQ29tcGFyZShiWzBdKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJbMV0gLSBhWzFdOwogICAgICB9KTsKICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoa2xhc2VtZW4pOwogIH0KCiAgYW1iaWxQZXJpbmdrYXQobm9tb3JQZXJpbmdrYXQpIHsKICAgIGNvbnN0IGtsYXNlbWVuID0gdGhpcy5jZXRha0tsYXNlbWVuKCk7CiAgICBjb25zdCBrbHViVXJ1dCA9IE9iamVjdC5rZXlzKGtsYXNlbWVuKTsKICAgIHJldHVybiBrbHViVXJ1dFtub21vclBlcmluZ2thdCAtIDFdIHx8IG51bGw7CiAgfQp9Cgpjb25zdCBrbGFzZW1lbiA9IG5ldyBLbGFzZW1lbihbJ0xpdmVycG9vbCcsICdDaGVsc2VhJywgJ0Fyc2VuYWwnXSk7CmtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCdBcnNlbmFsJywgJ0xpdmVycG9vbCcsICcyOjEnKTsKa2xhc2VtZW4uY2F0YXRQZXJtYWluYW4oJ0Fyc2VuYWwnLCAnQ2hlbHNlYScsICcxOjEnKTsKa2xhc2VtZW4uY2F0YXRQZXJtYWluYW4oJ0NoZWxzZWEnLCAnQXJzZW5hbCcsICcwOjMnKTsKa2xhc2VtZW4uY2F0YXRQZXJtYWluYW4oJ0NoZWxzZWEnLCAnTGl2ZXJwb29sJywgJzM6MicpOwprbGFzZW1lbi5jYXRhdFBlcm1haW5hbignTGl2ZXJwb29sJywgJ0Fyc2VuYWwnLCAnMjoyJyk7CmtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCdMaXZlcnBvb2wnLCAnQ2hlbHNlYScsICcwOjAnKTsKCmNvbnNvbGUubG9nKGtsYXNlbWVuLmNldGFrS2xhc2VtZW4oKSk7CmNvbnNvbGUubG9nKGtsYXNlbWVuLmFtYmlsUGVyaW5na2F0KDIpKTsK