grid/
grid.rs

1use graph_solver::*;
2
3// Notice that edges starts with `2`.
4const EDGE: Color = 2;
5
6fn main() {
7    let mut g = Graph::new();
8
9    let edge = Constraint {edge: EDGE, node: 0};
10
11    // Create a node pattern.
12    let a = Node {
13        color: 0,
14        self_connected: false,
15        edges: vec![edge; 2],
16    };
17    let b = Node {
18        color: 0,
19        self_connected: false,
20        edges: vec![edge; 3]
21    };
22    let c = Node {
23        color: 0,
24        self_connected: false,
25        edges: vec![edge; 4]
26    };
27
28    for _ in 0..4 {g.push(a.clone())}
29    for _ in 0..4 {g.push(b.clone())}
30    g.push(c);
31    g.no_triangles = true;
32    g.meet_quad = true;
33
34    for i in 0..4 {g.set((i, 8), 1)}
35    g.set((1, 5), 1);
36
37    let solve_settings = SolveSettings::new();
38    if let Some(solution) = g.solve(solve_settings) {
39        // solution.puzzle.print();
40        println!("{}", solution.puzzle.graphviz(
41            "sfdp",
42            &["black,fontcolor=white"],
43            &["black"]
44        ));
45    } else {
46        eprintln!("<no solution>");
47    }
48}