fork download
  1. import 'dart:io';
  2.  
  3. void main() {
  4. var klasemen = Klasemen(['Liverpool', 'Chelsea', 'Arsenal']);
  5.  
  6. klasemen.catatPermainan('Arsenal', 'Liverpool', '2:1');
  7. klasemen.catatPermainan('Arsenal', 'Chelsea', '1:1');
  8. klasemen.catatPermainan('Chelsea', 'Arsenal', '0:3');
  9. klasemen.catatPermainan('Chelsea', 'Liverpool', '3:2');
  10. klasemen.catatPermainan('Liverpool', 'Arsenal', '2:2');
  11. klasemen.catatPermainan('Liverpool', 'Chelsea', '0:0');
  12.  
  13. print(klasemen.cetakKlasemen());
  14. print(klasemen.ambilPeringkat(2));
  15. }
  16.  
  17. class Klasemen {
  18. Map<String, int> _poin = {};
  19.  
  20. Klasemen(List<String> daftarKlub) {
  21. for (var klub in daftarKlub) {
  22. _poin[klub] = 0;
  23. }
  24. }
  25.  
  26. void catatPermainan(String klubKandang, String klubTandang, String skor) {
  27. var bagian = skor.split(':');
  28. var golKandang = int.parse(bagian[0]);
  29. var golTandang = int.parse(bagian[1]);
  30.  
  31. // pastikan selalu ada nilai
  32. if (!_poin.containsKey(klubKandang)) _poin[klubKandang] = 0;
  33. if (!_poin.containsKey(klubTandang)) _poin[klubTandang] = 0;
  34.  
  35. if (golKandang > golTandang) {
  36. // kandang menang
  37. _poin[klubKandang] = _poin[klubKandang] + 3;
  38. } else if (golKandang < golTandang) {
  39. // tandang menang
  40. _poin[klubTandang] = _poin[klubTandang] + 3;
  41. } else {
  42. // seri
  43. _poin[klubKandang] = _poin[klubKandang] + 1;
  44. _poin[klubTandang] = _poin[klubTandang] + 1;
  45. }
  46. }
  47.  
  48. Map<String, int> cetakKlasemen() {
  49. var entries = _poin.entries.toList();
  50. entries.sort((a, b) => b.value.compareTo(a.value)); // sort desc
  51. return Map.fromEntries(entries);
  52. }
  53.  
  54. String ambilPeringkat(int nomorPeringkat) {
  55. var sortedKeys = cetakKlasemen().keys.toList();
  56.  
  57. if (nomorPeringkat <= 0 || nomorPeringkat > sortedKeys.length) {
  58. return '';
  59. }
  60.  
  61. return sortedKeys[nomorPeringkat - 1];
  62. }
  63. }
Success #stdin #stdout 1.8s 138844KB
stdin
Standard input is empty
stdout
{Arsenal: 8, Chelsea: 5, Liverpool: 2}
Chelsea