<?php
declare(strict_types=1);
class Klasemen
{
private $poin = [];
private $urutanKlub = [];
public function __construct
(array $klub) {
foreach ($klub as $nama) {
$this->poin[$nama] = 0;
}
$this->urutanKlub = $klub;
}
public function catatPermainan(string $klubKandang, string $klubTandang, string $skor): void
{
if ($skorKandang > $skorTandang) {
$this->poin[$klubKandang] += 3;
} elseif ($skorKandang < $skorTandang) {
$this->poin[$klubTandang] += 3;
} else {
$this->poin[$klubKandang] += 1;
$this->poin[$klubTandang] += 1;
}
}
public function cetakKlasemen
(): array {
$hasil = $this->poin;
uksort($hasil, function ($a, $b) use ($hasil) { if ($hasil[$a] === $hasil[$b]) {
}
return $hasil[$b] <=> $hasil[$a];
});
return $hasil;
}
public function ambilPeringkat(int $nomorPeringkat): string
{
$klasemen = $this->cetakKlasemen();
return $namaKlub[$nomorPeringkat - 1];
}
}
$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');
print_r($klasemen->cetakKlasemen()); echo $klasemen->ambilPeringkat(2) . PHP_EOL;
PD9waHAKZGVjbGFyZShzdHJpY3RfdHlwZXM9MSk7CgpjbGFzcyBLbGFzZW1lbgp7CiAgICBwcml2YXRlICRwb2luID0gW107CiAgICBwcml2YXRlICR1cnV0YW5LbHViID0gW107CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRrbHViKQogICAgewogICAgICAgIGZvcmVhY2ggKCRrbHViIGFzICRuYW1hKSB7CiAgICAgICAgICAgICR0aGlzLT5wb2luWyRuYW1hXSA9IDA7CiAgICAgICAgfQogICAgICAgICR0aGlzLT51cnV0YW5LbHViID0gJGtsdWI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNhdGF0UGVybWFpbmFuKHN0cmluZyAka2x1YkthbmRhbmcsIHN0cmluZyAka2x1YlRhbmRhbmcsIHN0cmluZyAkc2tvcik6IHZvaWQKICAgIHsKICAgICAgICBbJHNrb3JLYW5kYW5nLCAkc2tvclRhbmRhbmddID0gYXJyYXlfbWFwKCdpbnR2YWwnLCBleHBsb2RlKCc6JywgJHNrb3IpKTsKCiAgICAgICAgaWYgKCRza29yS2FuZGFuZyA+ICRza29yVGFuZGFuZykgewogICAgICAgICAgICAkdGhpcy0+cG9pblska2x1YkthbmRhbmddICs9IDM7CiAgICAgICAgfSBlbHNlaWYgKCRza29yS2FuZGFuZyA8ICRza29yVGFuZGFuZykgewogICAgICAgICAgICAkdGhpcy0+cG9pblska2x1YlRhbmRhbmddICs9IDM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnBvaW5bJGtsdWJLYW5kYW5nXSArPSAxOwogICAgICAgICAgICAkdGhpcy0+cG9pblska2x1YlRhbmRhbmddICs9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjZXRha0tsYXNlbWVuKCk6IGFycmF5CiAgICB7CiAgICAgICAgJGhhc2lsID0gJHRoaXMtPnBvaW47CiAgICAgICAgdWtzb3J0KCRoYXNpbCwgZnVuY3Rpb24gKCRhLCAkYikgdXNlICgkaGFzaWwpIHsKICAgICAgICAgICAgaWYgKCRoYXNpbFskYV0gPT09ICRoYXNpbFskYl0pIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheV9zZWFyY2goJGEsICR0aGlzLT51cnV0YW5LbHViKSA8PT4gYXJyYXlfc2VhcmNoKCRiLCAkdGhpcy0+dXJ1dGFuS2x1Yik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICRoYXNpbFskYl0gPD0+ICRoYXNpbFskYV07CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuICRoYXNpbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYW1iaWxQZXJpbmdrYXQoaW50ICRub21vclBlcmluZ2thdCk6IHN0cmluZwogICAgewogICAgICAgICRrbGFzZW1lbiA9ICR0aGlzLT5jZXRha0tsYXNlbWVuKCk7CiAgICAgICAgJG5hbWFLbHViID0gYXJyYXlfa2V5cygka2xhc2VtZW4pOwogICAgICAgIHJldHVybiAkbmFtYUtsdWJbJG5vbW9yUGVyaW5na2F0IC0gMV07CiAgICB9Cn0KCiRrbGFzZW1lbiA9IG5ldyBLbGFzZW1lbihbJ0xpdmVycG9vbCcsICdDaGVsc2VhJywgJ0Fyc2VuYWwnXSk7CiRrbGFzZW1lbi0+Y2F0YXRQZXJtYWluYW4oJ0Fyc2VuYWwnLCAnTGl2ZXJwb29sJywgJzI6MScpOwoka2xhc2VtZW4tPmNhdGF0UGVybWFpbmFuKCdBcnNlbmFsJywgJ0NoZWxzZWEnLCAnMToxJyk7CiRrbGFzZW1lbi0+Y2F0YXRQZXJtYWluYW4oJ0NoZWxzZWEnLCAnQXJzZW5hbCcsICcwOjMnKTsKJGtsYXNlbWVuLT5jYXRhdFBlcm1haW5hbignQ2hlbHNlYScsICdMaXZlcnBvb2wnLCAnMzoyJyk7CiRrbGFzZW1lbi0+Y2F0YXRQZXJtYWluYW4oJ0xpdmVycG9vbCcsICdBcnNlbmFsJywgJzI6MicpOwoka2xhc2VtZW4tPmNhdGF0UGVybWFpbmFuKCdMaXZlcnBvb2wnLCAnQ2hlbHNlYScsICcwOjAnKTsKCnByaW50X3IoJGtsYXNlbWVuLT5jZXRha0tsYXNlbWVuKCkpOwplY2hvICRrbGFzZW1lbi0+YW1iaWxQZXJpbmdrYXQoMikgLiBQSFBfRU9MOw==