Piotr Czajkowski 5 months ago
parent
commit
4264f13a92
1 changed files with 12 additions and 14 deletions
  1. 12 14
      03/code.go

+ 12 - 14
03/code.go

@@ -64,6 +64,16 @@ func symbolNear(lines []string, height int, width int, y int, start int, end int
 	return false
 }
 
+func numberFromLine(lines []string, index int, start int, end int) int {
+	var number int
+	n, err := fmt.Sscanf(lines[index][start:end], "%d", &number)
+	if n != 1 || err != nil {
+		log.Fatalf("Wrong input: %s\n%s", lines[index][start:end], err)
+	}
+
+	return number
+}
+
 func part1(lines []string) int {
 	var result int
 	height := len(lines)
@@ -96,13 +106,7 @@ func part1(lines []string) int {
 
 			if tryRead {
 				if symbolNear(lines, height, width, i, start, end) {
-					var d int
-					n, err := fmt.Sscanf(lines[i][start:end], "%d", &d)
-					if n != 1 || err != nil {
-						log.Fatalf("Wrong input: %s\n%s", lines[i][start:end], err)
-					}
-
-					result += d
+					result += numberFromLine(lines, i, start, end)
 				}
 
 				tryRead = false
@@ -184,13 +188,7 @@ func numberFromPoint(lines []string, width int, point Point) int {
 	}
 	end++
 
-	var d int
-	n, err := fmt.Sscanf(lines[point.y][start:end], "%d", &d)
-	if n != 1 || err != nil {
-		log.Fatalf("Wrong input: %s\n%s", lines[point.y][start:end], err)
-	}
-
-	return d
+	return numberFromLine(lines, point.y, start, end)
 }
 
 func part2(lines []string) int {