fork download
  1. <?php
  2.  
  3. class Klasemen {
  4. private $klub; // Menyimpan daftar klub yang berpartisipasi
  5. private $poin; // Menyimpan poin masing-masing klub
  6.  
  7. public function __construct(array $daftarKlub) {
  8. $this->klub = $daftarKlub;
  9. $this->poin = array_fill_keys($daftarKlub, 0); // Inisialisasi poin semua klub menjadi 0
  10. }
  11.  
  12. public function catatPermainan(string $klubKandang, string $klubTandang, string $skor) {
  13. // Memastikan klub yang dicatat ada dalam daftar klub yang terdaftar
  14. if (!in_array($klubKandang, $this->klub) || !in_array($klubTandang, $this->klub)) {
  15. // Bisa throw error atau handle sesuai kebutuhan jika klub tidak valid
  16. return;
  17. }
  18.  
  19. list($skorKandang, $skorTandang) = explode(':', $skor);
  20.  
  21. if ($skorKandang > $skorTandang) {
  22. // Klub kandang menang
  23. $this->poin[$klubKandang] += 3;
  24. } elseif ($skorKandang < $skorTandang) {
  25. // Klub tandang menang
  26. $this->poin[$klubTandang] += 3;
  27. } else {
  28. // Seri
  29. $this->poin[$klubKandang] += 1;
  30. $this->poin[$klubTandang] += 1;
  31. }
  32. }
  33.  
  34. public function cetakKlasemen(): array {
  35. // Urutkan klasemen berdasarkan poin secara descending
  36. arsort($this->poin);
  37. return $this->poin;
  38. }
  39.  
  40. public function ambilPeringkat(int $nomorPeringkat): string {
  41. $klasemenTerurut = $this->cetakKlasemen();
  42. $klubTerurut = array_keys($klasemenTerurut);
  43.  
  44. // Pastikan nomor peringkat valid
  45. if ($nomorPeringkat > 0 && $nomorPeringkat <= count($klubTerurut)) {
  46. return $klubTerurut[$nomorPeringkat - 1]; // Array dimulai dari indeks 0
  47. }
  48. return "Peringkat tidak ditemukan"; // Atau throw error
  49. }
  50. }
  51.  
  52. // Contoh penggunaan:
  53. $klasemen = new Klasemen(['Liverpool', 'Chelsea', 'Arsenal']);
  54.  
  55. $klasemen->catatPermainan('Arsenal', 'Liverpool', '2:1');
  56. $klasemen->catatPermainan('Arsenal', 'Chelsea', '1:1');
  57. $klasemen->catatPermainan('Chelsea', 'Arsenal', '0:3');
  58. $klasemen->catatPermainan('Chelsea', 'Liverpool', '3:2');
  59. $klasemen->catatPermainan('Liverpool', 'Arsenal', '2:2');
  60. $klasemen->catatPermainan('Liverpool', 'Chelsea', '0:0');
  61.  
  62. echo "Klasemen Akhir:\n";
  63. print_r($klasemen->cetakKlasemen());
  64.  
  65. echo "\nPeringkat 2: " . $klasemen->ambilPeringkat(2) . "\n";
  66. echo "Peringkat 1: " . $klasemen->ambilPeringkat(1) . "\n";
  67. echo "Peringkat 3: " . $klasemen->ambilPeringkat(3) . "\n";
  68. echo "Peringkat 4: " . $klasemen->ambilPeringkat(4) . "\n";
Success #stdin #stdout 0.04s 25772KB
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