Code fixes (scala evaluator)

This commit is contained in:
clarkerubber 2015-03-10 10:24:03 +11:00
parent 4af6463a7a
commit 5fa73b5565
2 changed files with 21 additions and 19 deletions

View file

@ -146,33 +146,33 @@
<tr>
<th>Blurs</th>
<td>
<b>@aggregateAssessment.sfAvgBlurs</b>
<strong>@aggregateAssessment.sfAvgBlurs</strong>
<br/>high
</td>
<td>
<b>@aggregateAssessment.sfAvgNoBlurs</b>
<strong>@aggregateAssessment.sfAvgNoBlurs</strong>
<br/>low
</td>
</tr>
<tr>
<th>Move Times</th>
<td>
<b>@aggregateAssessment.sfAvgLowVar</b>
<strong>@aggregateAssessment.sfAvgLowVar</strong>
<br/>low variance
</td>
<td>
<b>@aggregateAssessment.sfAvgHighVar</b>
<strong>@aggregateAssessment.sfAvgHighVar</strong>
<br/>high variance
</td>
</tr>
<tr>
<th>Hold Alert</th>
<td>
<b>@aggregateAssessment.sfAvgHold</b>
<strong>@aggregateAssessment.sfAvgHold</strong>
<br/>alert
</td>
<td>
<b>@aggregateAssessment.sfAvgNoHold</b>
<strong>@aggregateAssessment.sfAvgNoHold</strong>
<br/>no alert
</td>
</tr>

View file

@ -59,7 +59,7 @@ case class PlayerAggregateAssessment(playerAssessments: List[PlayerAssessment],
sigDif(sfAvgHold, sfAvgNoHold)
)
difs.forall(_.isEmpty) || difs.exists(a => a.fold(false){i => i}) || assessmentsCount < 50
difs.forall(_.isEmpty) || difs.exists(~_) || assessmentsCount < 50
}
if (actionable) {
@ -93,29 +93,31 @@ case class PlayerAggregateAssessment(playerAssessments: List[PlayerAssessment],
// Some statistics
def sfAvgGiven(predicate: PlayerAssessment => Boolean): Option[Int] = {
val avg = listAverage(playerAssessments.filter(predicate).map(_.sfAvg)).toInt
playerAssessments.filter(predicate).size match {
case 0 => none
case _ => Some(avg)
}
if (playerAssessments.exists(predicate)) Some(avg) else none
}
// Average SF Avg given blur rate
val sfAvgBlurs = sfAvgGiven((a: PlayerAssessment) => a.blurs > 70)
val sfAvgNoBlurs = sfAvgGiven((a: PlayerAssessment) => a.blurs <= 70)
val sfAvgBlurs = sfAvgGiven(_.blurs > 70)
val sfAvgNoBlurs = sfAvgGiven(_.blurs <= 70)
// Average SF Avg given move time coef of variance
val sfAvgLowVar = sfAvgGiven((a: PlayerAssessment) => a.mtSd.toDouble / a.mtAvg < 0.5)
val sfAvgHighVar = sfAvgGiven((a: PlayerAssessment) => a.mtSd.toDouble / a.mtAvg >= 0.5)
// Average SF Avg given bot
val sfAvgHold = sfAvgGiven((a: PlayerAssessment) => a.hold)
val sfAvgNoHold = sfAvgGiven((a: PlayerAssessment) => !a.hold)
val sfAvgHold = sfAvgGiven(_.hold)
val sfAvgNoHold = sfAvgGiven(!_.hold)
def reportText(maxGames: Int = 10): String = {
"[AUTOREPORT]\n" +
"Cheating Games: " + cheatingSum + "\n" +
"Likely Cheating Games: " + likelyCheatingSum + "\n\n" +
playerAssessments.sortBy(-_.assessment).take(maxGames).map(a => Display.emoticon(a.assessment) + " http://lichess.org/" + a.gameId + "/" + a.color.name).mkString("\n")
val gameLinks: String = (playerAssessments.sortBy(-_.assessment).take(maxGames).map{ a =>
Display.emoticon(a.assessment) + " http://lichess.org/" + a.gameId + "/" + a.color.name
}).mkString("\n")
s"""[AUTOREPORT]
Cheating Games: $cheatingSum
Likely Cheating Games: $likelyCheatingSum
$gameLinks"""
}
}