// add adds a mancala.Result into the data aggregated by the PlayerResult. func (result *PlayerResult) add(gameResult mancala.Result) { result.n++ moveCount := gameResult.MoveCount() seedCount := gameResult.Board().ScoreFor(result.index) if result.AvgSeedCount == -1 { result.AvgSeedCount = 0 } result.AvgSeedCount = nextAverage( result.AvgSeedCount, result.n-1, seedCount, ) if result.MinSeedCount == -1 { result.MinSeedCount = seedCount } else if seedCount < result.MinSeedCount { result.MinSeedCount = seedCount } if result.MaxSeedCount == -1 { result.MaxSeedCount = seedCount } else if seedCount > result.MaxSeedCount { result.MaxSeedCount = seedCount } if gameResult.Winner() == result.index { if result.AvgMoveCountWithWin == -1 { result.AvgMoveCountWithWin = 0 } result.WinCount++ result.AvgMoveCountWithWin = nextAverage( result.AvgMoveCountWithWin, result.WinCount-1, moveCount, ) if result.AvgSeedCountWithWin == -1 { result.AvgSeedCountWithWin = 0 } result.AvgSeedCountWithWin = nextAverage( result.AvgSeedCountWithWin, result.WinCount-1, seedCount, ) if result.MinMoveCountWithWin == -1 { result.MinMoveCountWithWin = moveCount } else if moveCount < result.MinMoveCountWithWin { result.MinMoveCountWithWin = moveCount } if result.MaxMoveCountWithWin == -1 { result.MaxMoveCountWithWin = moveCount } else if moveCount > result.MaxMoveCountWithWin { result.MaxMoveCountWithWin = moveCount } } else if gameResult.Winner() != -1 { result.LossCount++ if result.AvgMoveCountWithLoss == -1 { result.AvgMoveCountWithLoss = 0 } result.AvgMoveCountWithLoss = nextAverage( result.AvgMoveCountWithLoss, result.LossCount-1, moveCount, ) if result.AvgSeedCountWithLoss == -1 { result.AvgSeedCountWithLoss = 0 } result.AvgSeedCountWithLoss = nextAverage( result.AvgSeedCountWithLoss, result.LossCount-1, seedCount, ) if result.MinMoveCountWithLoss == -1 { result.MinMoveCountWithLoss = moveCount } else if moveCount < result.MinMoveCountWithLoss { result.MinMoveCountWithLoss = moveCount } if result.MaxMoveCountWithLoss == -1 { result.MaxMoveCountWithLoss = moveCount } else if moveCount > result.MaxMoveCountWithLoss { result.MaxMoveCountWithLoss = moveCount } } }