// Nazar Abdul Fattah
// Suitmedia - Backend Developer Test
class Klasemen {
constructor(klubList) {
this.daftarKlub = {};
klubList.forEach(klub => {
this.daftarKlub[klub] = 0;
});
}
catatPermainan(klubKandang, klubTandang, skor) {
const [skorKandang, skorTandang] = skor.split(':').map(Number);
skorKandang > skorTandang ? (this.daftarKlub[klubKandang] += 3) :
skorKandang < skorTandang ? (this.daftarKlub[klubTandang] += 3) :
(this.daftarKlub[klubKandang] += 1, this.daftarKlub[klubTandang] += 1);
}
cetakKlasemen() {
return Object.entries(this.daftarKlub).sort((a, b) => b[1] - a[1]);
}
ambilPeringkat(nomorPeringkat) {
const klasemenArray = this.cetakKlasemen();
return klasemenArray[nomorPeringkat - 1] ? klasemenArray[nomorPeringkat - 1][0] : 'Klub tidak ditemukan';
}
}
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');
print(JSON.stringify(klasemen.cetakKlasemen())); // Output: [["Arsenal",8],["Chelsea",5],["Liverpool",2]]
print(klasemen.ambilPeringkat(2)); // Output: Chelsea
Ly8gTmF6YXIgQWJkdWwgRmF0dGFoCi8vIFN1aXRtZWRpYSAtIEJhY2tlbmQgRGV2ZWxvcGVyIFRlc3QKCmNsYXNzIEtsYXNlbWVuIHsKICAgIGNvbnN0cnVjdG9yKGtsdWJMaXN0KSB7CiAgICAgICAgdGhpcy5kYWZ0YXJLbHViID0ge307CiAgICAgICAga2x1Ykxpc3QuZm9yRWFjaChrbHViID0+IHsKICAgICAgICAgICAgdGhpcy5kYWZ0YXJLbHViW2tsdWJdID0gMDsKICAgICAgICB9KTsKICAgIH0KCiAgICBjYXRhdFBlcm1haW5hbihrbHViS2FuZGFuZywga2x1YlRhbmRhbmcsIHNrb3IpIHsKICAgICAgICBjb25zdCBbc2tvckthbmRhbmcsIHNrb3JUYW5kYW5nXSA9IHNrb3Iuc3BsaXQoJzonKS5tYXAoTnVtYmVyKTsKCiAgICAgICAgc2tvckthbmRhbmcgPiBza29yVGFuZGFuZyA/ICh0aGlzLmRhZnRhcktsdWJba2x1YkthbmRhbmddICs9IDMpIDoKICAgICAgICBza29yS2FuZGFuZyA8IHNrb3JUYW5kYW5nID8gKHRoaXMuZGFmdGFyS2x1YltrbHViVGFuZGFuZ10gKz0gMykgOgogICAgICAgICh0aGlzLmRhZnRhcktsdWJba2x1YkthbmRhbmddICs9IDEsIHRoaXMuZGFmdGFyS2x1YltrbHViVGFuZGFuZ10gKz0gMSk7CiAgICB9CgogICAgY2V0YWtLbGFzZW1lbigpIHsKICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5kYWZ0YXJLbHViKS5zb3J0KChhLCBiKSA9PiBiWzFdIC0gYVsxXSk7CiAgICB9CgogICAgYW1iaWxQZXJpbmdrYXQobm9tb3JQZXJpbmdrYXQpIHsKICAgICAgICBjb25zdCBrbGFzZW1lbkFycmF5ID0gdGhpcy5jZXRha0tsYXNlbWVuKCk7CiAgICAgICAgcmV0dXJuIGtsYXNlbWVuQXJyYXlbbm9tb3JQZXJpbmdrYXQgLSAxXSA/IGtsYXNlbWVuQXJyYXlbbm9tb3JQZXJpbmdrYXQgLSAxXVswXSA6ICdLbHViIHRpZGFrIGRpdGVtdWthbic7CiAgICB9Cn0KCgpjb25zdCBrbGFzZW1lbiA9IG5ldyBLbGFzZW1lbihbJ0xpdmVycG9vbCcsICdDaGVsc2VhJywgJ0Fyc2VuYWwnXSk7CgprbGFzZW1lbi5jYXRhdFBlcm1haW5hbignQXJzZW5hbCcsICdMaXZlcnBvb2wnLCAnMjoxJyk7CmtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCdBcnNlbmFsJywgJ0NoZWxzZWEnLCAnMToxJyk7CmtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCdDaGVsc2VhJywgJ0Fyc2VuYWwnLCAnMDozJyk7CmtsYXNlbWVuLmNhdGF0UGVybWFpbmFuKCdDaGVsc2VhJywgJ0xpdmVycG9vbCcsICczOjInKTsKa2xhc2VtZW4uY2F0YXRQZXJtYWluYW4oJ0xpdmVycG9vbCcsICdBcnNlbmFsJywgJzI6MicpOwprbGFzZW1lbi5jYXRhdFBlcm1haW5hbignTGl2ZXJwb29sJywgJ0NoZWxzZWEnLCAnMDowJyk7CgpwcmludChKU09OLnN0cmluZ2lmeShrbGFzZW1lbi5jZXRha0tsYXNlbWVuKCkpKTsgLy8gT3V0cHV0OiBbWyJBcnNlbmFsIiw4XSxbIkNoZWxzZWEiLDVdLFsiTGl2ZXJwb29sIiwyXV0KcHJpbnQoa2xhc2VtZW4uYW1iaWxQZXJpbmdrYXQoMikpOyAvLyBPdXRwdXQ6IENoZWxzZWEK