Implemented Aro Cut 1

This commit is contained in:
Jeroen De Meerleer 2019-05-30 08:33:52 +02:00
parent 912f4e3e21
commit 5bac5e746f
2 changed files with 9 additions and 4 deletions

View File

@ -141,20 +141,22 @@ abstract class Tiebreaks extends Tournament
* @param Player $player * @param Player $player
* @return float * @return float
*/ */
protected function calculateAverageRating(Player $player) protected function calculateAverageRating(Player $player, int $cut = 0)
{ {
$pairings = $player->getPairings(); $pairings = $player->getPairings();
$totalrating = 0; $totalrating = 0;
$totalopponents = 0; $totalopponents = 0;
$allratings = [];
foreach ($pairings as $pairing) { foreach ($pairings as $pairing) {
if (array_search($pairing->getResult(), self::NotPlayed) === false) { if (array_search($pairing->getResult(), self::NotPlayed) === false) {
$toadd = $pairing->getOpponent()->getElos()['home']; $toadd = $pairing->getOpponent()->getElos()['home'];
if ($toadd != 0) { if ($toadd != 0) {
$totalrating += $toadd; $allratings[] = $toadd;
$totalopponents++;
} }
} }
} }
return round($totalrating / $totalopponents); sort($allratings);
$allratings = array_slice($allratings, $cut);
return round(array_sum($allratings) / count($allratings));
} }
} }

View File

@ -293,6 +293,9 @@ class Tournament extends Tiebreaks
case Tiebreak::Aro: case Tiebreak::Aro:
return $this->calculateAverageRating($player); return $this->calculateAverageRating($player);
break; break;
case Tiebreak::AroCut:
return $this->calculateAverageRating($player, 1);
break;
default: default:
return null; return null;
} }