Procházet zdrojové kódy

Solved part2 for example, too slow for full input

Piotr Czajkowski před 1 týdnem
rodič
revize
776104df45
1 změnil soubory, kde provedl 25 přidání a 0 odebrání
  1. 25 0
      07/code.go

+ 25 - 0
07/code.go

@@ -61,6 +61,30 @@ func part1(maze []string, beams []int) int {
 	return count
 }
 
+func part2(maze []string, x, y int) int {
+	if y >= len(maze) {
+		return 1
+	}
+
+	var count int
+	var left, right int
+	if maze[y][x] == '.' {
+		count += part2(maze, x, y+1)
+	} else if maze[y][x] == '^' {
+		if x > 0 {
+			left += part2(maze, x-1, y+1)
+		}
+
+		if x < len(maze[0])-1 {
+			right += part2(maze, x+1, y+1)
+		}
+
+		count += left + right
+	}
+
+	return count
+}
+
 func main() {
 	if len(os.Args) < 2 {
 		log.Fatal("You need to specify a file!")
@@ -76,4 +100,5 @@ func main() {
 	beams := make([]int, len(maze[0]))
 	beams[start] = 1
 	fmt.Println("Part1:", part1(maze, beams))
+	fmt.Println("Part2:", part2(maze, start, 1))
 }