-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmcc_test.go
86 lines (69 loc) · 970 Bytes
/
mcc_test.go
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package dlx
import (
"context"
"fmt"
"strings"
)
func solve(matrix string) {
d := NewDancer()
d.Debug = true
d = d.WithContext(context.TODO())
res := d.Dance(strings.NewReader(matrix))
for sol := range res.Solutions {
for _, opt := range sol {
fmt.Println(opt)
}
}
}
func ExampleNewDancer() {
xcInput := `
| A simple example
A B C D E | F G
C E F
A D G
B C F
A D
B G
D E G
`
solve(xcInput)
// Unordered Output:
// [A D]
// [B G]
// [C E F]
}
func ExampleNewDancer_xcc() {
xccInput := `
|A simple example of color controls
A B C | X Y
A B X:0 Y:0
A C X:1 Y:1
| comments
X:0 Y:1
B X:1
C Y:1
`
solve(xccInput)
// Unordered Output:
// [A C X:1 Y:1]
// [B X:1]
}
func ExampleNewDancer_mcc() {
mccInput := `
| A simple example of color controls
| and multiplicity
A B 2:3|C | X Y
A B X:0 Y:0
A C X:1 Y:1
C X:0
B X:1
C Y:1
| finished
`
solve(mccInput)
// Unordered Output:
// [A C X:1 Y:1]
// [B X:1]
// [C Y:1]
// [null C]
}