Browse Source

Solved part1

Piotr Czajkowski 2 years ago
parent
commit
347fd810c0
2 changed files with 173 additions and 44 deletions
  1. 36 44
      25/code.go
  2. 137 0
      25/input

+ 36 - 44
25/code.go

@@ -28,92 +28,84 @@ func readInput(file string) [][]string {
 	return input
 }
 
-func moveEast(input [][]string) bool {
+func moveEast(input [][]string) (bool, [][]string) {
 	changed := false
+	newBoard := make([][]string, len(input))
 	for i := 0; i < len(input); i++ {
-		for j := 0; j < len(input[i]); j++ {
-			if input[i][j] == "." || input[i][j] == "v" {
-				continue
-			}
+		newBoard[i] = make([]string, len(input[i]))
+	}
 
+	for i := 0; i < len(input); i++ {
+		for j := 0; j < len(input[i]); j++ {
 			if input[i][j] == ">" {
 				if j+1 < len(input[i]) {
 					if input[i][j+1] == "." {
-						input[i][j] = "."
-						input[i][j+1] = ">"
+						newBoard[i][j] = "."
+						newBoard[i][j+1] = ">"
 						changed = true
-						j++
 						continue
 					}
 				} else {
 					if input[i][0] == "." {
-						input[i][j] = "."
-						input[i][0] = ">"
+						newBoard[i][j] = "."
+						newBoard[i][0] = ">"
 						changed = true
 					}
 				}
 			}
+
+			if newBoard[i][j] == "" {
+				newBoard[i][j] = input[i][j]
+			}
 		}
 	}
 
-	return changed
-}
-
-type point struct {
-	x, y int
+	return changed, newBoard
 }
 
-func moveSouth(input [][]string) bool {
+func moveSouth(input [][]string) (bool, [][]string) {
 	changed := false
-	toSkip := make(map[point]bool)
+	newBoard := make([][]string, len(input))
 	for i := 0; i < len(input); i++ {
-		for j := 0; j < len(input[i]); j++ {
-			if toSkip[point{i, j}] {
-				continue
-			}
-
-			if input[i][j] == "." || input[i][j] == ">" {
-				continue
-			}
+		newBoard[i] = make([]string, len(input[i]))
+	}
 
+	for i := 0; i < len(input); i++ {
+		for j := 0; j < len(input[i]); j++ {
 			if input[i][j] == "v" {
 				if i+1 < len(input) {
 					if input[i+1][j] == "." {
-						input[i][j] = "."
-						input[i+1][j] = "v"
-						toSkip[point{i + 1, j}] = true
+						newBoard[i][j] = "."
+						newBoard[i+1][j] = "v"
 						changed = true
 						continue
 					}
 				} else {
 					if input[0][j] == "." {
-						input[i][j] = "."
-						input[0][j] = "v"
+						newBoard[i][j] = "."
+						newBoard[0][j] = "v"
 						changed = true
+						continue
 					}
 				}
 			}
+
+			if newBoard[i][j] == "" {
+				newBoard[i][j] = input[i][j]
+			}
 		}
 	}
 
-	return changed
-}
-
-func print(input [][]string) {
-	for _, row := range input {
-		fmt.Println(row)
-	}
-	fmt.Println()
+	return changed, newBoard
 }
 
 func part1(input [][]string) int {
-	count := 0
+	count := 1
+	var changedEast, changedSouth bool
 
-	for i := 0; i < 10; i++ {
-		fmt.Println(count)
-		print(input)
-		changedEast := moveEast(input)
-		changedSouth := moveSouth(input)
+	for {
+		changedEast, input = moveEast(input)
+		changedSouth, input = moveSouth(input)
 		if !changedEast && !changedSouth {
 			break
 		}

+ 137 - 0
25/input

@@ -0,0 +1,137 @@
+>vv...v..>.v>.>v...>>>>vv...v.>..>..>>v>v....v..>>.>v...v...>.>..v>.>>..>.>v.v...>v>v.>v..vv>>>..>....v.v.>.v.......v>....vv..>.>vv>v>>>.>.
+>.>..>>........v....>...v.v.>.v>v.v...........>..>>vv...v.v.v>>...v>>v>...>v...>>v....v.>.>>.>vv..>...>...v.>.........>.vvv.v.>.>>>..>..>v.
+.v.v>v.v.v.>.>>>v.>>.v.>v..>.v.vv.....>.>v.>>.>..>.v.vv>....>.v>.v.....>.vvv.>>v.>.>.v...v....>vv>.v...v.v...v>vvvv.>v>>>.v>v>...>.v..>....
+>.v.>v>...vv.>...v.>..>.....>>..vvv..v.>>>...>v.v.v>.v..vv...v>.>.>vv......v....v>vvv>.vv.>..>>>...v..vvv..>v>>v>.v.v..>v.>vvv.>v.v....>.v>
+...v.v>v......v>.v.v>>>.v>vvv..v>v...v.v.v>..>...>.>vvvvv..>vvvvv>.>>...v.v>>>..vvv....vv...>vv.v.v.v.v.v>.v..vvv>>..>>v.>..vv.>vv>..>vv>..
+.>....v...>>..>>>>>>v.v.vvv>.>..>...v..>....>.v.>.vv.....>..>>v.vvv...>.>>v>v.>.>....>.v>.vvv..v>.>>....>vv....>>.v.>..>v>>...v...v.>..v.>v
+.v..vvvv.v..v..>....v>..>v>.v.>...>v..>..>vv>>>...v..>vv..>v.v>>..v....v>.>.v>..>vv.>>.>..v>.>v.vv.>...vvv..>v.v>v>>v>vv.v..vv>.>>..>.>....
+.>..>>.v>..v.vv>.v....>v>v.v>.>v.vvv>v.....v.>>...vv>v..v...>>>>..vvv>v.v.vvv>v....>>v..vv...vv....>>>.v.vv.vv..v>v.>>v.......>.v.>v>...v>v
+vv..>>....vvv..v..>v..>>..v...>...>>v>>>..vv..v>>.vv..>.>.v>.>.v...>>v.>..>>v.v...>>vvv.v.>..>.v.v.>vv>....>..>v...vv......>v>....>.>.v>>..
+>>>.v>.v>vv..vv>vvv>>....>>>v.v..>..v>v..>vv.v.>>..v>>vvvv.>..v>.v>.>..vvv....v..>....>v.v.>v..v>>>...v>...>...v..>v>.>v>...>.v.>v>>>>>v>>v
+...v...>>.v..vvv.v..>v....v>vv.>......v>.v.vv.>vvv>..>.v>vv>...>>.>.v....>v.v..>.>.>>.>v>.>...>v>vv>..>vvv....v..>..>>v.v.v.>>..v....>.>.>v
+.>.v>.v>vvvvv.>>>.....v.>>v...v..>.>.>>>.>.v>...>vv>....>..vvv>vv.v.>>....>>..vv>>v.>...v.v.>>v.>...>v>...>v.>vvv...>.>.>vv....>>>..>.v>..v
+.........>>v.>.v.>....v..v>...>..vv.....vv>v>..v.v......>v..v>>.>..>.>..>...>>.v>.vv.>.>..v.>.>v>v.>v>.>>v.v>.>vv.>>v.v.....v.v.>>vv.v.v.vv
+...>v>.>.>>.v>...>..>v.>>>.>>>>>v..>...v....>..>...>>..>vv....>.>>..>v....>v>>.v...v.>..v>v>.>.>v>>>v..v.......>...>....v..v>v.v.vv.vv.v...
+v..>..v.v..v>...vvv.v.>.vvv.v>.....v.>>v>.>>>.v....>..v>....>.....>..v>..v>>.>.>>v..vv...vvvvv.>>...v..>.>>v.v..>vv......v>>>.>>.vv>...>v..
+...>..v>..>..v>>vv..>.>.v>v..>>>.>..vv.>.v..v.vv.>.v.>>.v.>>v.v......v....v..v.v>.>v.v....>>>.v...v.>..v.v.v.>>v.v..v>>>v>vv>.....>v...vv>>
+....>..v..>...v..>v...v.>.v.>.vv>.>>....>..>v>v.>....>>.>v>v...>>..>v.v>...>v.v.v..>>......v.v..v>vv.>>>v>v.v.vv..v.v.v.v..>....v.v>v>.v>v.
+..>vv.v..>.v>..v..v>>.v.>vv...vv>.vvv.>>>.....v..>>>.v.v...v>>.vv..>..v.>>.v.......>>....>>.>>........>.>.>.v.>..v....>vv>v.>.>vv>v.>vvvv>.
+>.>>...>.v.>...>...vv...>.>.v.>.>..v.vv.>>.>v>.v>...v.v>>.>v..>....v.>..v>..>>...v.v.>v...vv...>v>v.v........v.vv.>.v.>...v>>v>v..v>......v
+.>.>.v.>..>>.>.v....v..>v.v>.>>.>>.>.>v..vv.v..............v.>v.>.v.>>.......>>>vvv>.>>v..>.v>>..v>.>..v>....vv.>vv.vv.v.>..>..v>>v.v..>..>
+..>>.>.v>.....v.>v>.>vv>>..>...vv.>.>.>>v>.....>..>..>.vv>v..>..v>>.v..>vvv.>v>v>...>>v.>v>..>..>...>.>>>..>.v>.v.v.>..v....>v...>>v.vv..v.
+>....>...>..>v>v.v...vv.v>v>.>..>>vv>...vv...>..vvv...vvv..>...v>>.>.>.vvvv.>v.>...>.v.>v>.>>..vv>.vv..v>vvv.>>..>.>...>.vvvvvvv..v..>...>.
+>.vv>.>>.v......>.v..v.>..>.>.vv....v>v....>vv>>......>..>.>.>v.>v...>.v.>>v.>.>...>.....v.>>vvv....>..v..v>>...>.>>>....>>>>v.>v>.>>>..>>.
+...vv>v.>.v>.vvv...v.>>.>..v.v.vv..>.v>>.>.v...>>v>.>>>.>>.v...v......>.>>.>..v...vv.>v>.v.v.>v>>..v>...v...>v..>v>>.v....v..v..vv..v>v>>>.
+>vv...>..v...v.>v>>.v..vv>..>v>vvv....v>vvv......v>v..>vv..>.v.v.>v.v.v.v>..v.>.>....>..>...>....>.>....>v>v.>>v..vv.>.v>vvv...v.v..v.>v.v>
+>vv.>......>..>>v.>...v...>..v.......>.>v>..>>.>v>...v.>v.>vv.>.v..>v..>v...>.v>>...vv>..vv..v.......>.>....v.>>vv.v..>.>......>.v.....vv.>
+......vv.>v>v.vvvv.v>.v.>....v>>..v..>...v.>...v>>....>.>..v.>.>.>v.....>v>vv>..vv>v.....v.>>v.v.>.>..>..>...>v....v>>vvv..v.>>.v.>.v....vv
+v...v...v>>>v.v.>v.>>..>...v..v...vv..v..v.v.>.v>v.>>v.v>..v.>v>v>......vvv>v>v>.>v.vv.>v...v>>>.vvv.vv>v..v..v.vv.v.vv.>.>...vvv.v..v...>.
+>...>vvv>.>v>>v.vvv.........>>..v..>.>>.vvv>.v.....v.....>..v...v.>>>v>...>.v..v>v..v.>>.v.>.....vv>v...vvvv.>vv>>>..>>.v>..vv.v..v.>..>..>
+>....v......v>..v....vv.>...v.>.>.v>v..>>...v.>.>..v.v.v..>v.>.v>.v>.>.v..v.>.v......v..vv>..>..v>v....>.vvv.v..>....v...>v....>vv.v.v>v..v
+.v....v..v...........v>..v..>>>v.v...vvv...v..>.>.vv.>v...>.>.vvv.>...>>...vv.v>vv>>.......v>.v..>.v>vv.>v..>vv>.....>.v...v...v>>.>...>>>>
+..v>>...>.>>vv..>vv...vv>.v>vv..v.v..>vvv.vvv>.v.v..v>v.v...v>.>..>.>.>vv.v..vv....v..>.>..v.>.>>>v>.>.>v>vv....vv..v>..v....v.v..v.vv>>...
+.>..>.>.v..v>.>v>>v..v>>>...vvvv.>.>>>v.vvv>.v..v.v.>..v..vv.v...v.>....v>v.>.>v.>...v.v...vv>>....vvvv...v>.v.>>..>vvv>v>>..vv.>.vv>v.v..v
+.vvvv.v.>.>.>v..v....vv.>...>.>v....vv..>...>.>..vv.>>.vv...v>.>.v.>..>.v>>>>..>..vv>>vv.>v>v.v.>>>v.v.vv.v..v..v..v..v.>v....>.v.vv.>..>vv
+v.>v....v>.vv>....v.>>.v.>.>vv>v>....>.vv>.....>..>.v>vv.>v>...vvvv>.>.vv.....v>v.v>.>.....v...v.vv>.>v..>v..v>>.v..v.v>>..>>.vv.vv.....>>>
+...v>..>v.>v>>.>v...>.vv>....>v.vv>>.v>>......>.v>.v..>>>.>>>....>.>..>>.>.>.>>>v.>>.....>v..vv....v>>.vv>v..>>v..v>.>..>vvvv>....>..>.....
+vv>..v...>v..v..>.>..>>v>>>vvv..v>>v>v..v>vv....v>>.>v...>>>>v.>.vv>vvv>>.v.vv....v.v>.>v....v.....v.>.>....>.>v.vv..>vvv.v.>.>>v>v>.>>..v.
+.>.....vv>>>....>v...>.>.v>.>vvv.vvvv.>......>>.v>.v.>>v.v..v.....vvv..>.>v>vv.>>>...v.>.vv>v..v...v....>vv>v.vv>>vv.v...>>v>.>.>v..>..>v..
+....v..>........v>>.v..vv>.v>>.v...>...>.>>v.v.v.vvv...>>.v>>v>.>vvv..v..>v>v.v.vv..v>..vvvvv..vv>>.>>>...v.>.>.>>>>..v>..v.v.v>.v>.>...>>.
+v.v..v...v..vv>...v...v>..>v>.>v.vv...>.v>.v..>>..>..>>>..v..v...v>>.vv>>>v..vv.v.v...vvv..>..v.v..>....v..>>v..vv.v.v>.v>>.>.>.>>>..v.vv..
+...>v>>vvv..v.v...>v>..>>>>>...v>..vv.>..v..>>..v....>v.>v.>>.vvv>...>.v..v.>>...>.>..vv.>..v>..v..>.>v.>v..>v.v>vv>.v.>>>..v..........>.>.
+v.>v.vvvv.>..v.vv.v........>vvv..>.v>...>v.>>v>>.>.>.......>v>v.>>...v....v..>..>..v.vv..v>.>......>v.v...>.vv.>>v...>.v..v.v>v>>vv.vv.>.vv
+v.>..>>>.>.....>.>v..v.>.....>>v..v>>>v...vvv>..vv....v>.>.vv.>v....v>v...>..v..>..v>..>>.>>.v.v.>>.v>vvvv...>.>.....v>.>>.>v...v>..v>..>..
+.....>.v..>>vvv>v..>>..>.v>>v.>>>>>.vv.>>>>..vv.>.>..>......>v.v.>>>v.....>>v>.>>v.v...v.>..v.>>.>>.vv..v....v.vv........>.>v..v...vv>>>.>>
+>v.v.>.....v.>.v...v..v.v>v...>...>..v.>>..v..v>v>>.v....v..>.>>>...vv>>....v.>......v>.v>>..vvv..vv..vv>.>vv.v>vv....>.v.....v.>>.vv.vv..>
+>..v.....vv>v..v.v.v.>>.v>.>>>.>..>vv...>vv.vv.v.vvv>..>.v>v.v>>.vvv>...>>...>..>.>.>v>v>v>.>>.v.v>v>..>.vv.vvvv..>..>...v.v>>>.v>...vv.v.v
+>>..>.>.vvv>.>>v>...>vv>>..>vv.>....>>.v..>vv...v>.>..>.v>...vv>..vv>v.>.v.vvv.>v....v..>v.v>v..v.v.v.>>vv>v.vv..>>.v.v.>>>..>..v..v>......
+>v..>vv>vv.>.v..v>...>.>....>..>.v.v...v>..v>v.v...>.>>.>..v....>>..vv.v.>v.>.vv>>.>.>.>...>.v.........vv..vvv...>>.>..>...>.>>v>..v.v.v.v.
+.>>>.>v..>.....v...>..v..v>v>..v.....>.>v>>.v..>.>v....>.v..>>..v>....v>.vv..>>...........v..>.>...>v..vv.v>.v........v.>.v...>vv>.>>..v>>>
+v.>....>....vv.>v.v>v...v.>>..>v.>...v....v.>>>v...vvv.>...>...>>v>...>>vvv..v..v.>v.>>>..>.v>vv>.>..v>.v.>v..>v.v.>v.>>.>v..v.v.v>vvv>>.>.
+v.....>vv.vvv....>v....v>.v..>vvv>v>>....v...>.....vvvv>v.vv>.>v>vv.>.>.>.>v.>.v..>.>>v>>...vv.>.v.>.>..>..v>.>>>v>v.vvvv..>..v.>v>.>vv>..v
+vvv.>>>..v.v.v.v..........v.>..>.vv.v.....v>....v.v.vv>.>.v>vv...v..>v>.v>...>v..>..vvv.>>.>vv>v>..vv.>v....v..>.>>>.v>>.v.>vv....vvv>.>..>
+.vv.v...>..>.>.>v>v.vvv..v>>vvv.>.>.......>.>.>v.>..>>.>vv>v>.vv.v...>..v>.>>..v.v.v.>>.v>.v.v>>..>>.>...v>.v..>>.....vvv>.>v>v.>..>>.>v..v
+>vv..>..vv..v...>>.>.>>>.>.v..>...>..>>>v.v.>.v.....>.>...v>v>..>>.>v>.v.v>..v>..v.>>>.v>>>v>v..v>.vvvv>v..>>v.v>..v..>.v..v.>v..v.v..>.v.>
+>..v..v>v>v.vv.>.>>>.v>.....>.>>..>v>.v>.>..>v.>v.>>.>v...>.>>.>>.vv.v>..>v.......>>...>.vv....v...>>>>>.>.>.v...>>v>vv.v>.....v>v..v>...vv
+>>v>..v.>.v>v...v>.vvv>v>..>>..>.v>>.>v...v...>.>v>>.vvv.>v..>>...v.vv>.....>vv...>v.v.>v..>>v..vvv.v>>..>.v.v.v>vvv.....>>>v>..v>...v>v.v>
+v>.>>.>.v.v>..>v..v.>>>..>....v>..vvv>.....>>vv>v>....>.>...>>vv>>..>vvv>..v..>..v...v.>...vv.v.v.>..>>.v.>>v.......>>>..>..>........v....v
+..v>.v..v>>>...v.>v....>>>.>...>.v.v.v>v..v...v>..>>>>>.>.v.v..>v...v.>.>>v>...vv....v>>>.>.vv.>.v....v..>>....>v.v.v..>.v...>.v>.>...>>.>v
+....>v..v...v..v.....>....>vvv>>....v.vv.v.>.v...>>>..v...v.>>>.>vv..>..v>>v>v>..v>...>.>...v....v.v...>.>..>.v..>v>..>..>v....>vv.vv....>>
+....v.>v>.v>...>>v>.>..>....v.v>v>.v..v>.v>vvv.v>.>v.vv>.......v>.>>>.v....vv.>....>>...v......>>.v>>vv>>>.>>>vv.v>.......v.>v.>.>....v.>..
+....vv.........v>.v.>..v.>.v..v>vv..vv..v.v..v..>..v..>>.v..>v...>..v>.>...>.v....v...>.>....v..>...v>>.>v.>.vvv>..>..v.>>v.>vv.v>...>..>..
+.>.>v.>..v>....>v..>...v..>...vv..>.>v..>..v.>v..>v.>.>v>vv..v>vvv.v>>>..>.>>v....v.v..>>....v..v.vvv...>>>v...........>..>>.>>>..vvv...>..
+.vv..vv...>>vv.>v.vv..>.v...vvv....v...v>.v.>..>>.>v..v..v....>vv.>.v.>...v...v>.>..v>>>vvv...v......v.v.>...v.v>..v>vvv.>......v..>.......
+>>>..>vv>>>v>.>>>....>>>..v>.v.>.v..v>v>>v.v....v.vv.>v>....>v>>..v.........>.v.>v.>...v>>>..>>v....v.v>v..>..>>v....v..v>..v.v..v.>.>..>v>
+>>.>>v>vv>v.vvv.>>>>v>...>..>>>>.v>v>..v.>>.>v..>.>v..v.>>.>>v.>..>vv.>...v.v>>v>.vv>..v...>>..v...v.v...>v..v.v.>>....v..>.>.v.>>.>.v..v.v
+v.vv.>v.v>...vv.v...>.v>>..v....>.v....>...vv.>v>>..>.v.v.v.>.>>>.>.v.v.>.v.>.....v>..>v.v....>>....v>.>.v.v..>..>v>...v...>.>>...>...vv.v>
+...>v.......v.>.vv>>.>>...vv.....v...v.vv...>v.v>.>.>.>>...>v....v.>>....>v.>>.v.v>v.>...v.vv.v.>.>>>.vv.vv>v>...>...>.v.v>>v>.>vvvv>vv.>v.
+v..v.>v...v>>.>v....v.......vvv...v....>v..vv>v>v..>.vvvv..v.>>.vv.v.v.v>>v..>v.vv..>v.>.v>.>.>vv>.v>......>..vv.>>>.v.v.>..>v..v.>v>>>.v>>
+..>>v.>...>v>.>>.>.v....>>v.v.>vv..>>....v>>.vvv.v>.....>v.....v>.>..>v.v.......v..v.>>>>.v>>v.>v>...v....v..v.v...>.>v...vvv..v.>..vv.v...
+>vv>.v.vv..v>v.v...v......>>.>v.v.v.v.......v...v.>.vvvv.......>....>.v>..v.....>.....>>>vv...>v>.v...vv.v>>>....>v>..>v..>v.v..>v.>.>.>>..
+.>....v..>>..vv...>....vv.>>v>>>...>>v>..>.v...v>.v.vvv.v...v..v..v.vvv...>v.v....v.>vv.v>>...v>>v.>>v..v.v>.v>.......>..>v>v.vv>.....>>.vv
+v.vv>.>v...v>....v.>.v.>...>>v.>.>..>v.v.vvv....v>>vv.....>v..v>..vvvv.>.v..vv>>...>>>.>.>>...>...v...>v>vvv.v>>....v.v.v.v...v>v.....>v>..
+.v...v>.>v..>v.v..v.v..>>.>..v..v>.v..>..v>.>v.>..>v.....v.>..>.v>vvvv.>..v..v>.v>.vv.v.v>.>.v.....v..v.>>>>.v.vv.vv....v>.>v...v..v>.vv>.>
+..>v..>v>..vv>..vv>v>v..v.>>vv...v>v...>v>v.>.>vv..>.>....v.v.v>v..v>..>>vvv..>.>>v>...>....>v>vv......v..v>>..vvv..>..>v.vv>v.v.........>v
+..v..v>>.v....>>.>vv>>v.>..>.>...vv..>v>.>....v.....v>>.>...>v>>>v>v.vv..v>vvv>.vv...v...>...>>.v...>v.....v>vv...v......>>>v.>>.>.>.v>.v.>
+v>>..v>...v>.>v...vv.>.v>..v.v>>.vv..v........v.>..v.>>>v>v...>.vvv.>>v.>.vv>>.>.v..>..v.v>.v..v...>..v>.v..>..v>.....>.vv>v..>>.>>.v....v.
+>vv.v>>v.vvv..vvvv>>v..v...>>.>>..>..vv>...>v....>v>v.....>.....>>....>...>..vv.v....>v>>>>v......>...vv>>.v..>.v.>.>.v..>.>......>v>vv.v..
+......>.>..>vv>.vv>>...vvvv....v.vv...v>>v>....>v.>...v.vv.>..v>.v>>vv.>....>v.>.v.vv.v>.vv>...v.>v>.>>..v>>v..>v.v...>....v.v....v>v.>.v.v
+>v>v.>vv....>.v>.v..>.>.>..>.vv....>.....>v>>..>>.>.>.>.>v.>...v>v..v>vvvv.>>v...>vv>>..v..v.>>.v.v>vv.>...........>.>.....>>.v..>.>...v..>
+v>v>>...>v..vv.........>v...v..v>.>..>>>>.v>..>v>>...>v..>>.....>.>.>>>>..vv.>vv....v>..>..>..vv>....vv.>>>...>.v..v>v......v>v>.v.v.v>.v.>
+>v..v>.v.....>>.v>>...v..vv>.>>>..v..v.>>..>..v....>v...>vvvv>.vv......v.>vv>>..v...v.>v>..vv.>.vv......>..>>>.....>......vv.>>>>>vv....>vv
+.>...v.v>.....v.>...>v>v..vv>>>>.>>>>v..vv.vvv.>>..>.>.v.>>.>v>>.>.>>v.v..v....v...v....v>>..v>..>.v.>v>vv>.>.>.>..>v>>.>..v...>.v>.....v.>
+vv..>..v...>>>..>v.>>..vv>vv.v.v>.v....>>v..>.>>v>>v.>v.v>.v>...>..v>...v>v>....>.>>..v>vv..>>.v.v.v>v>>.>..>v>..>.>>v>>....v>..>.....>>..v
+v.>>>.v..v>.>...v....v...>...>v.v...>..>..vv>.v..v>..v>.>v...v>>.>..v..v.v>.v.vv..>v..>..>.>..vv....v>v.>vv>.v.>.vv...>v.>v>vv.>v..v.v..v..
+v.>v..>..v...v..v....v>.vv>v.>>.v.>v....>>.v.>v>>.......>>>..v..>...>v.v.>>>v........v....v.vv.vv>>..v>..v.v..v....v>.>v.>>...v>>..v...v...
+..v>>..>>......v..>>.v.vvv>....>>vvvvv>vvvvv>v..>v>.v>vvvv..>....v>v>.v.>v>.>.>.>...>.>v.>.>..>.v>>v.vv>...v..>>v>>.>v>v>.v....vv..vv..>.>v
+..v.>v.>v.v>>.>v.v>>.>.....v>v.v>vv>.vv>..>v.>...vv..>>vv.vv.>.v.>>>....>.>>>.>v>..>.v.v....>>>..v.>>.>..>>>.>>>>>....v.vvv.>.v.v.v>v>.>.>.
+>>vv..>...>.>.vv..>>.>.vv....>..>.>vv..v.>.v>..v..>....>v......>..>.>vv..>.v.>>>..v.>v>>v...vv..v>.v...>>..v>..>.v.v.>v..>>>...v..>>.v....v
+..v.v..v>v.>.>..>v.v>>..>v.>.>>.>>>.v..v.>....v...v.>...>>v>.v....>.v.v>v>.>>>.>v.vv..vv...v>>.v...>vvv.>.vv.v....>>v.>>....v..>...v..v>..>
+.>v.vv..vv>>v>v>......>.....>>....vv>v...>......>..>....v>>v....v...vvvv.v....>v.>>..v.>>v....v.......vvv..v.>>>v....v.v...>.....v..v.....>
+>....vv.....>.v...v..v.v.>>>>.vvv>.vv>.>...v.v>..>>.vvv>v>.v..v.v..v>....vv.v>....>.....>>.vv.vv.v.v.>..>.v..v>>...>..>.>..v.>v...>.>......
+.v.v>v>v>v>.>.>.vvv>.v..v>v>.v>....>vvvv.v>v...>>..v.>>.vv..v>>...v.v...>...>vv..>...>>>v.v...>>.......v.>..v>.v..........>>.>.v.>.>..v>.>v
+..>>>>>.v.v......v...>..>>.>>..v...>...>>.....>vv...>>.>>.>v..v.vv..v..>>>..v>.....vvv..>>...>v.vv>>>...>vvv.>v>.v.>>..>>.>>v>>..>..v.v..v>
+v..>...v....>>v....v.v>..v...v.v.v....vv..>..v...>vv>>>v>>vv>>v..vvv..>>>v.v.v.>>...>v..vv>v.v..v.>v.....v.>...>.>.v>v>.>..v>>>.v.v>.v.>v.>
+>>.>vvv..>..v>v..>>..>.v.v..>.>v>.v...vv..vvv.v..vvv>..v.v.>....v..>.>..>...v.....v>.>...v.vvv...>...>>.>vvvv>>vvv.vvv....vvvv>>v....>>v.v.
+v>vv>.v....>.>.>>>..>..>.>v>..>...vv>>>.>..v>v.v.>.v....v.>...>..vv.>.>.v.v>.v..>>>..v>v>>.v..v.....>v..vv>>.>.>v>..vvvv>.>.v>.v..v..v>>>v.
+v.vv>>v>..v...>..>.vv>.v..vv......v.>>>v>v.>..vvv.>.v>>v..v.>...>.>....>...>v..vv.v..>.>vvv.v.v...>v.vvvvv...>>.vv.v>v.vvv..vvv.>.>..>>>.v>
+.>>>>v.>>>.>vv>v>.....>>>v>v.>v.vv...vvv>vv>.>.v.v>v...v>.>.v>v>.v>>vv>.v.>...>vv.vvv>v>.>v>v...>.>vv..vv>.vv...>..v....v.>v.>v>.....>..v.>
+v....>.>..>.>....>.>.vv....>v.v......vvv.v>vvv>..v.v>>.>vv>v>>..>>v>v>vvvvv.>>>>.v.>....v>v>..v.>.vv..>>.v>vv.....>>v..vv.v..v>.v..vv>.....
+.>v..v>>vvv.v.....>.v.>.>.v.>v>...v.v..>>....>vv....v.v>>>v.>...>....v.v>>...v>.>>...>....vv.vv.v>>.>.....>vv.v.v.>>.>>v...>>>.vvv...>v....
+v>.>.v.....v..>.v.v..v...v.v>.vvv...vv.>.v.>.v>>>.v>.........>>>..>..v..v.vv>>.>...>>.v...v..>..>>vv>.>vv..>>vv>.v.>.>..>vvvvvv.>>....v.>v.
+...>>.v>.>vv>..>v.>..v.....v>.>.>>....v>v...v.vvv.vv...>.>..>v..v>.>.>v...v..v.>v.v>vv..>.vv>...v>.>...vv>>....v>v...vv.>>..>>.>vv>.>..v.vv
+.v>v>.vvv.vv.>.v.v....v>v>....>>v..v......vvvv.>>....v>.....>vv.>..>v.v..vv.>>.vv>.v....v.........>>.vv..v.>.v....>.v.v..v>.v.>v.v....vv..v
+vv.v............>.vvv.>.....>>.v..v..v>>v.>>v..>...vv>v.>.>.>vvv>..>>v>v.v>.>.>v...>v>v>.>>v.....v.>.>..>>>v>>vvvv>..>...>vvvv....v..>>v.>.
+.v....>v.v.v.>.v>..>v.>.>.v.>>.>v..>.>>.>>v>>>vv>v>.>>.>.v.>..v>>vv>>v.>>>>>.>.>..>>...v>...>v..>.v>.v>vvv>.v....>v>>v...v>...>.>..>>.vvv.v
+v>.....v>.>.....v...vvv...v.v.>.>..>..vv.>>.v>>>v>...>.vv>v.....>.>.>.v..v.>....vv.>.>......vv>v.v.v.vv>vv..>v>>>..>.>>..>>vv>.>>>v..v.>..>
+vv..>.>.>..>.vvvv....v>...vv.v.v>vv......>>..v...v.....>>>>..v>v..v.v>..vv..v....vv..>>>..>>....>vvvv>.>.vvv>.>.>>>v.v>.vv>vv.....>.v....>.
+.>>>.......v>....>.v>.>v...>>>>v.v>>.vvv.v>.vvvv>>..>.v..v>.v.>>vv>.....>...>>v>.v.vvvv.>.........>...>>>v...>vv.v.v>>..>..v.>.....>v>v>.>.
+>.v...>......>..v.v.vv...v>.v.>v..>>>v>.v...>v.vvv>...vv>v.v.v.......>>...v...vvv>..vv>>v>...>.....v....v>.......v.vv...vvv>>>>vv>>.>......
+.>>.v.>v.v.>...>.v..>>..v....>>vv>v...>..v>>vv..v..>>>v..vv>.vv...>.>....>>>.v..>.>.>.v>v....vv.>>>.>>v>>.>vv.>v>vv...vvvvv.>>.....>v...v..
+v.v.v.vvv..>...>>v.>>..>v>>....>.>>......v.>v...>.v>.....vv.v.vv>>.v.>>...>.v.v.v..>>.vvv>v..v.v....>.v.v>v>>.v>>v.>.v.v>>>>.>..>>.>.v>.>>>
+..>.v>..v..vv>v..>vv.>>.v.v>..v.>v..v.>.v>..>vv...v....>>v.v..>.....v>v...>.v...>v..vv.v...>.>.>v..vvv.>..vv....vvvvvv.>.vvv.>.>..>......vv
+.v>.>.vv..v...vvv.>.>.>>>.v>....>...v>.....v.>.>>v.>..v.>.vvv.......v.v.v.>..>.vv>....v.>.v......vvv.v..>....>v.....vv>...>v.v.vv..v>>v..v.
+.v.v.v..>>>.....vvv..>.>.....v>v>..>>>......v.>>v.>.vv>..>..v>v.....>>.vvv.>v>.>>.>>v>vv.vvv...v.>.....vv...>v.v.vvv..>.v>.>>..v>v>vvv...vv
+.vv>>..vv.v..v...vv.>>....vvv.v>...vv.vvv..>...v.v.v>>.>.>.v..>>...>v....v>>.v.>vvv.>.v.>>.v.>v>>.v..v..v....v.>.v..vv.v>>.....vvv.v>.vv.>.
+vv.v.>v...v>...........>.v>.>vvvv.>..>>>.....>>.v.v..>v>...v.>>.>>>.v.vv.v>vv>v>.>>v>v....v..v>..v>vv..>v...v..>..>>>>>.>.....vv>.>>>>...v.
+.v.v..v>.vv..>>...v..>..>..v>>.>>vv>v....>vvv.>>.vv.vv>vv>v.vv>.>v..>.>.......>v....v>...>..v....v.vv>>....v>.v.v.v>..>v>.>.......v>.>>>>>.
+vv....v.>.v>v>...v>.v.v>..v.v..>..>...>>.>.>...>....>....vv>v>>...>v.v...vv>v.v.v......>.v.vv..v>..>v...v.vv.>>>>...v.v.>.>.....>....>v>...
+...>vv..>>vv.v>>....vv..vv..v>>...>.v>>>.v......v.v.>.v.vv....vv.v....vvv>>.v..>>vvvv...>.v.>>.>.>.vvv.v>.....v..>.vv.>..>..v>v>v..>..>>v.v
+.vvv.>.vvv>.>v..v>..>v.v.>.>...>>.>>>.>.vv>>.>.>>>vv>..>>.>>.>.....>..vvv.>.>v.>..v..>v..v>v.v.>>.>v.v..vv>v..>.vv>v...v>>..vv>v.>v..v>v>>>
+v>......v>v>>....vv...v>>v>..>>>>....v..>>...v..>v..>>.v>v.v....>>>.v..vv......v..v>..>.v.v>>>v.v>....v.v>.>..v>>>..>.v>>.v.v.>v>.v..v.v...
+vvvv>>.>..>v.vvv..v.v>>..>..>v>>>..>....>.v>..vv...v.>.>v.vv.>>v>v>v.vvv..>.>v..>>>>.>....v>..v.>>..vvvvv.v>.>.>>.>v...v..>v>>vvv.v...>>>..
+v.>..>.v>..v.>>.vv.v..>v.vv..>v.>...vvvv.v.vv..>.vv>..>v>..v>.....>....v>...v.v..>.v...>>v..>v.....v.>>vv>....>..v...>>>.>v.>.>vvv..>>.v.vv
+..>.v.........>..>.......>.v.>>>>v.v.vvvv>..>v..v.>v>>v..v..>..v.v>>...vvvv.v...>.>...>>>>>>...v>.>vv>.>v>v>.v.v..v>.>.>v.v>.v>.......>.>..
+..v.>>..>v..vv..v>>v....>>>....>.>>.>.>>v>>...>>>vvv>>v>..>..v....v..v..>v>...v.>>>vv.v.v>.>.v.v>>>..>.>.>v>v>v.>.vvv.v.>>>>>...>>v..vvv>>v
+v.>.>>.vv.>.>...>v.>>v>...v..>v....v.>.>..vv..>..v>..v.v...v.v>.>>v>.vv.>..vv>...>v.>.v..v.>.v.vv>v>...v....>.>v..>.v..v>>v>.>...>...v.>.v.
+.>.>....>>.v>.v..v....v>.>>>>.v...v..v...v.>..v......>>.>..vv>..v...v.v...>vv.>>..>....>>>.>v>vv>..>vv>.v>>.>..>.>vv.v...>.>...>v.>vv>vv.>>
+.>...>.>v>..>vv....>.vv.>..v.v.vv>v..>vv..v>..>....vv>vv.v>>.v>>.vv>.>>v..>...v>....v>vv..>..v.v.v..v>.v..vv.v.v.>.>....v>v..>...>.>vv..vv>
+>.v>...>>.>.v..>>v>.>...>.vv>.vv.>..vvv>.>vvv..>..>v.....v.>>vv...>v...v...v..v.v..v>>v>>>>.>v..vv......>..>.v.....v.>>>.>.>.vv>.>.>v.v.v>.
+v...>.v.>v>.v.>....>....v.v>..>>v..>..>>>>..>..vv...>.v.>>>>>.>>v>>....v...>.....v..v>.....>..>....v...v.v..v>v.>....vv..v......v>>v...>..v
+....v.v.>.v.v>.>>..>>.v..v>v......>...v..v.>>....>......v>..>v>>.>vv>..>v>vv>v..vv.v.>>.vvv..vvv>..vvv..>v>vv.>>.>v.v.>.>..v.>v...........>
+vv......v.>.>v.>vv>>...>v.>..>v>v>>v.vvv>...>>..>.>..>>v.vv.>>>>>.v...vv..v.vvvv.>..>>v>.>>vvvvvv.v.v>.v.vv...>v>..>..v>v>v...>>.v>.v.v>..v
+....v..>.>v.>v.......v>v....v....>v>.>.>v.v.v>..>.>..v.v>>.vvv........>..>.v..>.>>v.>...>>.>>......>>.>...>.>..v..>....>>.vv>.v.........v.v
+....>>.v..>v>...>..>.>...v>....>>.vvv..>..v>.......>...v>v>>.v>.>...>.v.v.>...>>......v...>..v....v>>v......vvvv...vv.>>>vvv..>v>v.v.v.vv..
+...v....>v..>.v.vv.>.v.>..>.>...v..>vv>..>>v>>.>.>..v.v.v..>vv.>vv.v..v...v>v>>.v..>.v>..>v.>.>..>vv.>v...>>.>...v.>.v.>>..>.>v.v>.>.vvvv.v
+.v>v.>>....>>.>.>.v>..>...>.v...v..>.v..v....v.vv>>>>.vv.v..>....>..>v.>..v>>>....vv>.v.>...>..vv>.v.vv.>>.>...v>>v>.v.vv.....>.vv>.>..>...
+..>vv.>..>.v..>..>...vvvvv..v.v>..>vvv..v.v>..v..v.>..>..>..>.>.>..v......v>>>>v.>>.v>...v..>>vvv..>>>>..>>.vv..>.>>..>vv>>..>.>vv.>.v.v.>v