fork(1) download
  1. <?php
  2.  
  3. class Klasemen {
  4. private $poinKlub = [];
  5.  
  6. public function __construct(array $klubList) {
  7. foreach ($klubList as $klub) {
  8. $this->poinKlub[$klub] = 0;
  9. }
  10. }
  11.  
  12. public function catatPermainan(string $klubKandang, string $klubTandang, string $skor) {
  13. list($golKandang, $golTandang) = explode(':', $skor);
  14. $golKandang = (int)$golKandang;
  15. $golTandang = (int)$golTandang;
  16.  
  17. if ($golKandang > $golTandang) {
  18. $this->poinKlub[$klubKandang] += 3;
  19. } elseif ($golKandang < $golTandang) {
  20. $this->poinKlub[$klubTandang] += 3;
  21. } else {
  22. $this->poinKlub[$klubKandang] += 1;
  23. $this->poinKlub[$klubTandang] += 1;
  24. }
  25. }
  26.  
  27. public function cetakKlasemen(): array {
  28. $klasemen = $this->poinKlub;
  29.  
  30. // Urut berdasarkan poin menurun, jika sama urut nama klub naik
  31. uksort($klasemen, function($a, $b) use ($klasemen) {
  32. if ($klasemen[$a] === $klasemen[$b]) {
  33. return strcmp($a, $b); // urut nama
  34. }
  35. return $klasemen[$b] - $klasemen[$a]; // urut poin menurun
  36. });
  37.  
  38. return $klasemen;
  39. }
  40.  
  41. public function ambilPeringkat(int $nomorPeringkat): string {
  42. $klasemen = array_keys($this->cetakKlasemen());
  43. if ($nomorPeringkat >= 1 && $nomorPeringkat <= count($klasemen)) {
  44. return $klasemen[$nomorPeringkat - 1];
  45. }
  46. return "Peringkat tidak tersedia";
  47. }
  48. }
  49.  
  50. // ====== Contoh Penggunaan ======
  51. $klasemen = new Klasemen(['Liverpool', 'Chelsea', 'Arsenal']);
  52.  
  53. $klasemen->catatPermainan('Arsenal', 'Liverpool', '2:1');
  54. $klasemen->catatPermainan('Arsenal', 'Chelsea', '1:1');
  55. $klasemen->catatPermainan('Chelsea', 'Arsenal', '0:3');
  56. $klasemen->catatPermainan('Chelsea', 'Liverpool', '3:2');
  57. $klasemen->catatPermainan('Liverpool', 'Arsenal', '2:2');
  58. $klasemen->catatPermainan('Liverpool', 'Chelsea', '0:0');
  59.  
  60. // Cetak klasemen
  61. print_r($klasemen->cetakKlasemen());
  62.  
  63. // Ambil peringkat ke-2
  64. echo "Peringkat ke-2: " . $klasemen->ambilPeringkat(2) . PHP_EOL;
Success #stdin #stdout 0.04s 25896KB
stdin
Standard input is empty
stdout
Array
(
    [Arsenal] => 8
    [Chelsea] => 5
    [Liverpool] => 2
)
Peringkat ke-2: Chelsea