<?php
class Klasemen {
private $poin = [];
private $urutan = [];
public function __construct($klub) {
foreach ($klub as $i => $nama) {
$this->poin[$nama] = 0;
$this->urutan[$nama] = $i;
}
}
public function catatPermainan(
string $klubKandang,
string $klubTandang,
string $skor
): void {
'intval',
);
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 $this->urutan[$a]
<=> $this->urutan[$b];
}
return $hasil[$b] <=> $hasil[$a];
});
return $hasil;
}
public function ambilPeringkat(int $nomorPeringkat): string {
$klasemen = $this->cetakKlasemen();
return $klub[$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);
Cjw/cGhwCgpjbGFzcyBLbGFzZW1lbiB7CiAgICBwcml2YXRlICRwb2luID0gW107CiAgICBwcml2YXRlICR1cnV0YW4gPSBbXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGtsdWIpIHsKICAgICAgICBmb3JlYWNoICgka2x1YiBhcyAkaSA9PiAkbmFtYSkgewogICAgICAgICAgICAkdGhpcy0+cG9pblskbmFtYV0gPSAwOwogICAgICAgICAgICAkdGhpcy0+dXJ1dGFuWyRuYW1hXSA9ICRpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2F0YXRQZXJtYWluYW4oCiAgICAgICAgc3RyaW5nICRrbHViS2FuZGFuZywKICAgICAgICBzdHJpbmcgJGtsdWJUYW5kYW5nLAogICAgICAgIHN0cmluZyAkc2tvcgogICAgKTogdm9pZCB7CiAgICAgICAgbGlzdCgkc2tvckthbmRhbmcsICRza29yVGFuZGFuZykgPSBhcnJheV9tYXAoCiAgICAgICAgICAgICdpbnR2YWwnLAogICAgICAgICAgICBleHBsb2RlKCc6JywgJHNrb3IpCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRza29yS2FuZGFuZyA+ICRza29yVGFuZGFuZykgewogICAgICAgICAgICAkdGhpcy0+cG9pblska2x1YkthbmRhbmddICs9IDM7CiAgICAgICAgfSBlbHNlaWYgKCRza29yS2FuZGFuZyA8ICRza29yVGFuZGFuZykgewogICAgICAgICAgICAkdGhpcy0+cG9pblska2x1YlRhbmRhbmddICs9IDM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnBvaW5bJGtsdWJLYW5kYW5nXSArPSAxOwogICAgICAgICAgICAkdGhpcy0+cG9pblska2x1YlRhbmRhbmddICs9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjZXRha0tsYXNlbWVuKCk6IGFycmF5IHsKICAgICAgICAkaGFzaWwgPSAkdGhpcy0+cG9pbjsKCiAgICAgICAgdWtzb3J0KCRoYXNpbCwgZnVuY3Rpb24gKCRhLCAkYikgdXNlICgkaGFzaWwpIHsKICAgICAgICAgICAgaWYgKCRoYXNpbFskYV0gPT0gJGhhc2lsWyRiXSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT51cnV0YW5bJGFdCiAgICAgICAgICAgICAgICAgICAgPD0+ICR0aGlzLT51cnV0YW5bJGJdOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGhhc2lsWyRiXSA8PT4gJGhhc2lsWyRhXTsKICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuICRoYXNpbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYW1iaWxQZXJpbmdrYXQoaW50ICRub21vclBlcmluZ2thdCk6IHN0cmluZyB7CiAgICAgICAgJGtsYXNlbWVuID0gJHRoaXMtPmNldGFrS2xhc2VtZW4oKTsKICAgICAgICAka2x1YiA9IGFycmF5X2tleXMoJGtsYXNlbWVuKTsKCiAgICAgICAgcmV0dXJuICRrbHViWyRub21vclBlcmluZ2thdCAtIDFdID8/ICcnOwogICAgfQp9Cgoka2xhc2VtZW4gPSBuZXcgS2xhc2VtZW4oWwogICAgJ0xpdmVycG9vbCcsICdDaGVsc2VhJywgJ0Fyc2VuYWwnCl0pOwoKJGtsYXNlbWVuLT5jYXRhdFBlcm1haW5hbignQXJzZW5hbCcsICdMaXZlcnBvb2wnLCAnMjoxJyk7CiRrbGFzZW1lbi0+Y2F0YXRQZXJtYWluYW4oJ0Fyc2VuYWwnLCAnQ2hlbHNlYScsICcxOjEnKTsKJGtsYXNlbWVuLT5jYXRhdFBlcm1haW5hbignQ2hlbHNlYScsICdBcnNlbmFsJywgJzA6MycpOwoka2xhc2VtZW4tPmNhdGF0UGVybWFpbmFuKCdDaGVsc2VhJywgJ0xpdmVycG9vbCcsICczOjInKTsKJGtsYXNlbWVuLT5jYXRhdFBlcm1haW5hbignTGl2ZXJwb29sJywgJ0Fyc2VuYWwnLCAnMjoyJyk7CiRrbGFzZW1lbi0+Y2F0YXRQZXJtYWluYW4oJ0xpdmVycG9vbCcsICdDaGVsc2VhJywgJzA6MCcpOwoKcHJpbnRfcigka2xhc2VtZW4tPmNldGFrS2xhc2VtZW4oKSk7CmVjaG8gJGtsYXNlbWVuLT5hbWJpbFBlcmluZ2thdCgyKTs=