square/
square.rs

1use graph_solver::*;
2
3// Notice that edges starts with `2`.
4const HORIZONTAL: Color = 2;
5const VERTICAL: Color = 3;
6
7fn main() {
8    let mut g = Graph::new();
9
10    // Create a node pattern.
11    let a = Node {
12        color: 0,
13        self_connected: false,
14        edges: vec![
15            Constraint {edge: HORIZONTAL, node: 0},
16            Constraint {edge: VERTICAL, node: 0},
17        ]
18    };
19
20    // Add 4 nodes.
21    for _ in 0..4 {g.push(a.clone())}
22
23    let solve_settings = SolveSettings::new()
24        .debug(true).sleep_ms(2000);
25    if let Some(solution) = g.solve(solve_settings) {
26        // Prints:
27        // 0 0 0 0
28        // ========================================
29        // 0 2 1 0
30        // 2 0 0 1
31        // 1 0 0 2
32        // 0 1 2 0
33        solution.puzzle.print();
34    }
35}