fork download
  1. <?php
  2. //Wahyu Jumah Maulidan
  3. class Klasemen {
  4. private $klubList;
  5. private $poinKlub;
  6.  
  7. public function __construct($klubList) {
  8. $this->klubList = $klubList;
  9. $this->poinKlub = array();
  10.  
  11. foreach ($klubList as $klub) {
  12. $this->poinKlub[$klub] = 0;
  13. }
  14. }
  15.  
  16. public function catatPermainan($klubKandang, $klubTandang, $skor) {
  17. $skorArray = explode(':', $skor);
  18. $skorKandang = (int)$skorArray[0];
  19. $skorTandang = (int)$skorArray[1];
  20.  
  21. if ($skorKandang > $skorTandang) {
  22. $this->poinKlub[$klubKandang] += 3;
  23. } elseif ($skorKandang < $skorTandang) {
  24. $this->poinKlub[$klubTandang] += 3;
  25. } else {
  26. $this->poinKlub[$klubKandang] += 1;
  27. $this->poinKlub[$klubTandang] += 1;
  28. }
  29. }
  30.  
  31. public function cetakKlasemen() {
  32. arsort($this->poinKlub);
  33. return $this->poinKlub;
  34. }
  35.  
  36. public function ambilPeringkat($nomorPeringkat) {
  37. $klasemenTerurut = $this->cetakKlasemen();
  38. $klubArray = array_keys($klasemenTerurut);
  39.  
  40. if ($nomorPeringkat > 0 && $nomorPeringkat <= count($klubArray)) {
  41. return $klubArray[$nomorPeringkat - 1];
  42. }
  43.  
  44. return null;
  45. }
  46. }
  47.  
  48. $klasemen = new Klasemen(['Liverpool', 'Chelsea', 'Arsenal']);
  49.  
  50. $klasemen->catatPermainan('Arsenal', 'Liverpool', '2:1');
  51. $klasemen->catatPermainan('Arsenal', 'Chelsea', '1:1');
  52. $klasemen->catatPermainan('Chelsea', 'Arsenal', '0:3');
  53. $klasemen->catatPermainan('Chelsea', 'Liverpool', '3:2');
  54. $klasemen->catatPermainan('Liverpool', 'Arsenal', '2:2');
  55. $klasemen->catatPermainan('Liverpool', 'Chelsea', '0:0');
  56.  
  57. echo "Klasemen:\n";
  58. $hasil = $klasemen->cetakKlasemen();
  59. foreach ($hasil as $klub => $poin) {
  60. echo "$klub: $poin poin\n";
  61. }
  62.  
  63. echo "\nPeringkat 2: " . $klasemen->ambilPeringkat(2) . "\n";
  64.  
  65. echo "\nVerifikasi hasil:\n";
  66. print_r($klasemen->cetakKlasemen());
  67.  
  68. ?>
Success #stdin #stdout 0.03s 25976KB
stdin
Standard input is empty
stdout
Klasemen:
Arsenal: 8 poin
Chelsea: 5 poin
Liverpool: 2 poin

Peringkat 2: Chelsea

Verifikasi hasil:
Array
(
    [Arsenal] => 8
    [Chelsea] => 5
    [Liverpool] => 2
)