Refactores solver, removes dead binary code

This commit is contained in:
2019-01-21 21:08:50 +01:00
parent 14f604283c
commit 940927d376
2 changed files with 122 additions and 114 deletions

View File

@@ -1,44 +1,2 @@
//! The weekly menu planner
//!
use cookbook::{Meal, fetch_meals};
use planner::solver::{Variables, Domain, solve_all};
fn generate_weekly_menu() -> String {
let assignments: Variables<Meal> = [
("LundiMidi".to_string(), None), ("LundiSoir".to_string(), None),
("MardiMidi".to_string(), None), ("MardiSoir".to_string(), None),
("MercrediMidi".to_string(), None), ("MercrediSoir".to_string(), None),
].iter().cloned().collect();
let meals: Domain<Meal> = Domain::new(fetch_meals());
let validator = |vars: &Variables<Meal>| {
let mut result = true;
for day in ["Lundi", "Mardi", "Mercredi"].into_iter() {
let all_day = vars.keys().filter(|k| k.starts_with(day));
let mut nutri_value = 0;
for key in all_day {
nutri_value += vars.get(key)
.expect("no value here !")
.expect("no meal there !")
.nutritional_value()
}
println!("{} -> {}", day, nutri_value);
if nutri_value != 1200 { result = false; };
}
println!("Validator returns {}", result);
result
};
let solutions = solve_all(assignments, &meals, validator);
format!("{:#?}", solutions)
}
fn main() {
println!("{}", generate_weekly_menu());
}
#[cfg(test)]
mod tests {
}