fork download
  1. <?php
  2.  
  3. class Klasemen
  4. {
  5. private $poinKlub = [];
  6.  
  7. public function catatPermainan(string $klubKandang, string $klubTandang, string $skor): void
  8. {
  9. [$golKandang, $golTandang] = array_map('intval', explode(':', $skor));
  10.  
  11. if (!isset($this->poinKlub[$klubKandang])) {
  12. $this->poinKlub[$klubKandang] = 0;
  13. }
  14. if (!isset($this->poinKlub[$klubTandang])) {
  15. $this->poinKlub[$klubTandang] = 0;
  16. }
  17.  
  18. if ($golKandang > $golTandang) {
  19. $this->poinKlub[$klubKandang] += 3;
  20. } elseif ($golTandang > $golKandang) {
  21. $this->poinKlub[$klubTandang] += 3;
  22. } else {
  23. $this->poinKlub[$klubKandang] += 1;
  24. $this->poinKlub[$klubTandang] += 1;
  25. }
  26. }
  27.  
  28. public function cetakKlasemen(): array
  29. {
  30. $klasemen = $this->poinKlub;
  31.  
  32. uksort($klasemen, function ($a, $b) use ($klasemen) {
  33. if ($klasemen[$a] === $klasemen[$b]) {
  34. return strcmp($a, $b);
  35. }
  36. return $klasemen[$b] - $klasemen[$a];
  37. });
  38.  
  39. $hasil = [];
  40. foreach ($klasemen as $klub => $poin) {
  41. $hasil[] = "$klub : $poin poin";
  42. }
  43.  
  44. return $hasil;
  45. }
  46.  
  47. public function ambilPeringkat(int $nomorPeringkat): string
  48. {
  49. $klasemen = $this->poinKlub;
  50.  
  51. uksort($klasemen, function ($a, $b) use ($klasemen) {
  52. if ($klasemen[$a] === $klasemen[$b]) {
  53. return strcmp($a, $b);
  54. }
  55. return $klasemen[$b] - $klasemen[$a];
  56. });
  57.  
  58. $klubArray = array_keys($klasemen);
  59.  
  60. if ($nomorPeringkat < 1 || $nomorPeringkat > count($klubArray)) {
  61. return "Peringkat tidak tersedia";
  62. }
  63.  
  64. return $klubArray[$nomorPeringkat - 1];
  65. }
  66. }
  67.  
  68. // penggunaan
  69. $klasemen = new Klasemen();
  70.  
  71. $klasemen->catatPermainan("Indonesia", "Jepang", "2:1");
  72. $klasemen->catatPermainan("Malaysia", "Filipinia", "1:1");
  73. $klasemen->catatPermainan("Myanmar", "China", "0:3");
  74.  
  75. echo "Klasemen Sementara:\n";
  76. foreach ($klasemen->cetakKlasemen() as $baris) {
  77. echo $baris . "\n";
  78. }
  79.  
  80. echo "\nPeringkat 1: " . $klasemen->ambilPeringkat(1) . "\n";
Success #stdin #stdout 0.03s 25700KB
stdin
Standard input is empty
stdout
Klasemen Sementara:
China : 3 poin
Indonesia : 3 poin
Filipinia : 1 poin
Malaysia : 1 poin
Jepang : 0 poin
Myanmar : 0 poin

Peringkat 1: China