// Pemenang pertandingan akan mendapatkan 3 poin.
// Apabila kedua klub memiliki skor yang sama, maka kedua klub akan mendapatkan masing-masing 1 poin.
// Poin klub yang kalah tidak akan ditambahkan ataupun dikurangi.
class Klasemen {
constructor(data = []) {
this.dataPermainan = [];
this.team = data;
this.hasil = {};
for (let i = 0; i < this.team.length; i++) {
this.hasil[this.team[i]] = 0;
}
}
catatPermainan(klubKandang, klubTandang, skor) {
this.dataPermainan.push({
klubKandang: klubKandang,
klubTandang: klubTandang,
skor: skor,
});
}
cetakKlasemen() {
for (let i = 0; i < this.dataPermainan.length; i++) {
const skor = this.dataPermainan[i].skor.split(":");
if (skor[0] === skor[1]) {
this.hasil[this.dataPermainan[i].klubKandang] += 1;
this.hasil[this.dataPermainan[i].klubTandang] += 1;
}
if (skor[0] > skor[1]) {
this.hasil[this.dataPermainan[i].klubKandang] += 3;
continue;
}
if (skor[0] < skor[1]) {
this.hasil[this.dataPermainan[i].klubTandang] += 3;
continue;
}
}
for (let i in this.hasil) {
console.log(`${i} => ${this.hasil[i]}`);
}
}
ambilPeringkat(nomorPeringkat) {
const teams = Object.keys(this.hasil);
for (let i = 0; i < teams.length - 1; i++) {
let maxIndex = i;
for (let j = i + 1; j < teams.length; j++) {
if (this.hasil[teams[j]] > this.hasil[teams[maxIndex]]) {
maxIndex = j;
}
}
if (maxIndex !== i) {
[teams[i], teams[maxIndex]] = [teams[maxIndex], teams[i]];
}
}
if (nomorPeringkat > teams.length || nomorPeringkat <= 0) {
return "peringkat tidak ada";
}
return teams[nomorPeringkat - 1];
}
}
const coba = new Klasemen(["Chelsea", "Barca", "Liverpool"]);
coba.catatPermainan("Barca", "Liverpool", "1:1");
coba.catatPermainan("Chelsea", "Liverpool", "1:3");
coba.catatPermainan("Chelsea", "Barca", "2:1");
coba.cetakKlasemen();
console.log(coba.ambilPeringkat(1));