<?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
    {
        [$skorKandang, $skorTandang] = array_map('intval', explode(':', $skor));

        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 array_search($a, $this->urutanKlub) <=> array_search($b, $this->urutanKlub);
            }
            return $hasil[$b] <=> $hasil[$a];
        });
        return $hasil;
    }

    public function ambilPeringkat(int $nomorPeringkat): string
    {
        $klasemen = $this->cetakKlasemen();
        $namaKlub = array_keys($klasemen);
        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;