fork download
  1. <?php
  2.  
  3. class Klasemen {
  4. private $peringkat = [];
  5.  
  6. function __construct(array $listKlub) {
  7. foreach ($listKlub as $klub) {
  8. $this->peringkat[$klub] = 0;
  9. }
  10. }
  11.  
  12. function catatPermainan($klubKandang, $klubTandang, $skor){
  13. if (!isset($this->peringkat[$klubKandang])) {
  14. $this->peringkat[$klubKandang] = 0;
  15. }
  16. if (!isset($this->peringkat[$klubTandang])) {
  17. $this->peringkat[$klubTandang] = 0;
  18. }
  19.  
  20. $skorParts = explode(':', $skor);
  21. $skorKandang = (int) $skorParts[0];
  22. $skorTandang = (int) $skorParts[1];
  23.  
  24. if ($skorKandang > $skorTandang) {
  25. $this->peringkat[$klubKandang] += 3;
  26. } elseif ($skorTandang > $skorKandang) {
  27. $this->peringkat[$klubTandang] += 3;
  28. } else {
  29. $this->peringkat[$klubKandang] += 1;
  30. $this->peringkat[$klubTandang] += 1;
  31. }
  32. }
  33.  
  34. public function cetakKlasemen(): array {
  35. $peringkatan = $this->peringkat;
  36. arsort($peringkatan);
  37. return $peringkatan;
  38. }
  39.  
  40. public function ambilPeringkat($nomorPeringkat){
  41. $peringkatan = $this->cetakKlasemen();
  42. $clubs = array_keys($peringkatan);
  43. $index = $nomorPeringkat - 1;
  44. return $clubs[$index] ?? "Peringkat tidak valid.";
  45. }
  46. }
  47.  
  48.  
  49. $klubLine = trim(fgets(STDIN));
  50. $listKlub = explode(',', $klubLine);
  51.  
  52.  
  53. $klasemen = new Klasemen($listKlub);
  54.  
  55. $jumlah = (int) trim(fgets(STDIN));
  56.  
  57. for ($i = 0; $i < $jumlah; $i++) {
  58. $line = trim(fgets(STDIN));
  59. [$kandang, $tandang, $skor] = explode(',', $line);
  60. $klasemen->catatPermainan($kandang, $tandang, $skor);
  61. }
  62.  
  63.  
  64. $hasil = $klasemen->cetakKlasemen();
  65. foreach ($hasil as $klub => $poin) {
  66. echo "$klub: $poin\n";
  67. }
  68.  
  69. $peringkat = (int) trim(fgets(STDIN));
  70. echo "Juara $peringkat: " . $klasemen->ambilPeringkat($peringkat);
  71. print_r($klasemen->cetakKlasemen());
Success #stdin #stdout 0.03s 25748KB
stdin
Arema,Persib,Persija
3
Arema,Persib,2:1
Persib,Persija,1:4
Arema,Persija,0:3
1
stdout
Persija: 6
Arema: 3
Persib: 0
Juara 1: PersijaArray
(
    [Persija] => 6
    [Arema] => 3
    [Persib] => 0
)