From 5bac5e746fb7e389f028932b7a2d6823af20f0a3 Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Thu, 30 May 2019 08:33:52 +0200 Subject: [PATCH] Implemented Aro Cut 1 --- src/Tiebreaks.php | 10 ++++++---- src/Tournament.php | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Tiebreaks.php b/src/Tiebreaks.php index 1670315..424ce83 100644 --- a/src/Tiebreaks.php +++ b/src/Tiebreaks.php @@ -141,20 +141,22 @@ abstract class Tiebreaks extends Tournament * @param Player $player * @return float */ - protected function calculateAverageRating(Player $player) + protected function calculateAverageRating(Player $player, int $cut = 0) { $pairings = $player->getPairings(); $totalrating = 0; $totalopponents = 0; + $allratings = []; foreach ($pairings as $pairing) { if (array_search($pairing->getResult(), self::NotPlayed) === false) { $toadd = $pairing->getOpponent()->getElos()['home']; if ($toadd != 0) { - $totalrating += $toadd; - $totalopponents++; + $allratings[] = $toadd; } } } - return round($totalrating / $totalopponents); + sort($allratings); + $allratings = array_slice($allratings, $cut); + return round(array_sum($allratings) / count($allratings)); } } diff --git a/src/Tournament.php b/src/Tournament.php index cd08fa7..09e1107 100644 --- a/src/Tournament.php +++ b/src/Tournament.php @@ -293,6 +293,9 @@ class Tournament extends Tiebreaks case Tiebreak::Aro: return $this->calculateAverageRating($player); break; + case Tiebreak::AroCut: + return $this->calculateAverageRating($player, 1); + break; default: return null; }