extern crate pack; use pack::puzzle::piece::{Position, Template}; use pack::puzzle::pieces::Bag; use pack::puzzle::solver::solve; use pack::util::target::rectangle; fn main() { let target = rectangle(3, 20); let bag = pentominoes(); solve(&target, bag, &mut |solution|{ println!("{}", solution); }); } pub fn pentominoes() -> Bag<(i8, i8)> { Bag::new(vec!( Template::new(vec!( Position::d2(0, 0), Position::d2(1, 0), Position::d2(2, 0), Position::d2(2, 1), Position::d2(2, 2), )), Template::new(vec!( Position::d2(0, 0), Position::d2(1, 0), Position::d2(1, 1), Position::d2(1, 2), Position::d2(2, 2), )), Template::new(vec!( Position::d2(0, 0), Position::d2(1, 0), Position::d2(2, 0), Position::d2(3, 0), Position::d2(2, 1), )), Template::new(vec!( Position::d2(0, 0), Position::d2(1, 0), Position::d2(1, 1), Position::d2(2, 1), Position::d2(2, 2), )), Template::new(vec!( Position::d2(0, 0), Position::d2(1, 0), Position::d2(2, 0), Position::d2(1, 1), Position::d2(1, 2), )), Template::new(vec!( Position::d2(0, 0), Position::d2(1, 0), Position::d2(1, 1), Position::d2(1, 2), Position::d2(2, 1), )), Template::new(vec!( Position::d2(0, 0), Position::d2(1, 0), Position::d2(2, 0), Position::d2(2, 1), Position::d2(3, 1), )), Template::new(vec!( Position::d2(0, 0), Position::d2(1, 0), Position::d2(2, 0), Position::d2(3, 0), Position::d2(3, 1), )), Template::new(vec!( Position::d2(0, 0), Position::d2(1, 0), Position::d2(2, 0), Position::d2(3, 0), Position::d2(4, 0), )), Template::new(vec!( Position::d2(0, 0), Position::d2(1, 1), Position::d2(2, 1), Position::d2(1, 1), Position::d2(2, 1), )), Template::new(vec!( Position::d2(0, 1), Position::d2(1, 0), Position::d2(1, 1), Position::d2(1, 2), Position::d2(2, 1), )), Template::new(vec!( Position::d2(0, 0), Position::d2(1, 0), Position::d2(2, 0), Position::d2(0, 1), Position::d2(2, 1), )), )) }