This commit is contained in:
Ben Charlton 2017-12-12 21:45:36 +00:00
parent 0eec315f95
commit bf5ef31334
2 changed files with 14 additions and 16 deletions

View file

@ -4,14 +4,14 @@ import (
"bufio"
"fmt"
"os"
"strings"
"strconv"
"strings"
)
// cat input | go run 12.go
type pipedata struct {
pipe int
pipe int
linkedTo []int
}
@ -24,7 +24,7 @@ func main() {
for scanner.Scan() {
s := strings.Split(scanner.Text(), " <-> ")
pipe,_ := strconv.Atoi(s[0])
pipe, _ := strconv.Atoi(s[0])
var linkedTo = []int{}
l := strings.Split(s[1], ", ")
@ -38,12 +38,11 @@ func main() {
cp := CountPipes(pd)
seenGroups := make(map[int]int)
groups,_ := CountGroups(seenGroups, pd)
groups, _ := CountGroups(seenGroups, pd)
fmt.Println(cp,groups)
fmt.Println(cp, groups)
}
func CountPipes(pipedata []pipedata) int {
seen := make(map[int]int)
seen = getChildren(seen, pipedata, 0)
@ -58,7 +57,7 @@ func CountPipes(pipedata []pipedata) int {
}
func CountGroups(seen map[int]int, pipedata []pipedata) (int,map[int]int) {
func CountGroups(seen map[int]int, pipedata []pipedata) (int, map[int]int) {
count := 0
for i := range pipedata {
if seen[i] > 0 {
@ -68,7 +67,7 @@ func CountGroups(seen map[int]int, pipedata []pipedata) (int,map[int]int) {
count++
}
}
return count,seen
return count, seen
}
func getChildren(seen map[int]int, pipedata []pipedata, pipe int) map[int]int {
@ -76,7 +75,7 @@ func getChildren(seen map[int]int, pipedata []pipedata, pipe int) map[int]int {
p := pipedata[pipe]
for l := range p.linkedTo {
child := p.linkedTo[l]
if (seen[child] == 0) {
if seen[child] == 0 {
seen[child]++
seen = getChildren(seen, pipedata, child)
}

View file

@ -25,10 +25,9 @@ func TestCountPipes(t *testing.T) {
}
}
func TestCountGroups(t *testing.T) {
seen := make(map[int]int)
v,_ := CountGroups(seen, tests)
v, _ := CountGroups(seen, tests)
if v != 2 {
t.Error(
"For", tests,