fork download
  1. <?php
  2.  
  3. class Klasemen
  4. {
  5. private $klubPoin = [];
  6.  
  7. public function __construct(array $daftarKlub)
  8. {
  9. foreach ($daftarKlub as $club) {
  10. $this->klubPoin[$club] = 0;
  11. }
  12. }
  13.  
  14. public function resultPermainan(string $clubKandang, string $clubTandang, string $skor)
  15. {
  16. list($skorKandang, $skorTandang) = explode(':', $skor);
  17.  
  18. if ($skorKandang > $skorTandang) {
  19. $this->klubPoin[$clubKandang] += 3;
  20. } elseif ($skorKandang < $skorTandang) {
  21. $this->klubPoin[$clubTandang] += 3;
  22. } else {
  23. $this->klubPoin[$clubKandang] += 1;
  24. $this->klubPoin[$clubTandang] += 1;
  25. }
  26. }
  27.  
  28. public function baganKlasemen(): array
  29. {
  30. uksort($this->klubPoin, function($a, $b) {
  31. if ($this->klubPoin[$a] === $this->klubPoin[$b]) {
  32. return strcmp($a, $b);
  33. }
  34. return $this->klubPoin[$b] - $this->klubPoin[$a];
  35. });
  36. return $this->klubPoin;
  37. }
  38.  
  39. public function ambilPeringkat(int $nomorPeringkat): string
  40. {
  41. $klub = array_keys($this->baganKlasemen());
  42. return $klub[$nomorPeringkat - 1] ?? 'Tidak ada';
  43. }
  44. }
  45.  
  46. // Contoh penggunaan
  47. $klasemen = new Klasemen(['Indonesia', 'Korsel', 'Australia']);
  48. $klasemen->resultPermainan('Indonesia', 'Korsel', '2:1');
  49. $klasemen->resultPermainan('Indonesia', 'Australia', '2:1');
  50. $klasemen->resultPermainan('Korsel', 'Indonesia', '2:2');
  51. $klasemen->resultPermainan('Korsel', 'Australia', '3:2');
  52. $klasemen->resultPermainan('Australia', 'Indonesia', '3:2');
  53. $klasemen->resultPermainan('Australia', 'Korsel', '3:3');
  54.  
  55. print_r($klasemen->baganKlasemen());
  56. echo $klasemen->ambilPeringkat(1);
  57.  
  58. ?>
  59.  
Success #stdin #stdout 0.02s 25844KB
stdin
Standard input is empty
stdout
Array
(
    [Indonesia] => 7
    [Korsel] => 5
    [Australia] => 4
)
Indonesia