import 'dart:io';
void main() {
var klasemen = 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(klasemen.cetakKlasemen());
print(klasemen.ambilPeringkat(2));
}
class Klasemen {
Map<String, int> _poin = {};
Klasemen(List<String> daftarKlub) {
for (var klub in daftarKlub) {
_poin[klub] = 0;
}
}
void catatPermainan(String klubKandang, String klubTandang, String skor) {
var bagian = skor.split(':');
var golKandang = int.parse(bagian[0]);
var golTandang = int.parse(bagian[1]);
// pastikan selalu ada nilai
if (!_poin.containsKey(klubKandang)) _poin[klubKandang] = 0;
if (!_poin.containsKey(klubTandang)) _poin[klubTandang] = 0;
if (golKandang > golTandang) {
// kandang menang
_poin[klubKandang] = _poin[klubKandang] + 3;
} else if (golKandang < golTandang) {
// tandang menang
_poin[klubTandang] = _poin[klubTandang] + 3;
} else {
// seri
_poin[klubKandang] = _poin[klubKandang] + 1;
_poin[klubTandang] = _poin[klubTandang] + 1;
}
}
Map<String, int> cetakKlasemen() {
var entries = _poin.entries.toList();
entries.sort((a, b) => b.value.compareTo(a.value)); // sort desc
return Map.fromEntries(entries);
}
String ambilPeringkat(int nomorPeringkat) {
var sortedKeys = cetakKlasemen().keys.toList();
if (nomorPeringkat <= 0 || nomorPeringkat > sortedKeys.length) {
return '';
}
return sortedKeys[nomorPeringkat - 1];
}
}