forked from Maxluli/RustyPropagation
113e91dcc8
remove const no need for RwLock as we don't use mut in thread \o/
55 lines
1.4 KiB
Rust
55 lines
1.4 KiB
Rust
mod disease;
|
|
mod human;
|
|
mod population;
|
|
mod prelude {
|
|
pub use crate::disease::*;
|
|
pub use crate::human::*;
|
|
pub use crate::population::*;
|
|
pub use console::style;
|
|
pub use console::Term;
|
|
pub use rand::Rng;
|
|
pub const CORRECTED_PERCENTAGE: i32 = 101;
|
|
}
|
|
|
|
use prelude::*;
|
|
use clap::Parser;
|
|
|
|
#[derive(Parser, Debug)]
|
|
struct Args {
|
|
/// Number of threads
|
|
#[clap(short, long, default_value_t = 1)]
|
|
threads: usize,
|
|
}
|
|
|
|
fn main() {
|
|
let args = Args::parse();
|
|
|
|
let term = Term::stdout();
|
|
term.write_line("********** Rusty Propagation (Console) 2022 **********")
|
|
.expect("Oops Looks like we have a problem here...");
|
|
|
|
let disease = Disease::new(20, 10, 5, String::from("Covid 44"));
|
|
let mut population = Population::new(20, 10, 5, 1000, 1000, disease);
|
|
//population.change_disease(disease);
|
|
println!("After Filling");
|
|
//population.display();
|
|
//population.display();
|
|
let mut stats: [i32; 4];
|
|
// = [0,0,0,0];
|
|
let mut counter: u32 = 0;
|
|
loop {
|
|
counter += 1;
|
|
stats = population.propagate_new(Some(args.threads));
|
|
//population.display();
|
|
println!(
|
|
"Normal: {} Infecteds: {} Immunes: {} Deads: {}",
|
|
stats[0], stats[1], stats[2], stats[3]
|
|
);
|
|
if stats[1] == 0 {
|
|
break;
|
|
}
|
|
}
|
|
println!("Propagation finished in {} steps", counter);
|
|
//population.display();
|
|
}
|