mirror of
https://github.com/fluencelabs/examples
synced 2025-04-25 02:32:16 +00:00
* init timestamp oracle * Update Readme.md * update stats, tests * update aqua script and readme
29 lines
725 B
Rust
29 lines
725 B
Rust
use std::collections::HashMap;
|
|
|
|
pub fn mode<'a>(data: impl ExactSizeIterator<Item = &'a u64>) -> (u32, u64) {
|
|
let frequencies = data
|
|
.into_iter()
|
|
.fold(HashMap::<u64, u32>::new(), |mut freqs, value| {
|
|
*freqs.entry(*value).or_insert(0) += 1;
|
|
freqs
|
|
});
|
|
|
|
let mode = frequencies
|
|
.clone()
|
|
.into_iter()
|
|
.max_by_key(|&(_, count)| count)
|
|
.map(|(value, _)| value)
|
|
.unwrap();
|
|
|
|
(*frequencies.get(&mode).unwrap(), mode)
|
|
}
|
|
|
|
pub fn mean<'a>(data: impl ExactSizeIterator<Item = &'a u64>) -> Option<f64> {
|
|
let n = data.len() as u64;
|
|
if n < 1 {
|
|
return None;
|
|
}
|
|
let res = (data.sum::<u64>() / n) as f64;
|
|
Some(res)
|
|
}
|