fork download
  1. // Nazar Abdul Fattah
  2. // Suitmedia - Backend Developer Test
  3.  
  4. class Klasemen {
  5. constructor(klubList) {
  6. this.daftarKlub = {};
  7. klubList.forEach(klub => {
  8. this.daftarKlub[klub] = 0;
  9. });
  10. }
  11.  
  12. catatPermainan(klubKandang, klubTandang, skor) {
  13. const [skorKandang, skorTandang] = skor.split(':').map(Number);
  14.  
  15. skorKandang > skorTandang ? (this.daftarKlub[klubKandang] += 3) :
  16. skorKandang < skorTandang ? (this.daftarKlub[klubTandang] += 3) :
  17. (this.daftarKlub[klubKandang] += 1, this.daftarKlub[klubTandang] += 1);
  18. }
  19.  
  20. cetakKlasemen() {
  21. return Object.entries(this.daftarKlub).sort((a, b) => b[1] - a[1]);
  22. }
  23.  
  24. ambilPeringkat(nomorPeringkat) {
  25. const klasemenArray = this.cetakKlasemen();
  26. return klasemenArray[nomorPeringkat - 1] ? klasemenArray[nomorPeringkat - 1][0] : 'Klub tidak ditemukan';
  27. }
  28. }
  29.  
  30.  
  31. const klasemen = new Klasemen(['Liverpool', 'Chelsea', 'Arsenal']);
  32.  
  33. klasemen.catatPermainan('Arsenal', 'Liverpool', '2:1');
  34. klasemen.catatPermainan('Arsenal', 'Chelsea', '1:1');
  35. klasemen.catatPermainan('Chelsea', 'Arsenal', '0:3');
  36. klasemen.catatPermainan('Chelsea', 'Liverpool', '3:2');
  37. klasemen.catatPermainan('Liverpool', 'Arsenal', '2:2');
  38. klasemen.catatPermainan('Liverpool', 'Chelsea', '0:0');
  39.  
  40. print(JSON.stringify(klasemen.cetakKlasemen())); // Output: [["Arsenal",8],["Chelsea",5],["Liverpool",2]]
  41. print(klasemen.ambilPeringkat(2)); // Output: Chelsea
  42.  
Success #stdin #stdout 0.03s 17176KB
stdin
Standard input is empty
stdout
[["Arsenal",8],["Chelsea",5],["Liverpool",2]]
Chelsea