Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,39 @@
|
|||
struct SimpleMovingAverage {
|
||||
period: usize,
|
||||
numbers: Vec<usize>
|
||||
}
|
||||
|
||||
impl SimpleMovingAverage {
|
||||
fn new(p: usize) -> SimpleMovingAverage {
|
||||
SimpleMovingAverage {
|
||||
period: p,
|
||||
numbers: Vec::new()
|
||||
}
|
||||
}
|
||||
|
||||
fn add_number(&mut self, number: usize) -> f64 {
|
||||
self.numbers.push(number);
|
||||
|
||||
if self.numbers.len() > self.period {
|
||||
self.numbers.remove(0);
|
||||
}
|
||||
|
||||
if self.numbers.is_empty() {
|
||||
return 0f64;
|
||||
}else {
|
||||
let sum = self.numbers.iter().fold(0, |acc, x| acc+x);
|
||||
return sum as f64 / self.numbers.len() as f64;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
for period in [3, 5].iter() {
|
||||
println!("Moving average with period {}", period);
|
||||
|
||||
let mut sma = SimpleMovingAverage::new(*period);
|
||||
for i in [1, 2, 3, 4, 5, 5, 4, 3, 2, 1].iter() {
|
||||
println!("Number: {} | Average: {}", i, sma.add_number(*i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
use std::collections::VecDeque;
|
||||
|
||||
struct SimpleMovingAverage {
|
||||
period: usize,
|
||||
numbers: VecDeque<usize>
|
||||
}
|
||||
|
||||
impl SimpleMovingAverage {
|
||||
fn new(p: usize) -> SimpleMovingAverage {
|
||||
SimpleMovingAverage {
|
||||
period: p,
|
||||
numbers: VecDeque::new()
|
||||
}
|
||||
}
|
||||
|
||||
fn add_number(&mut self, number: usize) -> f64 {
|
||||
self.numbers.push_back(number);
|
||||
|
||||
if self.numbers.len() > self.period {
|
||||
self.numbers.pop_front();
|
||||
}
|
||||
|
||||
if self.numbers.is_empty() {
|
||||
return 0f64;
|
||||
}else {
|
||||
let sum = self.numbers.iter().fold(0, |acc, x| acc+x);
|
||||
return sum as f64 / self.numbers.len() as f64;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
for period in [3, 5].iter() {
|
||||
println!("Moving average with period {}", period);
|
||||
|
||||
let mut sma = SimpleMovingAverage::new(*period);
|
||||
for i in [1, 2, 3, 4, 5, 5, 4, 3, 2, 1].iter() {
|
||||
println!("Number: {} | Average: {}", i, sma.add_number(*i));
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue