Refactores solver, removes dead binary code
This commit is contained in:
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user