-
Notifications
You must be signed in to change notification settings - Fork 77
/
array2d_example_test.go
71 lines (63 loc) · 1.41 KB
/
array2d_example_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
package array2d_test
import (
"fmt"
"strings"
"github.com/zyedidia/generic/array2d"
)
type Sudoku struct {
arr array2d.Array2D[byte]
}
func (s Sudoku) PrintBoard() {
var sb strings.Builder
for y := 0; y < s.arr.Height(); y++ {
if y%3 == 0 {
sb.WriteString("+-------+-------+-------+\n")
}
for x := 0; x < s.arr.Width(); x++ {
if x%3 == 0 {
sb.WriteString("| ")
}
val := s.arr.Get(x, y)
if val == 0 {
sb.WriteByte(' ')
} else {
fmt.Fprint(&sb, val)
}
sb.WriteByte(' ')
}
sb.WriteString("|\n")
}
sb.WriteString("+-------+-------+-------+\n")
fmt.Print(sb.String())
}
func ExampleArray2D() {
s := Sudoku{
arr: array2d.OfJagged(9, 9, [][]byte{
{5, 3, 0, 0, 7, 0, 0, 0, 0},
{6, 0, 0, 1, 9, 5, 0, 0, 0},
{0, 9, 8, 0, 0, 0, 0, 6, 0},
{8, 0, 0, 0, 6, 0, 0, 0, 3},
{4, 0, 0, 8, 0, 3, 0, 0, 1},
{7, 0, 0, 0, 2, 0, 0, 0, 6},
{0, 6, 0, 0, 0, 0, 2, 8, 0},
{0, 0, 0, 4, 1, 9, 0, 0, 5},
{0, 0, 0, 0, 8, 0, 0, 7, 9},
}),
}
s.arr.Set(2, 5, 3)
s.PrintBoard()
// Output:
// +-------+-------+-------+
// | 5 3 | 7 | |
// | 6 | 1 9 5 | |
// | 9 8 | | 6 |
// +-------+-------+-------+
// | 8 | 6 | 3 |
// | 4 | 8 3 | 1 |
// | 7 3 | 2 | 6 |
// +-------+-------+-------+
// | 6 | | 2 8 |
// | | 4 1 9 | 5 |
// | | 8 | 7 9 |
// +-------+-------+-------+
}