extern crate bit_set;
extern crate num_rational;
extern crate num_traits;
use std::collections::HashMap;
use std::ops;
use num_rational::Rational32;
pub use constraint::Constraint;
pub use puzzle::Puzzle;
pub use puzzle::PuzzleSearch;
#[derive(Copy,Clone,Debug,Eq,Hash,PartialEq)]
pub struct VarToken(usize);
pub type Val = i32;
pub type Coef = Rational32;
#[derive(Clone)]
pub struct LinExpr {
constant: Coef,
coef: HashMap<VarToken, Coef>,
}
pub type PsResult<T> = Result<T, ()>;
#[derive(Debug)]
pub struct Solution {
vars: Vec<Val>,
}
pub mod constraint;
mod linexpr;
mod puzzle;
impl ops::Index<VarToken> for Solution {
type Output = Val;
fn index(&self, var: VarToken) -> &Val {
let VarToken(idx) = var;
&self.vars[idx]
}
}