1
0

14 Commitit 769613beb3 ... 968412ae9d

Tekijä SHA1 Viesti Päivämäärä
  Piotr Czajkowski 968412ae9d Solved part2 1 viikko sitten
  Piotr Czajkowski 7b2748ea82 Still nope 1 viikko sitten
  Piotr Czajkowski 8aa62a1a6f Added input 1 viikko sitten
  Piotr Czajkowski 776104df45 Solved part2 for example, too slow for full input 1 viikko sitten
  Piotr Czajkowski 6c242fc8f1 Solved part1 1 viikko sitten
  Piotr Czajkowski f945c5ab2e Not there yet 1 viikko sitten
  Piotr Czajkowski 6adc950f33 Let's find start 1 viikko sitten
  Piotr Czajkowski be9f3ce788 Able to read input 1 viikko sitten
  Piotr Czajkowski f12313ed57 Solved part2 1 viikko sitten
  Piotr Czajkowski 8e8403641f Started part2 1 viikko sitten
  Piotr Czajkowski b55544ff37 Refactored for part2 1 viikko sitten
  Piotr Czajkowski c0862462b8 Refactor before part2 1 viikko sitten
  Piotr Czajkowski a8a4d07d51 Solved part1 1 viikko sitten
  Piotr Czajkowski 50986b8838 Able to read input 1 viikko sitten
6 muutettua tiedostoa jossa 658 lisäystä ja 0 poistoa
  1. 156 0
      06/code.go
  2. 57 0
      06/description.txt
  3. 0 0
      06/input
  4. 107 0
      07/code.go
  5. 196 0
      07/description.txt
  6. 142 0
      07/input

+ 156 - 0
06/code.go

@@ -0,0 +1,156 @@
+package main
+
+import (
+	"bufio"
+	"fmt"
+	"log"
+	"os"
+	"strconv"
+	"strings"
+)
+
+func readInput(file *os.File) ([]string, []string) {
+	scanner := bufio.NewScanner(file)
+	var numberLines []string
+	var symbols []string
+
+	for scanner.Scan() {
+		line := scanner.Text()
+		if line == "" {
+			continue
+		}
+
+		if line[0] == '+' || line[0] == '*' {
+			var symbol []byte
+			for i := range line {
+				if i > 0 && line[i] == '+' || line[i] == '*' {
+					symbols = append(symbols, string(symbol))
+					symbol = []byte{}
+				}
+
+				symbol = append(symbol, line[i])
+			}
+
+			symbols = append(symbols, string(symbol))
+		} else {
+			numberLines = append(numberLines, line)
+		}
+	}
+
+	return numberLines, symbols
+}
+
+func parseNumbers(numberLines, symbols []string) [][]string {
+	var numbers [][]string
+
+	for _, line := range numberLines {
+		var start, end int
+		var lineNumbers []string
+		for _, symbol := range symbols {
+			end += len(symbol)
+			var number string
+			for i := start; i < end; i++ {
+				number += string(line[i])
+			}
+
+			lineNumbers = append(lineNumbers, number)
+			start = end
+		}
+
+		numbers = append(numbers, lineNumbers)
+	}
+
+	return numbers
+}
+
+func part1(numbers [][]string, symbols []string) int {
+	var sum int
+
+	for i, symbol := range symbols {
+		var result int
+		for row := range numbers {
+			if numbers[row][i] == "" {
+				continue
+			}
+
+			number, err := strconv.Atoi(strings.Trim(numbers[row][i], " "))
+			if err != nil {
+				log.Fatalf("Failed to convert %s to int (row: %d, col: %d)!\n", numbers[row][i], row, i)
+			}
+
+			if symbol[0] == '+' {
+				result += number
+			} else if symbol[0] == '*' {
+				if result == 0 {
+					result = 1
+				}
+				result *= number
+			}
+		}
+
+		sum += result
+	}
+
+	return sum
+}
+
+func part2(numbers [][]string, symbols []string) int {
+	var sum int
+
+	for i, symbol := range symbols {
+		var result int
+
+		for j := len(symbol) - 1; j >= 0; j-- {
+			var digits []byte
+			for row := range numbers {
+				if numbers[row][i] == "" {
+					continue
+				}
+
+				if numbers[row][i][j] >= '0' && numbers[row][i][j] <= '9' {
+					digits = append(digits, numbers[row][i][j])
+				}
+			}
+
+			numberString := string(digits)
+			if numberString == "" {
+				continue
+			}
+
+			number, err := strconv.Atoi(numberString)
+			if err != nil {
+				log.Fatalf("Failed to convert %s to int!\n", numberString)
+			}
+
+			if symbol[0] == '+' {
+				result += number
+			} else if symbol[0] == '*' {
+				if result == 0 {
+					result = 1
+				}
+				result *= number
+			}
+		}
+
+		sum += result
+	}
+
+	return sum
+}
+
+func main() {
+	if len(os.Args) < 2 {
+		log.Fatal("You need to specify a file!")
+	}
+
+	filePath := os.Args[1]
+	file, err := os.Open(filePath)
+	if err != nil {
+		log.Fatalf("Failed to open %s!\n", filePath)
+	}
+
+	numberLines, symbols := readInput(file)
+	numbers := parseNumbers(numberLines, symbols)
+	fmt.Println("Part1:", part1(numbers, symbols))
+	fmt.Println("Part2:", part2(numbers, symbols))
+}

+ 57 - 0
06/description.txt

@@ -0,0 +1,57 @@
+--- Day 6: Trash Compactor ---
+
+After helping the Elves in the kitchen, you were taking a break and helping them re-enact a movie scene when you over-enthusiastically jumped into the garbage chute!
+
+A brief fall later, you find yourself in a garbage smasher. Unfortunately, the door's been magnetically sealed.
+
+As you try to find a way out, you are approached by a family of cephalopods! They're pretty sure they can get the door open, but it will take some time. While you wait, they're curious if you can help the youngest cephalopod with her math homework.
+
+Cephalopod math doesn't look that different from normal math. The math worksheet (your puzzle input) consists of a list of problems; each problem has a group of numbers that need to be either added (+) or multiplied (*) together.
+
+However, the problems are arranged a little strangely; they seem to be presented next to each other in a very long horizontal list. For example:
+
+123 328  51 64
+ 45 64  387 23
+  6 98  215 314
+*   +   *   +
+Each problem's numbers are arranged vertically; at the bottom of the problem is the symbol for the operation that needs to be performed. Problems are separated by a full column of only spaces. The left/right alignment of numbers within each problem can be ignored.
+
+So, this worksheet contains four problems:
+
+123 * 45 * 6 = 33210
+328 + 64 + 98 = 490
+51 * 387 * 215 = 4243455
+64 + 23 + 314 = 401
+To check their work, cephalopod students are given the grand total of adding together all of the answers to the individual problems. In this worksheet, the grand total is 33210 + 490 + 4243455 + 401 = 4277556.
+
+Of course, the actual worksheet is much wider. You'll need to make sure to unroll it completely so that you can read the problems clearly.
+
+Solve the problems on the math worksheet. What is the grand total found by adding together all of the answers to the individual problems?
+
+Your puzzle answer was 4722948564882.
+
+--- Part Two ---
+
+The big cephalopods come back to check on how things are going. When they see that your grand total doesn't match the one expected by the worksheet, they realize they forgot to explain how to read cephalopod math.
+
+Cephalopod math is written right-to-left in columns. Each number is given in its own column, with the most significant digit at the top and the least significant digit at the bottom. (Problems are still separated with a column consisting only of spaces, and the symbol at the bottom of the problem is still the operator to use.)
+
+Here's the example worksheet again:
+
+123 328  51 64
+ 45 64  387 23
+  6 98  215 314
+*   +   *   +
+Reading the problems right-to-left one column at a time, the problems are now quite different:
+
+The rightmost problem is 4 + 431 + 623 = 1058
+The second problem from the right is 175 * 581 * 32 = 3253600
+The third problem from the right is 8 + 248 + 369 = 625
+Finally, the leftmost problem is 356 * 24 * 1 = 8544
+Now, the grand total is 1058 + 3253600 + 625 + 8544 = 3263827.
+
+Solve the problems on the math worksheet again. What is the grand total found by adding together all of the answers to the individual problems?
+
+Your puzzle answer was 9581313737063.
+
+Both parts of this puzzle are complete! They provide two gold stars: **

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
06/input


+ 107 - 0
07/code.go

@@ -0,0 +1,107 @@
+package main
+
+import (
+	"bufio"
+	"fmt"
+	"log"
+	"os"
+)
+
+func readInput(file *os.File) ([]string, int) {
+	scanner := bufio.NewScanner(file)
+	var maze []string
+	start := -1
+
+	for scanner.Scan() {
+		line := scanner.Text()
+		if line == "" {
+			continue
+		}
+
+		if start < 0 {
+			for i := range line {
+				if line[i] == 'S' {
+					start = i
+					break
+				}
+			}
+		}
+
+		maze = append(maze, line)
+	}
+
+	return maze, start
+}
+
+func part1(maze []string, beams []int) int {
+	var count int
+
+	for row := 1; row < len(maze); row++ {
+		for i := range beams {
+			if beams[i] == 0 {
+				continue
+			}
+
+			if maze[row][i] == '^' {
+				if i > 0 {
+					beams[i-1]++
+				}
+
+				if i < len(beams)-1 {
+					beams[i+1]++
+				}
+
+				beams[i] = 0
+
+				count++
+			}
+		}
+	}
+
+	return count
+}
+
+func part2(maze []string, beams []int) int {
+	for row := 2; row < len(maze); row += 2 {
+		for i := range beams {
+			if beams[i] == 0 {
+				continue
+			}
+
+			if maze[row][i] == '^' {
+				beams[i-1] += beams[i]
+				beams[i+1] += beams[i]
+
+				beams[i] = 0
+			}
+		}
+	}
+
+	var count int
+	for _, b := range beams {
+		count += b
+	}
+
+	return count
+}
+
+func main() {
+	if len(os.Args) < 2 {
+		log.Fatal("You need to specify a file!")
+	}
+
+	filePath := os.Args[1]
+	file, err := os.Open(filePath)
+	if err != nil {
+		log.Fatalf("Failed to open %s!\n", filePath)
+	}
+
+	maze, start := readInput(file)
+	beams := make([]int, len(maze[0]))
+	beams[start] = 1
+	fmt.Println("Part1:", part1(maze, beams))
+
+	beams2 := make([]int, len(maze[0]))
+	beams2[start] = 1
+	fmt.Println("Part2:", part2(maze, beams2))
+}

+ 196 - 0
07/description.txt

@@ -0,0 +1,196 @@
+
+You thank the cephalopods for the help and exit the trash compactor, finding yourself in the familiar halls of a North Pole research wing.
+
+Based on the large sign that says "teleporter hub", they seem to be researching teleportation; you can't help but try it for yourself and step onto the large yellow teleporter pad.
+
+Suddenly, you find yourself in an unfamiliar room! The room has no doors; the only way out is the teleporter. Unfortunately, the teleporter seems to be leaking magic smoke.
+
+Since this is a teleporter lab, there are lots of spare parts, manuals, and diagnostic equipment lying around. After connecting one of the diagnostic tools, it helpfully displays error code 0H-N0, which apparently means that there's an issue with one of the tachyon manifolds.
+
+You quickly locate a diagram of the tachyon manifold (your puzzle input). A tachyon beam enters the manifold at the location marked S; tachyon beams always move downward. Tachyon beams pass freely through empty space (.). However, if a tachyon beam encounters a splitter (^), the beam is stopped; instead, a new tachyon beam continues from the immediate left and from the immediate right of the splitter.
+
+For example:
+
+.......S.......
+...............
+.......^.......
+...............
+......^.^......
+...............
+.....^.^.^.....
+...............
+....^.^...^....
+...............
+...^.^...^.^...
+...............
+..^...^.....^..
+...............
+.^.^.^.^.^...^.
+...............
+In this example, the incoming tachyon beam (|) extends downward from S until it reaches the first splitter:
+
+.......S.......
+.......|.......
+.......^.......
+...............
+......^.^......
+...............
+.....^.^.^.....
+...............
+....^.^...^....
+...............
+...^.^...^.^...
+...............
+..^...^.....^..
+...............
+.^.^.^.^.^...^.
+...............
+At that point, the original beam stops, and two new beams are emitted from the splitter:
+
+.......S.......
+.......|.......
+......|^|......
+...............
+......^.^......
+...............
+.....^.^.^.....
+...............
+....^.^...^....
+...............
+...^.^...^.^...
+...............
+..^...^.....^..
+...............
+.^.^.^.^.^...^.
+...............
+Those beams continue downward until they reach more splitters:
+
+.......S.......
+.......|.......
+......|^|......
+......|.|......
+......^.^......
+...............
+.....^.^.^.....
+...............
+....^.^...^....
+...............
+...^.^...^.^...
+...............
+..^...^.....^..
+...............
+.^.^.^.^.^...^.
+...............
+At this point, the two splitters create a total of only three tachyon beams, since they are both dumping tachyons into the same place between them:
+
+.......S.......
+.......|.......
+......|^|......
+......|.|......
+.....|^|^|.....
+...............
+.....^.^.^.....
+...............
+....^.^...^....
+...............
+...^.^...^.^...
+...............
+..^...^.....^..
+...............
+.^.^.^.^.^...^.
+...............
+This process continues until all of the tachyon beams reach a splitter or exit the manifold:
+
+.......S.......
+.......|.......
+......|^|......
+......|.|......
+.....|^|^|.....
+.....|.|.|.....
+....|^|^|^|....
+....|.|.|.|....
+...|^|^|||^|...
+...|.|.|||.|...
+..|^|^|||^|^|..
+..|.|.|||.|.|..
+.|^|||^||.||^|.
+.|.|||.||.||.|.
+|^|^|^|^|^|||^|
+|.|.|.|.|.|||.|
+To repair the teleporter, you first need to understand the beam-splitting properties of the tachyon manifold. In this example, a tachyon beam is split a total of 21 times.
+
+Analyze your manifold diagram. How many times will the beam be split?
+
+Your puzzle answer was 1592.
+
+--- Part Two ---
+
+With your analysis of the manifold complete, you begin fixing the teleporter. However, as you open the side of the teleporter to replace the broken manifold, you are surprised to discover that it isn't a classical tachyon manifold - it's a quantum tachyon manifold.
+
+With a quantum tachyon manifold, only a single tachyon particle is sent through the manifold. A tachyon particle takes both the left and right path of each splitter encountered.
+
+Since this is impossible, the manual recommends the many-worlds interpretation of quantum tachyon splitting: each time a particle reaches a splitter, it's actually time itself which splits. In one timeline, the particle went left, and in the other timeline, the particle went right.
+
+To fix the manifold, what you really need to know is the number of timelines active after a single particle completes all of its possible journeys through the manifold.
+
+In the above example, there are many timelines. For instance, there's the timeline where the particle always went left:
+
+.......S.......
+.......|.......
+......|^.......
+......|........
+.....|^.^......
+.....|.........
+....|^.^.^.....
+....|..........
+...|^.^...^....
+...|...........
+..|^.^...^.^...
+..|............
+.|^...^.....^..
+.|.............
+|^.^.^.^.^...^.
+|..............
+Or, there's the timeline where the particle alternated going left and right at each splitter:
+
+.......S.......
+.......|.......
+......|^.......
+......|........
+......^|^......
+.......|.......
+.....^|^.^.....
+......|........
+....^.^|..^....
+.......|.......
+...^.^.|.^.^...
+.......|.......
+..^...^|....^..
+.......|.......
+.^.^.^|^.^...^.
+......|........
+Or, there's the timeline where the particle ends up at the same point as the alternating timeline, but takes a totally different path to get there:
+
+.......S.......
+.......|.......
+......|^.......
+......|........
+.....|^.^......
+.....|.........
+....|^.^.^.....
+....|..........
+....^|^...^....
+.....|.........
+...^.^|..^.^...
+......|........
+..^..|^.....^..
+.....|.........
+.^.^.^|^.^...^.
+......|........
+In this example, in total, the particle ends up on 40 different timelines.
+
+Apply the many-worlds interpretation of quantum tachyon splitting to your manifold diagram. In total, how many different timelines would a single tachyon particle end up on?
+
+Your puzzle answer was 17921968177009.
+
+Both parts of this puzzle are complete! They provide two gold stars: **

+ 142 - 0
07/input

@@ -0,0 +1,142 @@
+......................................................................S......................................................................
+.............................................................................................................................................
+......................................................................^......................................................................
+.............................................................................................................................................
+.....................................................................^.^.....................................................................
+.............................................................................................................................................
+....................................................................^...^....................................................................
+.............................................................................................................................................
+...................................................................^...^.^...................................................................
+.............................................................................................................................................
+..................................................................^.^...^.^..................................................................
+.............................................................................................................................................
+.................................................................^.^.^.^.^.^.................................................................
+.............................................................................................................................................
+................................................................^.^...^...^.^................................................................
+.............................................................................................................................................
+...............................................................^.^.^...^.^.^.^...............................................................
+.............................................................................................................................................
+..............................................................^...^.^.....^.^.^..............................................................
+.............................................................................................................................................
+.............................................................^...^.^...^.....^.^.............................................................
+.............................................................................................................................................
+............................................................^.^.....^.^.^...^...^............................................................
+.............................................................................................................................................
+...........................................................^.^.^.....^.^.^.^.^.^.^...........................................................
+.............................................................................................................................................
+..........................................................^.^.^.^.^.^.^.......^.^.^..........................................................
+.............................................................................................................................................
+.........................................................^.^.^...^.^.^...^.^.^.^...^.........................................................
+.............................................................................................................................................
+........................................................^.^.^...^...^.^.^.^.^.^.^.^.^........................................................
+.............................................................................................................................................
+.......................................................^.^...^.^.^.^.^...^.^.^.^.....^.......................................................
+.............................................................................................................................................
+......................................................^...^.^...^.^.^.^.^.^...^...^.^.^......................................................
+.............................................................................................................................................
+.....................................................^.^.^.^...^...^.^.^.^.^.^.^.^.....^.....................................................
+.............................................................................................................................................
+....................................................^.....^.^.....^.^...^.^.^...^.^...^.^....................................................
+.............................................................................................................................................
+...................................................^...^.....^.^...^.^.^.^...^.^.^.^...^.^...................................................
+.............................................................................................................................................
+..................................................^.^.^.^...^.......^.....^.^.^.....^...^.^..................................................
+.............................................................................................................................................
+.................................................^.^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.................................................
+.............................................................................................................................................
+................................................^.^...^.^.^...^.^...^...^.^...^.....^.....^.^................................................
+.............................................................................................................................................
+...............................................^.^.^...^...^.^.^.....^.^.^.^.^.^.^.^.^.^.....^...............................................
+.............................................................................................................................................
+..............................................^...^.^.^.^.^.^.^.^.....^.^.^.^.^.^...^.^.^.^...^..............................................
+.............................................................................................................................................
+.............................................^.^.^.^.^.^...^.^.^.....^...^.^.^...^.^.^...^...^.^.............................................
+.............................................................................................................................................
+............................................^...^.^.^.^...^...^...^.^.^.....^.^.........^.^.....^............................................
+.............................................................................................................................................
+...........................................^...^.^.^.^.^.^.^.^...^...^.^.^.^.....^.^.^.^.^...^...^...........................................
+.............................................................................................................................................
+..........................................^...^.^...^...^...^...^.^...^.....^.^.^.^...^.^.^.^.^.^.^..........................................
+.............................................................................................................................................
+.........................................^.........^...^...^...^...^...^.^...^.^.^.......^...^...^.^.........................................
+.............................................................................................................................................
+........................................^.^.^.^.^...^...^.^.^.....^...^.^...^...^...^.....^.^...^.^.^........................................
+.............................................................................................................................................
+.......................................^.....^.^.^...^.^.......^.^...^...^.^.^.^.......^...^.^.^.^.^.^.......................................
+.............................................................................................................................................
+......................................^.^.^.^.^...^...^.^.^.^.^...^.^.^.......^.^.....^.^.^.....^.^.^.^......................................
+.............................................................................................................................................
+.....................................^.^.^.^.^.^.....^.^.^.^.......^...^...^.^.^...^.^.^.^.^.^...^.^.^.^.....................................
+.............................................................................................................................................
+....................................^...^.^.^.^.^.....^...^.....^.^.....^.^.^.^.^.^.^.^...^.....^.^.^.^.^....................................
+.............................................................................................................................................
+...................................^...^...^...^.^...^.^.^.^...^...^.......^.^...^.^.^.^.^...^.^.....^...^...................................
+.............................................................................................................................................
+..................................^.^.^.^.^.^.....^.^.^.^.^...^...^.......^.^...^...^.^.^.^.^.^.^.^...^.^.^..................................
+.............................................................................................................................................
+.................................^.^...^.........^.....^.^.....^.....^.^.^.^.^.^.......^...^.^.^...^.^.^...^.................................
+.............................................................................................................................................
+................................^.^.^.....^.^...^...^.^.....^...^...^...^.....^.^.^.^...^.^.^...^...^.^.^.^.^................................
+.............................................................................................................................................
+...............................^.^.^...^.^...^...^.^.^.^.^.^.^.^.^.^.^.............^.^.....^.^...^...^.^.^.^.^...............................
+.............................................................................................................................................
+..............................^.......^.^.^.^...^.^.^.^.....^.^.^.^.^...^.....^.^...^...^.^.^.^.^.^.^.....^.^.^..............................
+.............................................................................................................................................
+.............................^.....^.^.^.^...^.^.^...^...^.^.^.^.^...^.^.^.^.^.^.^.^...^...^.^...^.^...^.^.^.^.^.............................
+.............................................................................................................................................
+............................^.....^.^.^...^...^...^.^.^.^...^.^.....^.^.^.....^.^...^.^...^.....^...^.^.^.^.....^............................
+.............................................................................................................................................
+...........................^.^...^...^.^.^.^...^...^.^...^.^.^...^.^.^...^.^.^.....^.^.^.^.^.^...^.^.....^.^.^...^...........................
+.............................................................................................................................................
+..........................^...^.....^...^.^.^...^...^.^.^.^.^.^...^.^.^...^.^...^.....^...^.^.^.^.^.^.^.^.^.^.^.^.^..........................
+.............................................................................................................................................
+.........................^.^.....^.^.^.....^.^.^.^.^.^.^.^...^...^.^.....^...^.^.^.....^.^.^...^.^.^...^.^...^.^...^.........................
+.............................................................................................................................................
+........................^.^.^...^.^.^.^.^.^.^.^.^...^...^.^.^.^.^.^...^.^...^.^.^.^.....^.^.^.^.^...^...^...^.^.....^........................
+.............................................................................................................................................
+.......................^.^...^.^.^...^...^...^.^.^.^.....^.^.^...^.....^...^.^.^.^...^...^.^.....^.^.^.^.^.^.^.^...^.^.......................
+.............................................................................................................................................
+......................^.^.^.^.^...^...^.^.^...^.^.^...^...^.^.....^.^.....^.^.^.^...^.^.^.^.^.^...^.^...^...^.^.....^.^......................
+.............................................................................................................................................
+.....................^...^.....^...^...^.^...^.^.^.^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^.^.^.^.^.^.......^...^.....................
+.............................................................................................................................................
+....................^.^.^.....^.^.^...^.^...^.^.^.^.^.....^...^...^.^.....^.^.^.^...^.^...^...^...^.^.^.^.^...^.......^.^....................
+.............................................................................................................................................
+...................^...^.^.^.^.^.^...^.^.^...^...^.^.^.^.^.^.....^.^.......^.....^...^.^...^.^...^...^.^.^.^.^...^.^...^.^...................
+.............................................................................................................................................
+..................^.^.^.^.^.^.^.^.^.....^.........^.^.....^.^.^.^.^.^.^.^...^...^.^...^...^...^...^.......^...^.^.^...^...^..................
+.............................................................................................................................................
+.................^.^.^.^...^.^.^.^.......^.^...^.^.^.^.^...^...^.^...^.....^.^...^.^.^.^.....^.^.^.....^.^.......^.^.^.^.^.^.................
+.............................................................................................................................................
+................^.^.^...........^.......^.^.^.^...^.^.^...^.......^.^...^.....^.^.^...^.^.^.^...^.^.^.....^.^.^.^.^.....^.^.^................
+.............................................................................................................................................
+...............^.^.^.^.^.^.^...^.........^.^.^.^.^.^.^...^.^.....^.....^.^.^.^.^.^.^...^.^.^...^.^.^...^.^.^...^.....^.^.^.^.^...............
+.............................................................................................................................................
+..............^...^.^.^.^.^...^.^.^.^.^.^...^.....^.^.^...^.^...^.^.^.^.^...^.^.^.....^.....^.....^.^.......^.^.....^.^.^.....^..............
+.............................................................................................................................................
+.............^.^...^.^.^.^...^.^.^.^.^...^.^.^.^.^.^.^...^.^.^.^.^.^.^...^.^.^...^.^.^.^.^.^.^.........^.^.....^.^.....^.^.^...^.............
+.............................................................................................................................................
+............^...^.^.^.^...^.......^.^...^.^.^.^...^.^.....^.^.^.^.....^.^.^.....^.^.^.^...^.^.^.....^.....^.^...^.^.^.^.^...^...^............
+.............................................................................................................................................
+...........^.^...^...^.^.^...^.^.^.......^.^.^.......^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^...^...^.......^.^...^...^.^...^.^.^.^.^.^.^...........
+.............................................................................................................................................
+..........^...^...^...^.^.^.^...^.....^.^...^.....^.^.^.^...^.^...^.^...^.^.^.^...^.^.^.......^...^.^.....^...^.^.^.^...^.^.^.^.^.^..........
+.............................................................................................................................................
+.........^.^.^...^.^.^.^...^...^.^...^.^.^.^.^...^...^.^.^...^...^.^.^.^.^.....^.^.^.^.^.^.^.^.....^.^.^.^...^.^.^.^.^.^.^...^.^.^.^.........
+.............................................................................................................................................
+........^.^.^.^...^.....^.^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^...^.^.^.^...^.^.^.^...^.^.....^...^...^.^.^...^...^.....^.^.^.^.^.^.^.^........
+.............................................................................................................................................
+.......^.^.....^.^.^.^...^.^.......^.........^.^.^.^.^.^.^.^.^...^...^.^.^.^.^.^...^.^.^.^.^...^.^...^...^.^.^.^.^.^.....^.^.^.^.^.^.^.......
+.............................................................................................................................................
+......^...^.^.^.^.^...^.^.^.....^.^.........^.....^.^.^...^...^.^.^...^.^.^.^...^.....^.^.^.^.^.^.^.......^...^.....^.^.^.^.^.....^.^.^......
+.............................................................................................................................................
+.....^...^.^...^.^.....^.^.^.^.^.....^.^.^.^.^.^.^.^.......^.^...^.^.^.^.^.....^.^.^...^...^.^.^.^...^...^.^.^...^.......^.^.^...^.^.^.^.....
+.............................................................................................................................................
+....^.^.^.^.^.^.....^.^...^...^.^.^.^...^...^.^...^...^.....^.^.^.^.^.^.....^.......^.^.^.^.^.^.^.^...^.^.......^...^...^.^.^.^...^.^.^.^....
+.............................................................................................................................................
+...^.^.^...^.^.^.^.^...^.^.^...^.^.......^.^.^.^...^.^.^.^.^.^.^.^.^.^.......^.^.^.^.^.^.^.....^.........^.......^.^...^.^.^.^.^.^.^.^.^.^...
+.............................................................................................................................................
+..^.^.^...^.^.^.^...^...^.^...^...^...^.^.^.^.....^.^...^.....^...^.^...^.^.^.^.^...^...^...^.^.^.^.^.^...^...^.^.^.....^.^.^.^.....^.^.^.^..
+.............................................................................................................................................
+.^.....^.^.^.^.^.^.......^.^.....^.^.^.^.^.^...^.......^.^.....^.^.^...^.^...^.^.....^.^...^.^...^.^...........^.^.^.^...^.^.....^...^.....^.
+.............................................................................................................................................

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä