<?php
class Klasemen {
private $klub ; // Menyimpan daftar klub yang berpartisipasi
private $poin ; // Menyimpan poin masing-masing klub
public function __construct
( array $daftarKlub ) { $this -> klub = $daftarKlub ;
$this -> poin = array_fill_keys ( $daftarKlub , 0 ) ; // Inisialisasi poin semua klub menjadi 0 }
public function catatPermainan( string $klubKandang , string $klubTandang , string $skor ) {
// Memastikan klub yang dicatat ada dalam daftar klub yang terdaftar
if ( ! in_array ( $klubKandang , $this -> klub ) || ! in_array ( $klubTandang , $this -> klub ) ) { // Bisa throw error atau handle sesuai kebutuhan jika klub tidak valid
return ;
}
list ( $skorKandang , $skorTandang ) = explode ( ':' , $skor ) ;
if ( $skorKandang > $skorTandang ) {
// Klub kandang menang
$this -> poin [ $klubKandang ] += 3 ;
} elseif ( $skorKandang < $skorTandang ) {
// Klub tandang menang
$this -> poin [ $klubTandang ] += 3 ;
} else {
// Seri
$this -> poin [ $klubKandang ] += 1 ;
$this -> poin [ $klubTandang ] += 1 ;
}
}
public function cetakKlasemen
( ) : array { // Urutkan klasemen berdasarkan poin secara descending
return $this -> poin ;
}
public function ambilPeringkat( int $nomorPeringkat ) : string {
$klasemenTerurut = $this -> cetakKlasemen ( ) ;
// Pastikan nomor peringkat valid
if ( $nomorPeringkat > 0 && $nomorPeringkat <= count ( $klubTerurut ) ) { return $klubTerurut [ $nomorPeringkat - 1 ] ; // Array dimulai dari indeks 0
}
return "Peringkat tidak ditemukan" ; // Atau throw error
}
}
// Contoh penggunaan:
$klasemen = new Klasemen( [ 'Liverpool' , 'Chelsea' , 'Arsenal' ] ) ;
$klasemen -> catatPermainan ( 'Arsenal' , 'Liverpool' , '2:1' ) ;
$klasemen -> catatPermainan ( 'Arsenal' , 'Chelsea' , '1:1' ) ;
$klasemen -> catatPermainan ( 'Chelsea' , 'Arsenal' , '0:3' ) ;
$klasemen -> catatPermainan ( 'Chelsea' , 'Liverpool' , '3:2' ) ;
$klasemen -> catatPermainan ( 'Liverpool' , 'Arsenal' , '2:2' ) ;
$klasemen -> catatPermainan ( 'Liverpool' , 'Chelsea' , '0:0' ) ;
echo "Klasemen Akhir:\n " ;
print_r ( $klasemen -> cetakKlasemen ( ) ) ;
echo "\n Peringkat 2: " . $klasemen -> ambilPeringkat ( 2 ) . "\n " ;
echo "Peringkat 1: " . $klasemen -> ambilPeringkat ( 1 ) . "\n " ;
echo "Peringkat 3: " . $klasemen -> ambilPeringkat ( 3 ) . "\n " ;
echo "Peringkat 4: " . $klasemen -> ambilPeringkat ( 4 ) . "\n " ;
PD9waHAKCmNsYXNzIEtsYXNlbWVuIHsKICAgIHByaXZhdGUgJGtsdWI7IC8vIE1lbnlpbXBhbiBkYWZ0YXIga2x1YiB5YW5nIGJlcnBhcnRpc2lwYXNpCiAgICBwcml2YXRlICRwb2luOyAvLyBNZW55aW1wYW4gcG9pbiBtYXNpbmctbWFzaW5nIGtsdWIKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGRhZnRhcktsdWIpIHsKICAgICAgICAkdGhpcy0+a2x1YiA9ICRkYWZ0YXJLbHViOwogICAgICAgICR0aGlzLT5wb2luID0gYXJyYXlfZmlsbF9rZXlzKCRkYWZ0YXJLbHViLCAwKTsgLy8gSW5pc2lhbGlzYXNpIHBvaW4gc2VtdWEga2x1YiBtZW5qYWRpIDAKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2F0YXRQZXJtYWluYW4oc3RyaW5nICRrbHViS2FuZGFuZywgc3RyaW5nICRrbHViVGFuZGFuZywgc3RyaW5nICRza29yKSB7CiAgICAgICAgLy8gTWVtYXN0aWthbiBrbHViIHlhbmcgZGljYXRhdCBhZGEgZGFsYW0gZGFmdGFyIGtsdWIgeWFuZyB0ZXJkYWZ0YXIKICAgICAgICBpZiAoIWluX2FycmF5KCRrbHViS2FuZGFuZywgJHRoaXMtPmtsdWIpIHx8ICFpbl9hcnJheSgka2x1YlRhbmRhbmcsICR0aGlzLT5rbHViKSkgewogICAgICAgICAgICAvLyBCaXNhIHRocm93IGVycm9yIGF0YXUgaGFuZGxlIHNlc3VhaSBrZWJ1dHVoYW4gamlrYSBrbHViIHRpZGFrIHZhbGlkCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGxpc3QoJHNrb3JLYW5kYW5nLCAkc2tvclRhbmRhbmcpID0gZXhwbG9kZSgnOicsICRza29yKTsKCiAgICAgICAgaWYgKCRza29yS2FuZGFuZyA+ICRza29yVGFuZGFuZykgewogICAgICAgICAgICAvLyBLbHViIGthbmRhbmcgbWVuYW5nCiAgICAgICAgICAgICR0aGlzLT5wb2luWyRrbHViS2FuZGFuZ10gKz0gMzsKICAgICAgICB9IGVsc2VpZiAoJHNrb3JLYW5kYW5nIDwgJHNrb3JUYW5kYW5nKSB7CiAgICAgICAgICAgIC8vIEtsdWIgdGFuZGFuZyBtZW5hbmcKICAgICAgICAgICAgJHRoaXMtPnBvaW5bJGtsdWJUYW5kYW5nXSArPSAzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFNlcmkKICAgICAgICAgICAgJHRoaXMtPnBvaW5bJGtsdWJLYW5kYW5nXSArPSAxOwogICAgICAgICAgICAkdGhpcy0+cG9pblska2x1YlRhbmRhbmddICs9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjZXRha0tsYXNlbWVuKCk6IGFycmF5IHsKICAgICAgICAvLyBVcnV0a2FuIGtsYXNlbWVuIGJlcmRhc2Fya2FuIHBvaW4gc2VjYXJhIGRlc2NlbmRpbmcKICAgICAgICBhcnNvcnQoJHRoaXMtPnBvaW4pOwogICAgICAgIHJldHVybiAkdGhpcy0+cG9pbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYW1iaWxQZXJpbmdrYXQoaW50ICRub21vclBlcmluZ2thdCk6IHN0cmluZyB7CiAgICAgICAgJGtsYXNlbWVuVGVydXJ1dCA9ICR0aGlzLT5jZXRha0tsYXNlbWVuKCk7CiAgICAgICAgJGtsdWJUZXJ1cnV0ID0gYXJyYXlfa2V5cygka2xhc2VtZW5UZXJ1cnV0KTsKCiAgICAgICAgLy8gUGFzdGlrYW4gbm9tb3IgcGVyaW5na2F0IHZhbGlkCiAgICAgICAgaWYgKCRub21vclBlcmluZ2thdCA+IDAgJiYgJG5vbW9yUGVyaW5na2F0IDw9IGNvdW50KCRrbHViVGVydXJ1dCkpIHsKICAgICAgICAgICAgcmV0dXJuICRrbHViVGVydXJ1dFskbm9tb3JQZXJpbmdrYXQgLSAxXTsgLy8gQXJyYXkgZGltdWxhaSBkYXJpIGluZGVrcyAwCiAgICAgICAgfQogICAgICAgIHJldHVybiAiUGVyaW5na2F0IHRpZGFrIGRpdGVtdWthbiI7IC8vIEF0YXUgdGhyb3cgZXJyb3IKICAgIH0KfQoKLy8gQ29udG9oIHBlbmdndW5hYW46CiRrbGFzZW1lbiA9IG5ldyBLbGFzZW1lbihbJ0xpdmVycG9vbCcsICdDaGVsc2VhJywgJ0Fyc2VuYWwnXSk7Cgoka2xhc2VtZW4tPmNhdGF0UGVybWFpbmFuKCdBcnNlbmFsJywgJ0xpdmVycG9vbCcsICcyOjEnKTsKJGtsYXNlbWVuLT5jYXRhdFBlcm1haW5hbignQXJzZW5hbCcsICdDaGVsc2VhJywgJzE6MScpOwoka2xhc2VtZW4tPmNhdGF0UGVybWFpbmFuKCdDaGVsc2VhJywgJ0Fyc2VuYWwnLCAnMDozJyk7CiRrbGFzZW1lbi0+Y2F0YXRQZXJtYWluYW4oJ0NoZWxzZWEnLCAnTGl2ZXJwb29sJywgJzM6MicpOwoka2xhc2VtZW4tPmNhdGF0UGVybWFpbmFuKCdMaXZlcnBvb2wnLCAnQXJzZW5hbCcsICcyOjInKTsKJGtsYXNlbWVuLT5jYXRhdFBlcm1haW5hbignTGl2ZXJwb29sJywgJ0NoZWxzZWEnLCAnMDowJyk7CgplY2hvICJLbGFzZW1lbiBBa2hpcjpcbiI7CnByaW50X3IoJGtsYXNlbWVuLT5jZXRha0tsYXNlbWVuKCkpOwoKZWNobyAiXG5QZXJpbmdrYXQgMjogIiAuICRrbGFzZW1lbi0+YW1iaWxQZXJpbmdrYXQoMikgLiAiXG4iOwplY2hvICJQZXJpbmdrYXQgMTogIiAuICRrbGFzZW1lbi0+YW1iaWxQZXJpbmdrYXQoMSkgLiAiXG4iOwplY2hvICJQZXJpbmdrYXQgMzogIiAuICRrbGFzZW1lbi0+YW1iaWxQZXJpbmdrYXQoMykgLiAiXG4iOwplY2hvICJQZXJpbmdrYXQgNDogIiAuICRrbGFzZW1lbi0+YW1iaWxQZXJpbmdrYXQoNCkgLiAiXG4iOw==