takuzu/lib.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
#![warn(missing_docs)]
#![warn(rust_2018_idioms)]
#![deny(unsafe_code)]
//! A library for solving Takuzu (a.k.a. Binairo) number puzzles.
//!
//! # About
//!
//! Takuzu is a number puzzle, sometimes called binary sudoku.
//! The objective is to fill a grid with `0`s and `1`s while
//! observing the following rules:
//!
//! * no more than two zeros or two ones adjacent to each other in any direction.
//! * each row and each column must contain an equal number of `0`s and `1`s.
//! * no two rows and no two columns are the same.
//!
//! The grids are squares of even size.
//! A valid grid must have one and only one solution.
//! The solver will find and return all valid solutions though.
//!
//! # Input format
//!
//! For parsing, the grids must be represented with the following characters:
//! `0`, `1`, `.` for a missing number, and one `\n` at the end of each row.
//! The final `\n` may be omitted.
//!
//! [Example grids](https://github.com/letheed/takuzu/tree/master/grids)
pub use ansi::AnsiGridDiff;
pub use grid::{
cell::Cell,
error::{GridError, GridParseError, GridSizeError},
Grid,
};
mod ansi;
mod grid;