Skip to content

Commit

Permalink
add players at the median score of the league
Browse files Browse the repository at this point in the history
  • Loading branch information
BrianHicks committed Oct 12, 2020
1 parent 97e2116 commit a52ebb8
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
18 changes: 15 additions & 3 deletions src/League.elm
Expand Up @@ -92,13 +92,25 @@ getPlayer name (League league) =

addPlayer : Player -> League -> League
addPlayer player (League league) =
League { league | players = Dict.insert player.name player league.players }
let
ratings =
Dict.values league.players
|> List.map .rating
|> List.sort

medianishRating =
ratings
|> List.drop (List.length ratings // 2)
|> List.head
|> Maybe.withDefault Elo.initialRating
in
League { league | players = Dict.insert player.name (Player.setRating medianishRating player) league.players }


{-| -}
updatePlayer : Player -> League -> League
updatePlayer =
addPlayer
updatePlayer player (League league) =
League { league | players = Dict.insert player.name player league.players }


retirePlayer : Player -> League -> League
Expand Down
6 changes: 4 additions & 2 deletions tests/LeagueTest.elm
Expand Up @@ -60,7 +60,8 @@ playersTests =
League.init
|> League.addPlayer player
|> League.players
|> Expect.equal [ player ]
|> List.map .name
|> Expect.equal [ player.name ]
, fuzz playerFuzzer "retiring a player removes them from the players list" <|
\player ->
League.init
Expand Down Expand Up @@ -109,7 +110,8 @@ startMatchTests =
|> League.addPlayer playerB
|> League.startMatch (Match playerA playerB)
|> League.currentMatch
|> Expect.equal (Just (Match playerA playerB))
|> Maybe.map (\(Match a b) -> ( a.name, b.name ))
|> Expect.equal (Just ( playerA.name, playerB.name ))
, fuzz playerFuzzer "you can't start a match with one player against themselves" <|
\player ->
League.init
Expand Down

0 comments on commit a52ebb8

Please sign in to comment.