Hide stuff and correct sorting of SouthCarolina and Syracuse.
This commit is contained in:
@@ -96,36 +96,36 @@ impl Game {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// The average number of plays in a quarter.
|
/// The average number of plays in a quarter.
|
||||||
pub fn avg_plays_per_quarter(&self, team: Team) -> f32 {
|
pub fn avg_plays_per_quarter(&self, team: Team) -> f64 {
|
||||||
let periods: Vec<Period> = Quarter::iter()
|
let periods: Vec<Period> = Quarter::iter()
|
||||||
.filter_map(|quarter| self.get_period(quarter.to_owned()))
|
.filter_map(|quarter| self.get_period(quarter.to_owned()))
|
||||||
.to_owned()
|
.to_owned()
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let quarterly_avgs: Vec<f32> = periods
|
let quarterly_avgs: Vec<f64> = periods
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|period| {
|
.filter_map(|period| {
|
||||||
if !period.is_overtime() {
|
if !period.is_overtime() {
|
||||||
Some(period.team_plays(team.to_owned()) as f32)
|
Some(period.team_plays(team.to_owned()) as f64)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect::<Vec<f32>>();
|
.collect::<Vec<f64>>();
|
||||||
|
|
||||||
quarterly_avgs.iter().sum::<f32>() / quarterly_avgs.len() as f32
|
quarterly_avgs.iter().sum::<f64>() / quarterly_avgs.len() as f64
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the average delta of a team.
|
/// Returns the average delta of a team.
|
||||||
pub fn avg_delta(&self, team: Team) -> f32 {
|
pub fn avg_delta(&self, team: Team) -> f64 {
|
||||||
let deltas = self.deltas(team);
|
let deltas = self.deltas(team);
|
||||||
|
|
||||||
// Summation doesn't like directly returning f32 from i8.
|
// Summation doesn't like directly returning f64 from i8.
|
||||||
deltas.iter().sum::<i8>() as f32 / deltas.len() as f32
|
deltas.iter().sum::<i8>() as f64 / deltas.len() as f64
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the average delta for a team's positive deltas.
|
/// Returns the average delta for a team's positive deltas.
|
||||||
pub fn avg_gain(&self, team: Team) -> f32 {
|
pub fn avg_gain(&self, team: Team) -> f64 {
|
||||||
let deltas: Vec<u8> = self
|
let deltas: Vec<u8> = self
|
||||||
.deltas(team)
|
.deltas(team)
|
||||||
.iter()
|
.iter()
|
||||||
@@ -138,12 +138,12 @@ impl Game {
|
|||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
// Summation doesn't like directly returning f32 from u8.
|
// Summation doesn't like directly returning f64 from u8.
|
||||||
deltas.iter().sum::<u8>() as f32 / deltas.len() as f32
|
deltas.iter().sum::<u8>() as f64 / deltas.len() as f64
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the average delta for a team's negative deltas.
|
/// Returns the average delta for a team's negative deltas.
|
||||||
pub fn avg_loss(&self, team: Team) -> f32 {
|
pub fn avg_loss(&self, team: Team) -> f64 {
|
||||||
let deltas: Vec<i8> = self
|
let deltas: Vec<i8> = self
|
||||||
.deltas(team)
|
.deltas(team)
|
||||||
.iter()
|
.iter()
|
||||||
@@ -156,7 +156,7 @@ impl Game {
|
|||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
deltas.iter().sum::<i8>() as f32 / deltas.len() as f32
|
deltas.iter().sum::<i8>() as f64 / deltas.len() as f64
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the number of penalties that a team experienced.
|
/// Returns the number of penalties that a team experienced.
|
||||||
@@ -381,8 +381,8 @@ mod tests {
|
|||||||
dbg!(a.avg_plays_per_quarter(Team::Nebraska));
|
dbg!(a.avg_plays_per_quarter(Team::Nebraska));
|
||||||
dbg!(b.avg_plays_per_quarter(Team::Nebraska));
|
dbg!(b.avg_plays_per_quarter(Team::Nebraska));
|
||||||
|
|
||||||
assert!(a.avg_plays_per_quarter(Team::Nebraska) == ((1_f32 + 6_f32) / 2_f32));
|
assert!(a.avg_plays_per_quarter(Team::Nebraska) == ((1_f64 + 6_f64) / 2_f64));
|
||||||
assert!(b.avg_plays_per_quarter(Team::Nebraska) == 1_f32)
|
assert!(b.avg_plays_per_quarter(Team::Nebraska) == 1_f64)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use clap::{ArgAction, Parser};
|
|||||||
use core::panic;
|
use core::panic;
|
||||||
use gamelog::{Action, Down, Flags, Key, LogFile, Team, TerrainState};
|
use gamelog::{Action, Down, Flags, Key, LogFile, Team, TerrainState};
|
||||||
use std::{io, path::PathBuf, sync::mpsc, thread};
|
use std::{io, path::PathBuf, sync::mpsc, thread};
|
||||||
use strum::IntoEnumIterator;
|
//use strum::IntoEnumIterator;
|
||||||
use tui::App;
|
use tui::App;
|
||||||
|
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
@@ -43,9 +43,9 @@ fn main() -> io::Result<()> {
|
|||||||
TeamStats::new(Team::Colorado),
|
TeamStats::new(Team::Colorado),
|
||||||
TeamStats::new(Team::Iowa),
|
TeamStats::new(Team::Iowa),
|
||||||
TeamStats::new(Team::Nebraska),
|
TeamStats::new(Team::Nebraska),
|
||||||
TeamStats::new(Team::Syracuse),
|
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
TeamStats::new(Team::SouthCarolina),
|
TeamStats::new(Team::SouthCarolina),
|
||||||
|
TeamStats::new(Team::Syracuse),
|
||||||
TeamStats::new(Team::TexasAnM),
|
TeamStats::new(Team::TexasAnM),
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -89,6 +89,7 @@ fn main() -> io::Result<()> {
|
|||||||
.push(game.penalties(team.to_owned()));
|
.push(game.penalties(team.to_owned()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
for team in gamelog::Team::iter() {
|
for team in gamelog::Team::iter() {
|
||||||
let team_idx = stats
|
let team_idx = stats
|
||||||
.iter()
|
.iter()
|
||||||
@@ -98,12 +99,13 @@ fn main() -> io::Result<()> {
|
|||||||
stats[team_idx].most_common_play = Some(log.most_frequent_action(team.to_owned()));
|
stats[team_idx].most_common_play = Some(log.most_frequent_action(team.to_owned()));
|
||||||
stats[team_idx].least_common_play =
|
stats[team_idx].least_common_play =
|
||||||
Some(log.least_frequent_action(team.to_owned()));
|
Some(log.least_frequent_action(team.to_owned()));
|
||||||
/*
|
|
||||||
stats[team_idx].most_effective_play =
|
//stats[team_idx].most_effective_play =
|
||||||
Some(log.most_effective_play(team.to_owned()));
|
// Some(log.most_effective_play(team.to_owned()));
|
||||||
*/
|
|
||||||
stats[team_idx].play_frequencies = Some(log.frequency_of_plays(team.to_owned()))
|
//stats[team_idx].play_frequencies = Some(log.frequency_of_plays(team.to_owned()))
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// :#? for pretty-printing.
|
// :#? for pretty-printing.
|
||||||
@@ -134,11 +136,11 @@ fn main() -> io::Result<()> {
|
|||||||
struct TeamStats {
|
struct TeamStats {
|
||||||
team: gamelog::Team,
|
team: gamelog::Team,
|
||||||
// Terrain
|
// Terrain
|
||||||
avg_terrain_gain: Vec<f32>,
|
avg_terrain_gain: Vec<f64>,
|
||||||
avg_terrain_loss: Vec<f32>,
|
avg_terrain_loss: Vec<f64>,
|
||||||
avg_terrain_delta: Vec<f32>,
|
avg_terrain_delta: Vec<f64>,
|
||||||
// Play rate
|
// Play rate
|
||||||
plays_per_quarter: Vec<f32>,
|
plays_per_quarter: Vec<f64>,
|
||||||
plays_per_game: Vec<usize>,
|
plays_per_game: Vec<usize>,
|
||||||
// Penalties
|
// Penalties
|
||||||
penalties_per_game: Vec<usize>,
|
penalties_per_game: Vec<usize>,
|
||||||
|
|||||||
Reference in New Issue
Block a user