fork download
  1. <?php
  2. class Klasemen {
  3. private $klub;
  4. private $poin;
  5.  
  6. public function __construct($klubList) {
  7. $this->klub = $klubList;
  8. $this->poin = array_fill_keys($klubList, 0);
  9. }
  10.  
  11. public function catatPermainan($klubKandang, $klubTandang, $skor) {
  12. list($golKandang, $golTandang) = explode(':', $skor);
  13.  
  14. if ($golKandang > $golTandang) {
  15. // Klub kandang menang
  16. $this->poin[$klubKandang] += 3;
  17. } elseif ($golKandang < $golTandang) {
  18. // Klub tandang menang
  19. $this->poin[$klubTandang] += 3;
  20. } else {
  21. // Seri
  22. $this->poin[$klubKandang] += 1;
  23. $this->poin[$klubTandang] += 1;
  24. }
  25. }
  26.  
  27. public function cetakKlasemen() {
  28. // Urutkan berdasarkan poin (desc), lalu alfabetis jika poin sama
  29. arsort($this->poin);
  30. return $this->poin;
  31. }
  32.  
  33. public function ambilPeringkat($nomorPeringkat) {
  34. $klasemen = $this->cetakKlasemen();
  35. $klubList = array_keys($klasemen);
  36. return $klubList[$nomorPeringkat - 1] ?? null;
  37. }
  38. }
  39.  
  40. // Contoh penggunaan
  41. $klasemen = new Klasemen(['Liverpool', 'Chelsea', 'Arsenal']);
  42. $klasemen->catatPermainan('Arsenal', 'Liverpool', '2:1');
  43. $klasemen->catatPermainan('Arsenal', 'Chelsea', '1:1');
  44. $klasemen->catatPermainan('Chelsea', 'Arsenal', '0:3');
  45. $klasemen->catatPermainan('Chelsea', 'Liverpool', '3:2');
  46. $klasemen->catatPermainan('Liverpool', 'Arsenal', '2:2');
  47. $klasemen->catatPermainan('Liverpool', 'Chelsea', '0:0');
  48.  
  49. print_r($klasemen->cetakKlasemen());
  50. echo $klasemen->ambilPeringkat(2);
  51.  
Success #stdin #stdout 0.03s 26060KB
stdin
Standard input is empty
stdout
Array
(
    [Arsenal] => 8
    [Chelsea] => 5
    [Liverpool] => 2
)
Chelsea