package two import ( "bufio" "io" "strings" ) func parseLines(r io.Reader) (*graph, error) { graph := newGraph() count := 0 scanner := bufio.NewScanner(r) for scanner.Scan() { line := scanner.Text() indx := strings.Index(line, "^") if indx != -1 { graph.startPoint = point{indx, count, N} } graph.data = append(graph.data, scanner.Text()) for i, r := range line { if r == '#' { graph.obstacles = append(graph.obstacles, point{i, count, obstacle}) } } count++ } if err := scanner.Err(); err != nil { return nil, err } return graph, nil } func replaceAtIndex(s string, r rune, i int) string { out := []rune(s) out[i] = r return string(out) }