Creates a simple planning
This commit is contained in:
@@ -1,2 +1,33 @@
|
||||
//! The weekly menu planner
|
||||
//!
|
||||
extern crate cookbook;
|
||||
extern crate planner;
|
||||
|
||||
use self::cookbook::*;
|
||||
use self::cookbook::models::Recipe;
|
||||
use self::planner::solver::{Domain, Problem, Variables};
|
||||
|
||||
fn ingredients_contains<'a>(assign: &Variables<'a,Recipe>) -> bool {
|
||||
assign.get("Lundi_midi").unwrap().unwrap().ingredients.contains("Patates")
|
||||
&& assign.get("Mardi_midi").unwrap().unwrap().ingredients.contains("Patates")
|
||||
}
|
||||
|
||||
fn get_planning_all_results() -> String {
|
||||
let conn = establish_connection();
|
||||
let possible_values = recipes::load_all(&conn);
|
||||
let domain = Domain::new(possible_values);
|
||||
|
||||
let mut problem = Problem::build()
|
||||
.add_variable("Lundi_midi".to_string(), &domain, None)
|
||||
.add_variable("Mardi_midi".to_string(), &domain, None)
|
||||
.add_constraint(ingredients_contains)
|
||||
.finish();
|
||||
|
||||
let results = problem.solve_all();
|
||||
format!("{:#?}\nTotal = {}", &results, results.len())
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
||||
println!("{}", get_planning_all_results());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user