Browse Source

Solved part1

Piotr Czajkowski 1 year ago
parent
commit
7ec4cc4314
1 changed files with 17 additions and 0 deletions
  1. 17 0
      03/code.go

+ 17 - 0
03/code.go

@@ -40,6 +40,10 @@ func symbolNear(lines []string, height int, width int, y int, start int, end int
 		i = start
 		i = start
 	}
 	}
 
 
+	if end >= width {
+		end = width - 1
+	}
+
 	canGoUp := y-1 >= 0
 	canGoUp := y-1 >= 0
 	canGoDown := y+1 < height
 	canGoDown := y+1 < height
 
 
@@ -64,15 +68,22 @@ func part1(lines []string) int {
 	var result int
 	var result int
 	height := len(lines)
 	height := len(lines)
 	width := len(lines[0])
 	width := len(lines[0])
+	edge := width - 1
 	for i := range lines {
 	for i := range lines {
 		var start, end int
 		var start, end int
 		gotNumber := false
 		gotNumber := false
+		tryRead := false
 		for j := range lines[i] {
 		for j := range lines[i] {
 			if isDigit(lines[i][j]) {
 			if isDigit(lines[i][j]) {
 				if !gotNumber {
 				if !gotNumber {
 					start = j
 					start = j
 					gotNumber = true
 					gotNumber = true
 				}
 				}
+
+				if j == edge {
+					end = j + 1
+					tryRead = true
+				}
 			} else {
 			} else {
 				if !gotNumber {
 				if !gotNumber {
 					continue
 					continue
@@ -80,6 +91,10 @@ func part1(lines []string) int {
 
 
 				end = j
 				end = j
 				gotNumber = false
 				gotNumber = false
+				tryRead = true
+			}
+
+			if tryRead {
 				if symbolNear(lines, height, width, i, start, end) {
 				if symbolNear(lines, height, width, i, start, end) {
 					var d int
 					var d int
 					n, err := fmt.Sscanf(lines[i][start:end], "%d", &d)
 					n, err := fmt.Sscanf(lines[i][start:end], "%d", &d)
@@ -89,6 +104,8 @@ func part1(lines []string) int {
 
 
 					result += d
 					result += d
 				}
 				}
+
+				tryRead = false
 			}
 			}
 
 
 		}
 		}