Created
March 2, 2023 01:03
-
-
Save cp6/b4ef3cbd6a583d05d606fe39a61bee8e to your computer and use it in GitHub Desktop.
PHP tennis score function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
//$series = []; | |
//$series = ['Jimmy']; | |
//$series = ['Lisa']; | |
//$series = ['Jimmy', 'Lisa']; | |
//$series = ['Jimmy', 'Lisa', 'Jimmy']; | |
//$series = ['Jimmy', 'Lisa', 'Jimmy', 'Lisa']; | |
//$series = ['Jimmy', 'Lisa', 'Jimmy', 'Jimmy']; | |
//$series = ['Jimmy', 'Jimmy', 'Jimmy']; | |
$series = ['Jimmy', 'Lisa', 'Jimmy', 'Lisa', 'Jimmy']; | |
//$series = ['Jimmy', 'Lisa', 'Jimmy', 'Lisa', 'Jimmy', 'Lisa'];//DEUCE | |
//$series = ['Jimmy', 'Lisa', 'Jimmy', 'Jimmy', 'Lisa', 'Lisa', 'Lisa']; | |
//$series = ['Jimmy', 'Lisa', 'Jimmy', 'Jimmy', 'Lisa', 'Lisa', 'Jimmy']; | |
//$series = ['Jimmy', 'Lisa', 'Jimmy', 'Jimmy', 'Lisa', 'Lisa', 'Lisa', 'Lisa']; | |
//$series = ['Jimmy', 'Lisa', 'Jimmy', 'Jimmy', 'Lisa', 'Lisa', 'Lisa', 'Jimmy', 'Jimmy', 'Lisa', 'Jimmy', 'Jimmy']; | |
echo computeGameState('Jimmy', 'Lisa', $series); | |
function computeGameState(string $nameP1, string $nameP2, array $wins): string | |
{ | |
$p1_score = $p2_score = 0;//Each player's score counter | |
foreach ($wins as $winner) {//Loop through the wins array | |
if ($winner === $nameP1) {//This winner is Jimmy | |
$p1_score++;//Add 1 onto Jimmy's score | |
} else {//Winner is Lisa | |
$p2_score++;//Add 1 onto Lisa's score | |
} | |
} | |
if ($p1_score === 0 && $p2_score === 0) {//Both players have not scored yet | |
return "$nameP1 0 - $nameP2 0"; | |
} elseif ($p1_score >= 3 && $p2_score >= 3) {//Both players are on OR above 40! DEUCE scenarios: | |
if ($p1_score - 1 === $p2_score) {//p1 has ADVANTAGE because 1 score above p1 | |
return "$nameP1 ADVANTAGE"; | |
} elseif ($p2_score - 1 === $p1_score) {//p2 has ADVANTAGE because 1 score above p2 | |
return "$nameP2 ADVANTAGE"; | |
} elseif ($p1_score - 2 === $p2_score) {//p1 wins as 2 scores above p2 | |
return "$nameP1 WINS"; | |
} elseif ($p2_score - 2 === $p1_score) {//p2 wins as 2 scores above p1 | |
return "$nameP2 WINS"; | |
} else {//Both players are on 40 | |
return "DEUCE"; | |
} | |
} elseif ($p1_score === 3 && $p2_score < 3) {//p1 on 40 p2 below 40 (NOT DEUCE) | |
return "$nameP1 40 - $nameP2 " . $p2_score * 15; | |
} elseif ($p2_score === 3 && $p1_score < 3) {//p2 on 40 p1 below 40 (NOT DEUCE) | |
return "$nameP1 " . $p1_score * 15 . " - $nameP2 40"; | |
} elseif ($p1_score === $p2_score) {//Scores tied AND below 40 | |
return $p1_score * 15 . "a"; | |
} else {//Scores are different and below 40 for both players | |
return "$nameP1 " . $p1_score * 15 . " - $nameP2 " . $p2_score * 15; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment