0
Create a struct in Rust called Statistics that holds a list of numbers and implement methods to calculate these statistics. For example, you could have methods to calculate the mean, median and mode of the numbers stored in the structure.
**The code**
```rust
use std::collections::HashMap;
struct Statistics {
numbers: Vec,
}
impl Statistics {
fn new(numbers: Vec) -> Self {
Statistics { numbers }
}
fn mean(&self) -> Option {
let sum: f64 = self.numbers.iter().sum();
let count = self.numbers.len() as f64;
if count > 0 {
Some(sum / count)
} else {
None
}
}
fn median(&mut self) -> Option {
self.numbers.sort_by(|a, b| a.partial_cmp(b).unwrap());
let len = self.numbers.len();
if len == 0 {
return None;
}
if len % 2 == 0 {
let mid = len / 2;
Some((self.numbers[mid - 1] + self.numbers[mid]) / 2.0)
} else {
Some(self.numbers[len / 2])
}
}
fn mode(&self) -> Option {
let mut map = HashMap::new();
for &num in &self.numbers {
*map.entry(num).or_insert(0) += 1;
}
let max_value = map.values().max()?;
let mode = map.iter().find(|&(_, &count)| count == *max_value)?;
Some(*mode.0)
}
}
fn main() {
let numbers = vec![1.0, 2.0, 3.0, 4.0, 5.0, 5.0, 6.0, 6.0, 6.0];
let stats = Statistics::new(numbers.clone());
println!("Numbers: {:?}", numbers);
println!("Mean: {:?}", stats.mean());
println!("Median: {:?}", stats.median());
println!("Mode: {:?}", stats.mode());
}
```
This code creates the struct Statistics, which has a vector of numbers. It implements methods to calculate the mean, median and mode of these numbers. The mean method calculates the mean of the numbers, median calculates the median and mode calculates the mode. Note that these methods return Option, as they may not be applicable (for example, if the array of numbers is empty).
And now I’m wondering how to get lemmy to block posts linking to a given site.
The person has previously been warned to stop posting links to the site. They’ve now been given a temp ban, if that doesn’t deter them, they’ll be given a permanent ban and we might ban the site from our instance.