fork download
  1. <?php
  2.  
  3. class Klasemen {
  4. private $klub;
  5. private $poin;
  6.  
  7. public function __construct(array $daftarKlub) {
  8. $this->klub = $daftarKlub;
  9. $this->poin = array_fill_keys($daftarKlub, 0);
  10. }
  11.  
  12. public function catatPermainan(string $klubKandang, string $klubTandang, string $skor) {
  13. if (!in_array($klubKandang, $this->klub) || !in_array($klubTandang, $this->klub)) {
  14. return;
  15. }
  16.  
  17. list($skorKandang, $skorTandang) = explode(':', $skor);
  18.  
  19. if ($skorKandang > $skorTandang) {
  20. $this->poin[$klubKandang] += 3;
  21. } elseif ($skorKandang < $skorTandang) {
  22. $this->poin[$klubTandang] += 3;
  23. } else {
  24. $this->poin[$klubKandang] += 1;
  25. $this->poin[$klubTandang] += 1;
  26. }
  27. }
  28.  
  29. public function cetakKlasemen(): array {
  30. arsort($this->poin);
  31. return $this->poin;
  32. }
  33.  
  34. public function ambilPeringkat(int $nomorPeringkat): string {
  35. $klasemenTerurut = $this->cetakKlasemen();
  36. $klubTerurut = array_keys($klasemenTerurut);
  37.  
  38.  
  39. if ($nomorPeringkat > 0 && $nomorPeringkat <= count($klubTerurut)) {
  40. return $klubTerurut[$nomorPeringkat - 1];
  41. }
  42. return "Peringkat tidak ditemukan";
  43. }
  44. }
  45.  
  46. $klasemen = new Klasemen(['Liverpool', 'Chelsea', 'Arsenal']);
  47.  
  48. $klasemen->catatPermainan('Arsenal', 'Liverpool', '2:1');
  49. $klasemen->catatPermainan('Arsenal', 'Chelsea', '1:1');
  50. $klasemen->catatPermainan('Chelsea', 'Arsenal', '0:3');
  51. $klasemen->catatPermainan('Chelsea', 'Liverpool', '3:2');
  52. $klasemen->catatPermainan('Liverpool', 'Arsenal', '2:2');
  53. $klasemen->catatPermainan('Liverpool', 'Chelsea', '0:0');
  54.  
  55. echo "Klasemen Akhir:\n";
  56. print_r($klasemen->cetakKlasemen());
  57.  
  58. echo "\nPeringkat 2: " . $klasemen->ambilPeringkat(2) . "\n";
  59. echo "Peringkat 1: " . $klasemen->ambilPeringkat(1) . "\n";
  60. echo "Peringkat 3: " . $klasemen->ambilPeringkat(3) . "\n";
  61. echo "Peringkat 4: " . $klasemen->ambilPeringkat(4) . "\n";
Success #stdin #stdout 0.04s 25740KB
stdin
Standard input is empty
stdout
Klasemen Akhir:
Array
(
    [Arsenal] => 8
    [Chelsea] => 5
    [Liverpool] => 2
)

Peringkat 2: Chelsea
Peringkat 1: Arsenal
Peringkat 3: Liverpool
Peringkat 4: Peringkat tidak ditemukan