Compare commits
194 Commits
70189f4295
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 68d1803e8f | |||
| a39f261ba9 | |||
| 0c77a62ab4 | |||
| 60ee8c0307 | |||
| dfe08db759 | |||
| 081f4ea295 | |||
| 34be9e0847 | |||
| 6ea67eac0c | |||
| bb366fbe17 | |||
| 681b7bae16 | |||
| c8ded5c42d | |||
| b37f1ec366 | |||
| 40e2e329e0 | |||
| fa5bf2e85b | |||
| ea1b57b17e | |||
| 174671e6f5 | |||
| 40bcf3052f | |||
| 1e634b7ee9 | |||
| 6e625dcf06 | |||
| 141216920d | |||
| b685e81c58 | |||
| 1adc10ea88 | |||
| db7c31cb39 | |||
| 1ad1da1309 | |||
| 228392fe83 | |||
| 4837cbf290 | |||
| 8503cee52b | |||
| b16b052115 | |||
| bc76283458 | |||
| 9d2a087801 | |||
| 0bd3b6dc69 | |||
| da81f67b7f | |||
| caa7da5a7d | |||
| eebe707ef9 | |||
| 8960dcb072 | |||
| 99eb0fbaa8 | |||
| a739425209 | |||
| af306eb73c | |||
| cdbc3f3b16 | |||
| ed445a8be7 | |||
| 8bbf6662b1 | |||
| b60c971d50 | |||
| 5dab84eeb3 | |||
| 2283b62503 | |||
| ccf50c12c9 | |||
| f25d7511aa | |||
| 243ccf3da9 | |||
| aedf9cd06d | |||
| c053c905ad | |||
| 7dff40745c | |||
| 0e8563b216 | |||
| 6720bbabc1 | |||
| 6035989da4 | |||
| dc16893777 | |||
| fdfad57cee | |||
| 9cf00b290f | |||
| 47072a4982 | |||
| 62748990cb | |||
| 42c69d44e5 | |||
| c6eb51a395 | |||
| 6777696df6 | |||
| a8e244f9ab | |||
| 911f9bfe7b | |||
| 24a65d3752 | |||
| 0bd0ec5f1e | |||
| 0ad418ed1f | |||
| ec48231aae | |||
| 5631822e73 | |||
| 630d32ba11 | |||
| 22500b7076 | |||
| 9d2d27b257 | |||
| 879509c7ba | |||
| a0805111b4 | |||
| b0cd4f37b1 | |||
| 8999f45aad | |||
| 838803c53e | |||
| c4063b5390 | |||
| 1c5bd1e448 | |||
| 6d9b2092bd | |||
| 9b218d763d | |||
| 10c5b0fbc6 | |||
| 503eec14c6 | |||
| deac7f97bb | |||
| a3fb7ac353 | |||
| 8f4e11215f | |||
| 78b0032578 | |||
| 536f6f52ff | |||
| 96ca1afb9b | |||
| 780263e78b | |||
| 49ff399f97 | |||
| 27d14b1711 | |||
| 89b2ec90f2 | |||
| f8a2e839b9 | |||
| 94ecbd27bf | |||
| b44a592808 | |||
| b00d2f13a3 | |||
| b26f1531f5 | |||
| 7de5fa7794 | |||
| 66e91e05a4 | |||
| a20bb8ab09 | |||
| c5fcc8b353 | |||
| 0357f263cc | |||
| 8488debc25 | |||
| 00dd40428b | |||
| 3d35a57723 | |||
| 0d40e32a39 | |||
| fd34db28cb | |||
| 65edd3258e | |||
| e914bc6492 | |||
| 0eed8089b6 | |||
| 1048d20cef | |||
| 00ccbaf0d0 | |||
| 51f733127c | |||
| d96febeae3 | |||
| 79b31dad19 | |||
| d5146e7e3e | |||
| d2d6f280b3 | |||
| 79d9f8d7cc | |||
| bcc4fc3432 | |||
| cc2d7d1a3d | |||
| 83f6db5e33 | |||
| 12b54d51d2 | |||
| 89c154de37 | |||
| ea037debed | |||
| a0a0c43690 | |||
| bce49d51f7 | |||
| 77a352aa2e | |||
| fd6db0cc65 | |||
| 2b548fa1ef | |||
| e0465b9b8d | |||
| 0523610080 | |||
| e341c12763 | |||
| 6cff0b7931 | |||
| f5bfe1e578 | |||
| 0fbe2956c3 | |||
| 9280430285 | |||
| b91e34bc8e | |||
| 9f10576a0c | |||
| 8a9f4cb506 | |||
| d3098c0d9c | |||
| 8be18b6b38 | |||
| b39b8c885b | |||
| 56901ca553 | |||
| e3c9da9621 | |||
| 070bd8be9a | |||
| c1ba2ca02b | |||
| 146b63706a | |||
| 1421062a75 | |||
| b9928789df | |||
| b7aafeec52 | |||
| a935e35d82 | |||
| e2c2d0df71 | |||
| e3a47b0e16 | |||
| 86370f27c8 | |||
| c61e573e14 | |||
| d16f70cf00 | |||
| 6f7561213e | |||
| 94b15548cf | |||
| 4e9e2b399c | |||
| 035e56bf53 | |||
| 61cf84aa8a | |||
| 5513ae8386 | |||
| f1730c30cb | |||
| ce7d42621f | |||
| 8eafb1f7c5 | |||
| 81be03e8ee | |||
| d662f693b8 | |||
| b0d16b1bac | |||
| 3eb9120dc3 | |||
| 85ae14acbf | |||
| b7a98033c6 | |||
| 8f265eae05 | |||
| fe20a0b654 | |||
| aa80e4eb8e | |||
| 0d029f2861 | |||
| edf94432f4 | |||
| 33552358f8 | |||
| 45d3e93a93 | |||
| 707f34e706 | |||
| a05450c73a | |||
| 6b95f5ced0 | |||
| 9caee546f0 | |||
| 8e831d85fe | |||
| b8ab5fae7b | |||
| 3262d1cbb8 | |||
| 766ee97dd3 | |||
| c41c96e628 | |||
| fb46fceb75 | |||
| c9fe217e4b | |||
| d88d64edd4 | |||
| e81194721c | |||
| a680e0ba48 | |||
| 345defec4d | |||
| 3756279dab |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
bin/aoc
|
||||
*.test
|
||||
|
||||
28
README.md
28
README.md
@@ -13,35 +13,36 @@ Ultimately, my goal is to complete all the years of Advent of Code here.
|
||||
## Requirements
|
||||
|
||||
- Go 1.25
|
||||
- Puzzle input
|
||||
- Puzzle input (or your session cookie to have it downloaded automatically)
|
||||
|
||||
## Repository Structure
|
||||
|
||||
```
|
||||
├── cmd/
|
||||
│ └── aoc/
|
||||
│ └── main.go # CLI entry point that runs solutions
|
||||
│ └── main.go # CLI entry point for running puzzles
|
||||
└── internal/
|
||||
├── 2020/
|
||||
│ ├── register.go # Aggregates import for main.go
|
||||
│ ├── DayOne/
|
||||
│ │ ├── code.go # Go solution for Day 1 (2020)
|
||||
│ │ └── code_test.go # Unit tests for Day 1
|
||||
│ └── ...
|
||||
│ │ ├── code.go # Day 1 solution for 2020
|
||||
│ │ └── code_test.go # Unit tests for Day 1 solution
|
||||
│ └── ... # Other days for 2020
|
||||
├── 2021/
|
||||
│ └── ... # Additional years and days
|
||||
│ └── ... # 2021 days code and tests
|
||||
├── registry/
|
||||
│ └── registry.go # Central registry for day runners
|
||||
│ └── registry.go # Central map/registry for finding and running days
|
||||
└── data/
|
||||
├── 2020/
|
||||
│ ├── DayOne/
|
||||
│ │ └── input.txt # Puzzle input for Day 1 (2020)
|
||||
│ └── ...
|
||||
└── ...
|
||||
│ └── ... # Inputs for other days
|
||||
└── ... # Inputs for other years
|
||||
```
|
||||
|
||||
Each day's solution is organized into its own folder, named according to the day number (e.g., `DayOne`, `DayTwo`). Inside each folder, you'll find a `code.go` file with the Go implementation of the solution and a `code_test.go` file containing corresponding tests. The input data for each puzzle is located in the `internal/data` directory, mirroring the code structure for easy access.
|
||||
|
||||
To connect each solution to the CLI, the repository uses a central registry located in `internal/registry/registry.go`. This registry is essentially a map linking a day key (combining year and day number) to assign a "day runner" which is a struct that specifies the `ParseInput`, `PartOne` and `PartTwo` functions of the day's problem.
|
||||
Each year has its own `register.go` file to aggregate imports. To connect each solution to the CLI, the repository uses a central registry located in `internal/registry/registry.go`. This registry is essentially a map linking a day key (combining year and day number) to assign a "day runner" which is a struct that specifies the `ParseInput`, `PartOne` and `PartTwo` functions of the day's problem.
|
||||
|
||||
When running a solution, the CLI (`cmd/aoc/main.go`) looks up the appropriate runner from the registry based on your command-line input, uses the parsing function to load the input data, and then runs the desired part (or both parts) using the registered solution functions.
|
||||
|
||||
@@ -51,16 +52,15 @@ When running a solution, the CLI (`cmd/aoc/main.go`) looks up the appropriate ru
|
||||
make 2020D1
|
||||
```
|
||||
|
||||
This will create the following files:
|
||||
If the `ADVENTOFCODE_SESSION` environment variable is set with your Advent of Code session cookie, the input will be downloaded from the AOC website right into the corresponding `internal/data` directory, else it will create an empty `input.txt` file.
|
||||
|
||||
Then, it will create the following files:
|
||||
|
||||
```bash
|
||||
internal/2020/DayOne/code.go
|
||||
internal/2020/DayOne/code_test.go
|
||||
internal/data/2020/DayOne/input.txt
|
||||
```
|
||||
|
||||
If the `ADVENTOFCODE_SESSION` environment variable is set with your Advent of Code session cookie, the input will be downloaded from the AOC website right into the corresponding `internal/data` directory, else it will create an empty `input.txt` file.
|
||||
|
||||
### Handling string answers
|
||||
|
||||
Occasionally, a puzzle requires a string as the answer. However, my solution framework expects PartOne/PartTwo functions to return integers.
|
||||
|
||||
@@ -1,46 +1,21 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
|
||||
// 2015
|
||||
_ "advent-of-code/internal/2015/DayFive"
|
||||
_ "advent-of-code/internal/2015/DayFour"
|
||||
_ "advent-of-code/internal/2015/DayOne"
|
||||
_ "advent-of-code/internal/2015/DaySix"
|
||||
_ "advent-of-code/internal/2015/DayThree"
|
||||
_ "advent-of-code/internal/2015/DayTwo"
|
||||
"advent-of-code/internal/registry"
|
||||
|
||||
// 2018
|
||||
_ "advent-of-code/internal/2018/DayOne"
|
||||
_ "advent-of-code/internal/2018/DayThree"
|
||||
_ "advent-of-code/internal/2018/DayTwo"
|
||||
|
||||
// 2020
|
||||
_ "advent-of-code/internal/2020/DayEight"
|
||||
_ "advent-of-code/internal/2020/DayFour"
|
||||
_ "advent-of-code/internal/2020/DayOne"
|
||||
_ "advent-of-code/internal/2020/DaySeven"
|
||||
_ "advent-of-code/internal/2020/DaySix"
|
||||
_ "advent-of-code/internal/2020/DayThree"
|
||||
_ "advent-of-code/internal/2020/DayTwo"
|
||||
|
||||
// 2021
|
||||
_ "advent-of-code/internal/2021/DayOne"
|
||||
_ "advent-of-code/internal/2021/DayThree"
|
||||
_ "advent-of-code/internal/2021/DayTwo"
|
||||
|
||||
// 2022
|
||||
_ "advent-of-code/internal/2022/DayOne"
|
||||
_ "advent-of-code/internal/2022/DayTwo"
|
||||
|
||||
// 2025
|
||||
_ "advent-of-code/internal/2025/DayOne"
|
||||
_ "advent-of-code/internal/2015"
|
||||
_ "advent-of-code/internal/2016"
|
||||
_ "advent-of-code/internal/2018"
|
||||
_ "advent-of-code/internal/2020"
|
||||
_ "advent-of-code/internal/2021"
|
||||
_ "advent-of-code/internal/2022"
|
||||
_ "advent-of-code/internal/2025"
|
||||
)
|
||||
|
||||
func capitalize(day string) string {
|
||||
|
||||
61
internal/2015/DayEight/code.go
Normal file
61
internal/2015/DayEight/code.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package dayeight
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2015D8", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
result := 0
|
||||
for _, line := range data {
|
||||
codeLength := len(line)
|
||||
memoryLength := 0
|
||||
for idx := 1; idx < len(line)-1; idx++ {
|
||||
if line[idx] == '\\' && idx+1 < len(line)-1 {
|
||||
switch line[idx+1] {
|
||||
case '\\', '"':
|
||||
memoryLength++
|
||||
idx++
|
||||
case 'x':
|
||||
if idx+3 < len(line)-1 {
|
||||
memoryLength++
|
||||
idx += 3
|
||||
}
|
||||
}
|
||||
} else {
|
||||
memoryLength++
|
||||
}
|
||||
}
|
||||
result += codeLength - memoryLength
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
result := 0
|
||||
for _, line := range data {
|
||||
originalLength := len(line)
|
||||
encodedLength := 2
|
||||
for _, char := range line {
|
||||
switch char {
|
||||
case '\\', '"':
|
||||
encodedLength += 2
|
||||
default:
|
||||
encodedLength++
|
||||
}
|
||||
}
|
||||
result += encodedLength - originalLength
|
||||
}
|
||||
return result
|
||||
}
|
||||
26
internal/2015/DayEight/code_test.go
Normal file
26
internal/2015/DayEight/code_test.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package dayeight
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
`""`,
|
||||
`"abc"`,
|
||||
`"aaa\"aaa"`,
|
||||
`"\x27"`,
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 12
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 19
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
97
internal/2015/DayEleven/code.go
Normal file
97
internal/2015/DayEleven/code.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package dayeleven
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2015D11", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return string(content)
|
||||
}
|
||||
|
||||
func findNextValidPassword(data string) string {
|
||||
bytes := []byte(data)
|
||||
|
||||
increment := func() {
|
||||
for idx := len(bytes) - 1; idx >= 0; idx-- {
|
||||
if bytes[idx] == 'z' {
|
||||
bytes[idx] = 'a'
|
||||
} else {
|
||||
bytes[idx]++
|
||||
if bytes[idx] == 'i' || bytes[idx] == 'o' || bytes[idx] == 'l' {
|
||||
bytes[idx]++
|
||||
}
|
||||
for j := idx + 1; j < len(bytes); j++ {
|
||||
bytes[j] = 'a'
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
increment()
|
||||
|
||||
for {
|
||||
forbiddenPosition := -1
|
||||
for idx := range bytes {
|
||||
if bytes[idx] == 'i' || bytes[idx] == 'o' || bytes[idx] == 'l' {
|
||||
forbiddenPosition = idx
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if forbiddenPosition != -1 {
|
||||
bytes[forbiddenPosition]++
|
||||
if bytes[forbiddenPosition] == 'i' || bytes[forbiddenPosition] == 'o' || bytes[forbiddenPosition] == 'l' {
|
||||
bytes[forbiddenPosition]++
|
||||
}
|
||||
for j := forbiddenPosition + 1; j < len(bytes); j++ {
|
||||
bytes[j] = 'a'
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
hasStraight := false
|
||||
for idx := 0; idx < len(bytes)-2; idx++ {
|
||||
if bytes[idx+1] == bytes[idx]+1 && bytes[idx+2] == bytes[idx]+2 {
|
||||
hasStraight = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
pairChars := make(map[byte]bool)
|
||||
for idx := 0; idx < len(bytes)-1; idx++ {
|
||||
if bytes[idx] == bytes[idx+1] {
|
||||
pairChars[bytes[idx]] = true
|
||||
idx++
|
||||
}
|
||||
}
|
||||
|
||||
if hasStraight && len(pairChars) >= 2 {
|
||||
break
|
||||
}
|
||||
|
||||
increment()
|
||||
}
|
||||
|
||||
return string(bytes)
|
||||
}
|
||||
|
||||
func PartOne(data string) int {
|
||||
result := findNextValidPassword(data)
|
||||
println(result)
|
||||
return 0
|
||||
}
|
||||
|
||||
func PartTwo(data string) int {
|
||||
firstPassword := findNextValidPassword(data)
|
||||
secondPassword := findNextValidPassword(firstPassword)
|
||||
println(secondPassword)
|
||||
return 0
|
||||
}
|
||||
108
internal/2015/DayFourteen/code.go
Normal file
108
internal/2015/DayFourteen/code.go
Normal file
@@ -0,0 +1,108 @@
|
||||
package dayfourteen
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var reindeerPattern = regexp.MustCompile(`\w+ can fly (\d+) km/s for (\d+) seconds, but then must rest for (\d+) seconds\.`)
|
||||
|
||||
const raceTime = 2503
|
||||
|
||||
type Reindeer struct {
|
||||
Speed int
|
||||
FlyTime int
|
||||
RestTime int
|
||||
Points int
|
||||
}
|
||||
|
||||
func init() {
|
||||
registry.Register("2015D14", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func parseReindeer(line string) Reindeer {
|
||||
matches := reindeerPattern.FindStringSubmatch(line)
|
||||
speed, _ := strconv.Atoi(matches[1])
|
||||
flyTime, _ := strconv.Atoi(matches[2])
|
||||
restTime, _ := strconv.Atoi(matches[3])
|
||||
return Reindeer{Speed: speed, FlyTime: flyTime, RestTime: restTime}
|
||||
}
|
||||
|
||||
func parseReindeers(data []string) []Reindeer {
|
||||
reindeers := make([]Reindeer, 0, len(data))
|
||||
for _, line := range data {
|
||||
reindeers = append(reindeers, parseReindeer(line))
|
||||
}
|
||||
return reindeers
|
||||
}
|
||||
|
||||
func (reindeer Reindeer) distanceAtTime(time int) int {
|
||||
cycleTime := reindeer.FlyTime + reindeer.RestTime
|
||||
fullCycles := time / cycleTime
|
||||
distance := fullCycles * reindeer.Speed * reindeer.FlyTime
|
||||
remainingTime := time % cycleTime
|
||||
distance += reindeer.Speed * min(remainingTime, reindeer.FlyTime)
|
||||
return distance
|
||||
}
|
||||
|
||||
func calculateMaxDistance(data []string, time int) int {
|
||||
reindeers := parseReindeers(data)
|
||||
maxDistance := 0
|
||||
|
||||
for _, reindeer := range reindeers {
|
||||
distance := reindeer.distanceAtTime(time)
|
||||
if distance > maxDistance {
|
||||
maxDistance = distance
|
||||
}
|
||||
}
|
||||
|
||||
return maxDistance
|
||||
}
|
||||
|
||||
func calculateMaxPoints(data []string, time int) int {
|
||||
reindeers := parseReindeers(data)
|
||||
|
||||
for second := 1; second <= time; second++ {
|
||||
maxDistance := 0
|
||||
distances := make([]int, len(reindeers))
|
||||
|
||||
for idx := range reindeers {
|
||||
distance := reindeers[idx].distanceAtTime(second)
|
||||
distances[idx] = distance
|
||||
if distance > maxDistance {
|
||||
maxDistance = distance
|
||||
}
|
||||
}
|
||||
|
||||
for idx := range reindeers {
|
||||
if distances[idx] == maxDistance {
|
||||
reindeers[idx].Points++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
maxPoints := 0
|
||||
for idx := range reindeers {
|
||||
if reindeers[idx].Points > maxPoints {
|
||||
maxPoints = reindeers[idx].Points
|
||||
}
|
||||
}
|
||||
|
||||
return maxPoints
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
return calculateMaxDistance(data, raceTime)
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
return calculateMaxPoints(data, raceTime)
|
||||
}
|
||||
24
internal/2015/DayFourteen/code_test.go
Normal file
24
internal/2015/DayFourteen/code_test.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package dayfourteen
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"Comet can fly 14 km/s for 10 seconds, but then must rest for 127 seconds.",
|
||||
"Dancer can fly 16 km/s for 11 seconds, but then must rest for 162 seconds.",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 1120
|
||||
got := calculateMaxDistance(testInput, 1000)
|
||||
if got != expected {
|
||||
t.Errorf("calculateMaxDistance(testInput, 1000) = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 689
|
||||
got := calculateMaxPoints(testInput, 1000)
|
||||
if got != expected {
|
||||
t.Errorf("calculateMaxPoints(testInput, 1000) = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
106
internal/2015/DayNine/code.go
Normal file
106
internal/2015/DayNine/code.go
Normal file
@@ -0,0 +1,106 @@
|
||||
package daynine
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2015D9", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func buildDistanceMap(data []string) map[string]map[string]int {
|
||||
distances := make(map[string]map[string]int)
|
||||
|
||||
for _, line := range data {
|
||||
parts := strings.Split(line, " = ")
|
||||
distance, _ := strconv.Atoi(parts[1])
|
||||
route := strings.Split(parts[0], " to ")
|
||||
from, to := route[0], route[1]
|
||||
|
||||
if distances[from] == nil {
|
||||
distances[from] = make(map[string]int)
|
||||
}
|
||||
if distances[to] == nil {
|
||||
distances[to] = make(map[string]int)
|
||||
}
|
||||
|
||||
distances[from][to] = distance
|
||||
distances[to][from] = distance
|
||||
}
|
||||
|
||||
return distances
|
||||
}
|
||||
|
||||
func getCities(distances map[string]map[string]int) []string {
|
||||
cities := make([]string, 0, len(distances))
|
||||
for city := range distances {
|
||||
cities = append(cities, city)
|
||||
}
|
||||
return cities
|
||||
}
|
||||
|
||||
func generatePermutations(cities []string) [][]string {
|
||||
if len(cities) == 0 {
|
||||
return [][]string{{}}
|
||||
}
|
||||
var result [][]string
|
||||
for idx, city := range cities {
|
||||
remaining := make([]string, len(cities)-1)
|
||||
copy(remaining[:idx], cities[:idx])
|
||||
copy(remaining[idx:], cities[idx+1:])
|
||||
|
||||
for _, permutations := range generatePermutations(remaining) {
|
||||
result = append(result, append([]string{city}, permutations...))
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func calculateRouteDistance(route []string, distances map[string]map[string]int) int {
|
||||
total := 0
|
||||
for idx := 0; idx < len(route)-1; idx++ {
|
||||
total += distances[route[idx]][route[idx+1]]
|
||||
}
|
||||
return total
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
distances := buildDistanceMap(data)
|
||||
cities := getCities(distances)
|
||||
permutations := generatePermutations(cities)
|
||||
|
||||
minimalDistance := int(^uint(0) >> 1)
|
||||
for _, route := range permutations {
|
||||
total := calculateRouteDistance(route, distances)
|
||||
if total < minimalDistance {
|
||||
minimalDistance = total
|
||||
}
|
||||
}
|
||||
|
||||
return minimalDistance
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
distances := buildDistanceMap(data)
|
||||
cities := getCities(distances)
|
||||
permutations := generatePermutations(cities)
|
||||
|
||||
maximalDistance := 0
|
||||
for _, route := range permutations {
|
||||
total := calculateRouteDistance(route, distances)
|
||||
if total > maximalDistance {
|
||||
maximalDistance = total
|
||||
}
|
||||
}
|
||||
|
||||
return maximalDistance
|
||||
}
|
||||
25
internal/2015/DayNine/code_test.go
Normal file
25
internal/2015/DayNine/code_test.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package daynine
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"London to Dublin = 464",
|
||||
"London to Belfast = 518",
|
||||
"Dublin to Belfast = 141",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 605
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 982
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
77
internal/2015/DaySeven/code.go
Normal file
77
internal/2015/DaySeven/code.go
Normal file
@@ -0,0 +1,77 @@
|
||||
package dayseven
|
||||
|
||||
import (
|
||||
"maps"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2015D7", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) map[string]string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
instructions := make(map[string]string)
|
||||
for line := range strings.SplitSeq(string(content), "\n") {
|
||||
if parts := strings.Split(line, " -> "); len(parts) == 2 {
|
||||
instructions[parts[1]] = parts[0]
|
||||
}
|
||||
}
|
||||
return instructions
|
||||
}
|
||||
|
||||
func evaluateWire(wire string, instructions map[string]string) uint16 {
|
||||
cache := make(map[string]uint16)
|
||||
var evaluate func(string) uint16
|
||||
evaluate = func(wire string) uint16 {
|
||||
if value, ok := cache[wire]; ok {
|
||||
return value
|
||||
}
|
||||
if num, err := strconv.Atoi(wire); err == nil {
|
||||
return uint16(num)
|
||||
}
|
||||
expression, exists := instructions[wire]
|
||||
if !exists {
|
||||
return 0
|
||||
}
|
||||
parts := strings.Fields(expression)
|
||||
var result uint16
|
||||
switch {
|
||||
case len(parts) == 1:
|
||||
result = evaluate(parts[0])
|
||||
case parts[0] == "NOT":
|
||||
result = ^evaluate(parts[1])
|
||||
default:
|
||||
left, right := evaluate(parts[0]), evaluate(parts[2])
|
||||
switch parts[1] {
|
||||
case "AND":
|
||||
result = left & right
|
||||
case "OR":
|
||||
result = left | right
|
||||
case "LSHIFT":
|
||||
result = left << right
|
||||
case "RSHIFT":
|
||||
result = left >> right
|
||||
}
|
||||
}
|
||||
cache[wire] = result
|
||||
return result
|
||||
}
|
||||
return evaluate(wire)
|
||||
}
|
||||
|
||||
func PartOne(data map[string]string) int {
|
||||
return int(evaluateWire("a", data))
|
||||
}
|
||||
|
||||
func PartTwo(data map[string]string) int {
|
||||
signalA := PartOne(data)
|
||||
instructionsCopy := make(map[string]string, len(data))
|
||||
maps.Copy(instructionsCopy, data)
|
||||
instructionsCopy["b"] = strconv.Itoa(signalA)
|
||||
return int(evaluateWire("a", instructionsCopy))
|
||||
}
|
||||
50
internal/2015/DaySeven/code_test.go
Normal file
50
internal/2015/DaySeven/code_test.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package dayseven
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
var testInput = map[string]string{
|
||||
"x": "123",
|
||||
"y": "456",
|
||||
"d": "x AND y",
|
||||
"e": "x OR y",
|
||||
"f": "x LSHIFT 2",
|
||||
"g": "y RSHIFT 2",
|
||||
"h": "NOT x",
|
||||
"i": "NOT y",
|
||||
"a": "d",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 72
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
instructions := map[string]string{
|
||||
"x": "10",
|
||||
"y": "20",
|
||||
"z": "x AND y",
|
||||
"b": "z",
|
||||
"w": "b LSHIFT 1",
|
||||
"v": "NOT b",
|
||||
"u": "w OR v",
|
||||
"a": "u",
|
||||
}
|
||||
|
||||
partOneResult := PartOne(instructions)
|
||||
bValue := uint16(partOneResult)
|
||||
w := bValue << 1
|
||||
v := ^bValue
|
||||
u := w | v
|
||||
expected := int(u)
|
||||
|
||||
got := PartTwo(instructions)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d (PartOne result: %d)", got, expected, partOneResult)
|
||||
}
|
||||
}
|
||||
@@ -7,10 +7,46 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
type instruction struct {
|
||||
operation string
|
||||
x1, y1 int
|
||||
x2, y2 int
|
||||
}
|
||||
|
||||
func init() {
|
||||
registry.Register("2015D6", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func parseInstruction(line string) (instruction, bool) {
|
||||
var op string
|
||||
var remaining string
|
||||
|
||||
switch {
|
||||
case strings.HasPrefix(line, "turn on "):
|
||||
op = "on"
|
||||
remaining = strings.TrimPrefix(line, "turn on ")
|
||||
case strings.HasPrefix(line, "turn off "):
|
||||
op = "off"
|
||||
remaining = strings.TrimPrefix(line, "turn off ")
|
||||
case strings.HasPrefix(line, "toggle "):
|
||||
op = "toggle"
|
||||
remaining = strings.TrimPrefix(line, "toggle ")
|
||||
default:
|
||||
return instruction{}, false
|
||||
}
|
||||
|
||||
parts := strings.Split(remaining, " through ")
|
||||
firstCoordinates := strings.Split(parts[0], ",")
|
||||
secondCoordinates := strings.Split(parts[1], ",")
|
||||
|
||||
x1, _ := strconv.Atoi(firstCoordinates[0])
|
||||
y1, _ := strconv.Atoi(firstCoordinates[1])
|
||||
x2, _ := strconv.Atoi(secondCoordinates[0])
|
||||
y2, _ := strconv.Atoi(secondCoordinates[1])
|
||||
|
||||
return instruction{operation: op, x1: x1, y1: y1, x2: x2, y2: y2}, true
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(strings.TrimSpace(string(content)), "\n")
|
||||
@@ -20,36 +56,15 @@ func PartOne(data []string) int {
|
||||
grid := make([]bool, 1000*1000)
|
||||
|
||||
for _, line := range data {
|
||||
var op string
|
||||
var x1, y1, x2, y2 int
|
||||
|
||||
switch {
|
||||
case strings.HasPrefix(line, "turn on "):
|
||||
op = "on"
|
||||
line = strings.TrimPrefix(line, "turn on ")
|
||||
case strings.HasPrefix(line, "turn off "):
|
||||
op = "off"
|
||||
line = strings.TrimPrefix(line, "turn off ")
|
||||
case strings.HasPrefix(line, "toggle "):
|
||||
op = "toggle"
|
||||
line = strings.TrimPrefix(line, "toggle ")
|
||||
default:
|
||||
instruction, ok := parseInstruction(line)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
parts := strings.Split(line, " through ")
|
||||
firstCoordinates := strings.Split(parts[0], ",")
|
||||
secondCoordinates := strings.Split(parts[1], ",")
|
||||
|
||||
x1, _ = strconv.Atoi(firstCoordinates[0])
|
||||
y1, _ = strconv.Atoi(firstCoordinates[1])
|
||||
x2, _ = strconv.Atoi(secondCoordinates[0])
|
||||
y2, _ = strconv.Atoi(secondCoordinates[1])
|
||||
|
||||
for y := y1; y <= y2; y++ {
|
||||
for x := x1; x <= x2; x++ {
|
||||
for y := instruction.y1; y <= instruction.y2; y++ {
|
||||
for x := instruction.x1; x <= instruction.x2; x++ {
|
||||
idx := y*1000 + x
|
||||
switch op {
|
||||
switch instruction.operation {
|
||||
case "on":
|
||||
grid[idx] = true
|
||||
case "off":
|
||||
@@ -71,5 +86,34 @@ func PartOne(data []string) int {
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
return 0
|
||||
grid := make([]int, 1000*1000)
|
||||
|
||||
for _, line := range data {
|
||||
instruction, ok := parseInstruction(line)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
for y := instruction.y1; y <= instruction.y2; y++ {
|
||||
for x := instruction.x1; x <= instruction.x2; x++ {
|
||||
idx := y*1000 + x
|
||||
switch instruction.operation {
|
||||
case "on":
|
||||
grid[idx]++
|
||||
case "off":
|
||||
if grid[idx] > 0 {
|
||||
grid[idx]--
|
||||
}
|
||||
case "toggle":
|
||||
grid[idx] += 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
total := 0
|
||||
for _, brightness := range grid {
|
||||
total += brightness
|
||||
}
|
||||
return total
|
||||
}
|
||||
|
||||
@@ -15,3 +15,11 @@ func TestPartOne(t *testing.T) {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 1001996
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
45
internal/2015/DayTen/code.go
Normal file
45
internal/2015/DayTen/code.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package dayten
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2015D10", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return string(content)
|
||||
}
|
||||
|
||||
func applyLookAndSay(data string, iterations int) int {
|
||||
for range iterations {
|
||||
var result strings.Builder
|
||||
idx := 0
|
||||
for idx < len(data) {
|
||||
digit := data[idx]
|
||||
count := 1
|
||||
for idx+count < len(data) && data[idx+count] == digit {
|
||||
count++
|
||||
}
|
||||
result.WriteString(strconv.Itoa(count))
|
||||
result.WriteByte(digit)
|
||||
idx += count
|
||||
}
|
||||
data = result.String()
|
||||
}
|
||||
return len(data)
|
||||
}
|
||||
|
||||
func PartOne(data string) int {
|
||||
return applyLookAndSay(data, 40)
|
||||
}
|
||||
|
||||
func PartTwo(data string) int {
|
||||
return applyLookAndSay(data, 50)
|
||||
}
|
||||
141
internal/2015/DayThirteen/code.go
Normal file
141
internal/2015/DayThirteen/code.go
Normal file
@@ -0,0 +1,141 @@
|
||||
package daythirteen
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"math"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var inputPattern = regexp.MustCompile(`(\w+) would (gain|lose) (\d+) happiness units by sitting next to (\w+)\.?`)
|
||||
|
||||
func init() {
|
||||
registry.Register("2015D13", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func buildHappinessMap(data []string) map[string]map[string]int {
|
||||
happinessMap := make(map[string]map[string]int)
|
||||
|
||||
for _, line := range data {
|
||||
matches := inputPattern.FindStringSubmatch(line)
|
||||
person := matches[1]
|
||||
operation := matches[2]
|
||||
value, _ := strconv.Atoi(matches[3])
|
||||
neighbor := matches[4]
|
||||
|
||||
if happinessMap[person] == nil {
|
||||
happinessMap[person] = make(map[string]int)
|
||||
}
|
||||
|
||||
if operation == "gain" {
|
||||
happinessMap[person][neighbor] = value
|
||||
} else {
|
||||
happinessMap[person][neighbor] = -value
|
||||
}
|
||||
}
|
||||
|
||||
return happinessMap
|
||||
}
|
||||
|
||||
func getAllPeople(happinessMap map[string]map[string]int) []string {
|
||||
people := make([]string, 0, len(happinessMap))
|
||||
for person := range happinessMap {
|
||||
people = append(people, person)
|
||||
}
|
||||
return people
|
||||
}
|
||||
|
||||
func generatePermutations(items []string) [][]string {
|
||||
if len(items) == 0 {
|
||||
return [][]string{{}}
|
||||
}
|
||||
|
||||
var result [][]string
|
||||
for idx, item := range items {
|
||||
remaining := make([]string, len(items)-1)
|
||||
copy(remaining[:idx], items[:idx])
|
||||
copy(remaining[idx:], items[idx+1:])
|
||||
|
||||
for _, permutation := range generatePermutations(remaining) {
|
||||
result = append(result, append([]string{item}, permutation...))
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func calculateTotalHappiness(arrangement []string, happinessMap map[string]map[string]int) int {
|
||||
totalHappiness := 0
|
||||
arrangementLength := len(arrangement)
|
||||
|
||||
for idx := range arrangementLength {
|
||||
currentPerson := arrangement[idx]
|
||||
leftNeighbor := arrangement[(idx-1+arrangementLength)%arrangementLength]
|
||||
rightNeighbor := arrangement[(idx+1)%arrangementLength]
|
||||
|
||||
totalHappiness += happinessMap[currentPerson][leftNeighbor]
|
||||
totalHappiness += happinessMap[currentPerson][rightNeighbor]
|
||||
}
|
||||
|
||||
return totalHappiness
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
happinessMap := buildHappinessMap(data)
|
||||
allPeople := getAllPeople(happinessMap)
|
||||
|
||||
fixedPerson := allPeople[0]
|
||||
remainingPeople := allPeople[1:]
|
||||
permutations := generatePermutations(remainingPeople)
|
||||
|
||||
maxHappiness := math.MinInt
|
||||
arrangement := make([]string, len(allPeople))
|
||||
arrangement[0] = fixedPerson
|
||||
|
||||
for _, perm := range permutations {
|
||||
copy(arrangement[1:], perm)
|
||||
totalHappiness := calculateTotalHappiness(arrangement, happinessMap)
|
||||
if totalHappiness > maxHappiness {
|
||||
maxHappiness = totalHappiness
|
||||
}
|
||||
}
|
||||
|
||||
return maxHappiness
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
happinessMap := buildHappinessMap(data)
|
||||
allPeople := getAllPeople(happinessMap)
|
||||
|
||||
me := "Me"
|
||||
happinessMap[me] = make(map[string]int)
|
||||
for _, person := range allPeople {
|
||||
happinessMap[person][me] = 0
|
||||
happinessMap[me][person] = 0
|
||||
}
|
||||
|
||||
allPeople = append(allPeople, me)
|
||||
fixedPerson := allPeople[0]
|
||||
remainingPeople := allPeople[1:]
|
||||
permutations := generatePermutations(remainingPeople)
|
||||
|
||||
maxTotalChange := math.MinInt
|
||||
arrangement := make([]string, len(allPeople))
|
||||
arrangement[0] = fixedPerson
|
||||
|
||||
for _, permutation := range permutations {
|
||||
copy(arrangement[1:], permutation)
|
||||
totalHappiness := calculateTotalHappiness(arrangement, happinessMap)
|
||||
if totalHappiness > maxTotalChange {
|
||||
maxTotalChange = totalHappiness
|
||||
}
|
||||
}
|
||||
|
||||
return maxTotalChange
|
||||
}
|
||||
28
internal/2015/DayThirteen/code_test.go
Normal file
28
internal/2015/DayThirteen/code_test.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package daythirteen
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"Alice would gain 54 happiness units by sitting next to Bob",
|
||||
"Alice would lose 79 happiness units by sitting next to Carol",
|
||||
"Alice would lose 2 happiness units by sitting next to David",
|
||||
"Bob would gain 83 happiness units by sitting next to Alice",
|
||||
"Bob would lose 7 happiness units by sitting next to Carol",
|
||||
"Bob would lose 63 happiness units by sitting next to David",
|
||||
"Carol would lose 62 happiness units by sitting next to Alice",
|
||||
"Carol would gain 60 happiness units by sitting next to Bob",
|
||||
"Carol would gain 55 happiness units by sitting next to David",
|
||||
"David would gain 46 happiness units by sitting next to Alice",
|
||||
"David would lose 7 happiness units by sitting next to Bob",
|
||||
"David would gain 41 happiness units by sitting next to Carol",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 330
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
// no test for part two
|
||||
68
internal/2015/DayTwelve/code.go
Normal file
68
internal/2015/DayTwelve/code.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package daytwelve
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2015D12", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
re := regexp.MustCompile(`-?\d+`)
|
||||
sum := 0
|
||||
for _, line := range data {
|
||||
matches := re.FindAllString(line, -1)
|
||||
for _, match := range matches {
|
||||
number, _ := strconv.Atoi(match)
|
||||
sum += number
|
||||
}
|
||||
}
|
||||
return sum
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
var sumNumbers func(any) int
|
||||
sumNumbers = func(v any) int {
|
||||
switch value := v.(type) {
|
||||
case float64:
|
||||
return int(value)
|
||||
case []any:
|
||||
sum := 0
|
||||
for _, item := range value {
|
||||
sum += sumNumbers(item)
|
||||
}
|
||||
return sum
|
||||
case map[string]any:
|
||||
sum := 0
|
||||
for _, item := range value {
|
||||
if str, ok := item.(string); ok && str == "red" {
|
||||
return 0
|
||||
}
|
||||
sum += sumNumbers(item)
|
||||
}
|
||||
return sum
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
sum := 0
|
||||
for _, line := range data {
|
||||
var value any
|
||||
_ = json.Unmarshal([]byte(line), &value)
|
||||
sum += sumNumbers(value)
|
||||
}
|
||||
return sum
|
||||
}
|
||||
51
internal/2015/DayTwelve/code_test.go
Normal file
51
internal/2015/DayTwelve/code_test.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package daytwelve
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
expected int
|
||||
}{
|
||||
{"[1,2,3]", "[1,2,3]", 6},
|
||||
{"{\"a\":2,\"b\":4}", "{\"a\":2,\"b\":4}", 6},
|
||||
{"[[[3]]]", "[[[3]]]", 3},
|
||||
{"{\"a\":{\"b\":4},\"c\":-1}", "{\"a\":{\"b\":4},\"c\":-1}", 3},
|
||||
{"{\"a\":[-1,1]}", "{\"a\":[-1,1]}", 0},
|
||||
{"[-1,{\"a\":1}]", "[-1,{\"a\":1}]", 0},
|
||||
{"[]", "[]", 0},
|
||||
{"{}", "{}", 0},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := PartOne([]string{tt.input})
|
||||
if got != tt.expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
expected int
|
||||
}{
|
||||
{"[1,2,3]", "[1,2,3]", 6},
|
||||
{"[1,{\"c\":\"red\",\"b\":2},3]", "[1,{\"c\":\"red\",\"b\":2},3]", 4},
|
||||
{"{\"d\":\"red\",\"e\":[1,2,3,4],\"f\":5}", "{\"d\":\"red\",\"e\":[1,2,3,4],\"f\":5}", 0},
|
||||
{"[1,\"red\",5]", "[1,\"red\",5]", 6},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := PartTwo([]string{tt.input})
|
||||
if got != tt.expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
18
internal/2015/register.go
Normal file
18
internal/2015/register.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package year2015
|
||||
|
||||
import (
|
||||
_ "advent-of-code/internal/2015/DayEight"
|
||||
_ "advent-of-code/internal/2015/DayEleven"
|
||||
_ "advent-of-code/internal/2015/DayFive"
|
||||
_ "advent-of-code/internal/2015/DayFour"
|
||||
_ "advent-of-code/internal/2015/DayFourteen"
|
||||
_ "advent-of-code/internal/2015/DayNine"
|
||||
_ "advent-of-code/internal/2015/DayOne"
|
||||
_ "advent-of-code/internal/2015/DaySeven"
|
||||
_ "advent-of-code/internal/2015/DaySix"
|
||||
_ "advent-of-code/internal/2015/DayTen"
|
||||
_ "advent-of-code/internal/2015/DayThirteen"
|
||||
_ "advent-of-code/internal/2015/DayThree"
|
||||
_ "advent-of-code/internal/2015/DayTwelve"
|
||||
_ "advent-of-code/internal/2015/DayTwo"
|
||||
)
|
||||
73
internal/2016/DayFive/code.go
Normal file
73
internal/2016/DayFive/code.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package dayfive
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"crypto/md5"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2016D5", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return string(content)
|
||||
}
|
||||
|
||||
func PartOne(data string) int {
|
||||
doorIDBytes := []byte(data)
|
||||
doorIDLen := len(doorIDBytes)
|
||||
input := make([]byte, doorIDLen, doorIDLen+20)
|
||||
copy(input, doorIDBytes)
|
||||
password := make([]byte, 0, 8)
|
||||
index := 0
|
||||
hexChars := "0123456789abcdef"
|
||||
|
||||
for len(password) < 8 {
|
||||
indexBytes := strconv.AppendInt(input[:doorIDLen], int64(index), 10)
|
||||
hash := md5.Sum(indexBytes)
|
||||
|
||||
if hash[0] == 0 && hash[1] == 0 && hash[2] < 16 {
|
||||
char := hexChars[hash[2]&0x0F]
|
||||
password = append(password, char)
|
||||
}
|
||||
index++
|
||||
}
|
||||
|
||||
fmt.Println(string(password))
|
||||
return 0
|
||||
}
|
||||
|
||||
func PartTwo(data string) int {
|
||||
doorIDBytes := []byte(data)
|
||||
doorIDLen := len(doorIDBytes)
|
||||
input := make([]byte, doorIDLen, doorIDLen+20)
|
||||
copy(input, doorIDBytes)
|
||||
password := make([]byte, 8)
|
||||
filled := make([]bool, 8)
|
||||
filledCount := 0
|
||||
index := 0
|
||||
hexChars := "0123456789abcdef"
|
||||
|
||||
for filledCount < 8 {
|
||||
indexBytes := strconv.AppendInt(input[:doorIDLen], int64(index), 10)
|
||||
hash := md5.Sum(indexBytes)
|
||||
|
||||
if hash[0] == 0 && hash[1] == 0 && hash[2] < 16 {
|
||||
position := int(hash[2] & 0x0F)
|
||||
if position < 8 && !filled[position] {
|
||||
char := hexChars[hash[3]>>4]
|
||||
password[position] = char
|
||||
filled[position] = true
|
||||
filledCount++
|
||||
}
|
||||
}
|
||||
index++
|
||||
}
|
||||
|
||||
fmt.Println(string(password))
|
||||
return 0
|
||||
}
|
||||
58
internal/2016/DayFive/code_test.go
Normal file
58
internal/2016/DayFive/code_test.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package dayfive
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var testInput = "abc"
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := "18f47a30"
|
||||
|
||||
oldStdout := os.Stdout
|
||||
r, w, err := os.Pipe()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create pipe: %v", err)
|
||||
}
|
||||
os.Stdout = w
|
||||
|
||||
PartOne(testInput)
|
||||
|
||||
_ = w.Close()
|
||||
os.Stdout = oldStdout
|
||||
|
||||
var buffer bytes.Buffer
|
||||
_, _ = buffer.ReadFrom(r)
|
||||
got := strings.TrimSpace(buffer.String())
|
||||
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() printed %q, want %q", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := "05ace8e3"
|
||||
|
||||
oldStdout := os.Stdout
|
||||
r, w, err := os.Pipe()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create pipe: %v", err)
|
||||
}
|
||||
os.Stdout = w
|
||||
|
||||
PartTwo(testInput)
|
||||
|
||||
_ = w.Close()
|
||||
os.Stdout = oldStdout
|
||||
|
||||
var buffer bytes.Buffer
|
||||
_, _ = buffer.ReadFrom(r)
|
||||
got := strings.TrimSpace(buffer.String())
|
||||
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() printed %q, want %q", got, expected)
|
||||
}
|
||||
}
|
||||
119
internal/2016/DayFour/code.go
Normal file
119
internal/2016/DayFour/code.go
Normal file
@@ -0,0 +1,119 @@
|
||||
package dayfour
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"os"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2016D4", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func isValidRoom(encryptedName string, expectedChecksum string) bool {
|
||||
letterFrequency := [26]int{}
|
||||
|
||||
for _, character := range encryptedName {
|
||||
if character >= 'a' && character <= 'z' {
|
||||
letterFrequency[character-'a']++
|
||||
}
|
||||
}
|
||||
|
||||
type letterFrequencyPair struct {
|
||||
letter rune
|
||||
count int
|
||||
}
|
||||
|
||||
letterFrequencyPairs := make([]letterFrequencyPair, 0, 26)
|
||||
for index, frequency := range letterFrequency {
|
||||
if frequency > 0 {
|
||||
letterFrequencyPairs = append(letterFrequencyPairs, letterFrequencyPair{
|
||||
letter: rune('a' + index),
|
||||
count: frequency,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
sort.Slice(letterFrequencyPairs, func(i, j int) bool {
|
||||
if letterFrequencyPairs[i].count != letterFrequencyPairs[j].count {
|
||||
return letterFrequencyPairs[i].count > letterFrequencyPairs[j].count
|
||||
}
|
||||
return letterFrequencyPairs[i].letter < letterFrequencyPairs[j].letter
|
||||
})
|
||||
|
||||
if len(letterFrequencyPairs) < 5 {
|
||||
return false
|
||||
}
|
||||
|
||||
for index := range 5 {
|
||||
if letterFrequencyPairs[index].letter != rune(expectedChecksum[index]) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func decryptRoomName(encryptedName string, sectorID int) string {
|
||||
result := strings.Builder{}
|
||||
result.Grow(len(encryptedName))
|
||||
shift := sectorID % 26
|
||||
for _, char := range encryptedName {
|
||||
if char == '-' {
|
||||
result.WriteByte(' ')
|
||||
} else if char >= 'a' && char <= 'z' {
|
||||
shifted := ((int(char-'a') + shift) % 26) + 'a'
|
||||
result.WriteByte(byte(shifted))
|
||||
}
|
||||
}
|
||||
return result.String()
|
||||
}
|
||||
|
||||
var roomPattern = regexp.MustCompile(`^(.+)-(\d+)(?:\[([a-z]{5})\])?$`)
|
||||
|
||||
func PartOne(data []string) int {
|
||||
sum := 0
|
||||
for _, line := range data {
|
||||
if line == "" {
|
||||
continue
|
||||
}
|
||||
matches := roomPattern.FindStringSubmatch(line)
|
||||
if len(matches) < 4 || matches[3] == "" {
|
||||
continue
|
||||
}
|
||||
encryptedName := matches[1]
|
||||
sectorIdentifier, _ := strconv.Atoi(matches[2])
|
||||
actualChecksum := matches[3]
|
||||
if isValidRoom(encryptedName, actualChecksum) {
|
||||
sum += sectorIdentifier
|
||||
}
|
||||
}
|
||||
return sum
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
for _, line := range data {
|
||||
matches := roomPattern.FindStringSubmatch(line)
|
||||
encryptedName := matches[1]
|
||||
sectorIdentifier, _ := strconv.Atoi(matches[2])
|
||||
checksum := matches[3]
|
||||
|
||||
if !isValidRoom(encryptedName, checksum) {
|
||||
continue
|
||||
}
|
||||
|
||||
decrypted := decryptRoomName(encryptedName, sectorIdentifier)
|
||||
if strings.Contains(decrypted, "northpole") {
|
||||
return sectorIdentifier
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
29
internal/2016/DayFour/code_test.go
Normal file
29
internal/2016/DayFour/code_test.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package dayfour
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
var testInput = []string{
|
||||
"aaaaa-bbb-z-y-x-123[abxyz]",
|
||||
"a-b-c-d-e-f-g-h-987[abcde]",
|
||||
"not-a-real-room-404[oarel]",
|
||||
"totally-real-room-200[decoy]",
|
||||
"ijmockjgz-storage-5[gjoac]",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 1519
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 5
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
91
internal/2016/DayOne/code.go
Normal file
91
internal/2016/DayOne/code.go
Normal file
@@ -0,0 +1,91 @@
|
||||
package dayone
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2016D1", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
type position struct {
|
||||
x, y int
|
||||
}
|
||||
|
||||
func abs(n int) int {
|
||||
if n < 0 {
|
||||
return -n
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
parts := strings.Split(string(content), ",")
|
||||
for i, p := range parts {
|
||||
parts[i] = strings.TrimSpace(p)
|
||||
}
|
||||
return parts
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
x, y := 0, 0
|
||||
directions := [][]int{{0, 1}, {1, 0}, {0, -1}, {-1, 0}}
|
||||
currentDirection := 0
|
||||
|
||||
for _, instruction := range data {
|
||||
turn := instruction[0]
|
||||
distance, _ := strconv.Atoi(instruction[1:])
|
||||
|
||||
switch turn {
|
||||
case 'R':
|
||||
currentDirection = (currentDirection + 1) % 4
|
||||
case 'L':
|
||||
currentDirection = (currentDirection + 3) % 4
|
||||
}
|
||||
|
||||
x += directions[currentDirection][0] * distance
|
||||
y += directions[currentDirection][1] * distance
|
||||
}
|
||||
|
||||
return abs(x) + abs(y)
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
x, y := 0, 0
|
||||
directions := [][]int{{0, 1}, {1, 0}, {0, -1}, {-1, 0}}
|
||||
currentDirection := 0
|
||||
visited := make(map[position]bool)
|
||||
visited[position{0, 0}] = true
|
||||
|
||||
for _, instruction := range data {
|
||||
turn := instruction[0]
|
||||
distance, _ := strconv.Atoi(instruction[1:])
|
||||
|
||||
switch turn {
|
||||
case 'R':
|
||||
currentDirection = (currentDirection + 1) % 4
|
||||
case 'L':
|
||||
currentDirection = (currentDirection + 3) % 4
|
||||
}
|
||||
|
||||
directionX := directions[currentDirection][0]
|
||||
directionY := directions[currentDirection][1]
|
||||
|
||||
for range distance {
|
||||
x += directionX
|
||||
y += directionY
|
||||
pos := position{x, y}
|
||||
if visited[pos] {
|
||||
return abs(x) + abs(y)
|
||||
}
|
||||
visited[pos] = true
|
||||
}
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
47
internal/2016/DayOne/code_test.go
Normal file
47
internal/2016/DayOne/code_test.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package dayone
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input []string
|
||||
expected int
|
||||
}{
|
||||
{
|
||||
name: "Example 1",
|
||||
input: []string{"R2", "L3"},
|
||||
expected: 5,
|
||||
},
|
||||
{
|
||||
name: "Example 2",
|
||||
input: []string{"R2", "R2", "R2"},
|
||||
expected: 2,
|
||||
},
|
||||
{
|
||||
name: "Example 3",
|
||||
input: []string{"R5", "L5", "R5", "R3"},
|
||||
expected: 12,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := PartOne(tt.input)
|
||||
if got != tt.expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
input := []string{"R8", "R4", "R4", "R8"}
|
||||
expected := 4
|
||||
got := PartTwo(input)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, 4)
|
||||
}
|
||||
}
|
||||
49
internal/2016/DayThree/code.go
Normal file
49
internal/2016/DayThree/code.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package daythree
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2016D3", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) [][3]int {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
lines := strings.Split(string(content), "\n")
|
||||
var result [][3]int
|
||||
for _, line := range lines {
|
||||
var a, b, c int
|
||||
fmt.Sscanf(line, "%d %d %d", &a, &b, &c)
|
||||
result = append(result, [3]int{a, b, c})
|
||||
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func PartOne(data [][3]int) int {
|
||||
count := 0
|
||||
for _, triangle := range data {
|
||||
a, b, c := triangle[0], triangle[1], triangle[2]
|
||||
if a+b > c && a+c > b && b+c > a {
|
||||
count++
|
||||
}
|
||||
}
|
||||
return count
|
||||
}
|
||||
|
||||
func PartTwo(data [][3]int) int {
|
||||
count := 0
|
||||
for idx := 0; idx < len(data)-2; idx += 3 {
|
||||
for column := range 3 {
|
||||
a, b, c := data[idx][column], data[idx+1][column], data[idx+2][column]
|
||||
if a+b > c && a+c > b && b+c > a {
|
||||
count++
|
||||
}
|
||||
}
|
||||
}
|
||||
return count
|
||||
}
|
||||
28
internal/2016/DayThree/code_test.go
Normal file
28
internal/2016/DayThree/code_test.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package daythree
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
input := [][3]int{{5, 10, 25}}
|
||||
expected := 0
|
||||
got := PartOne(input)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
input := [][3]int{
|
||||
{101, 301, 501},
|
||||
{102, 302, 502},
|
||||
{103, 303, 503},
|
||||
{201, 401, 601},
|
||||
{202, 402, 602},
|
||||
{203, 403, 603},
|
||||
}
|
||||
expected := 6
|
||||
got := PartTwo(input)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
101
internal/2016/DayTwo/code.go
Normal file
101
internal/2016/DayTwo/code.go
Normal file
@@ -0,0 +1,101 @@
|
||||
package daytwo
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2016D2", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func PartOne(instructions []string) int {
|
||||
row, column := 1, 1
|
||||
|
||||
keypad := [3][3]int{
|
||||
{1, 2, 3},
|
||||
{4, 5, 6},
|
||||
{7, 8, 9},
|
||||
}
|
||||
code := 0
|
||||
|
||||
for _, line := range instructions {
|
||||
for _, move := range line {
|
||||
switch move {
|
||||
case 'U':
|
||||
if row > 0 {
|
||||
row--
|
||||
}
|
||||
case 'D':
|
||||
if row < 2 {
|
||||
row++
|
||||
}
|
||||
case 'L':
|
||||
if column > 0 {
|
||||
column--
|
||||
}
|
||||
case 'R':
|
||||
if column < 2 {
|
||||
column++
|
||||
}
|
||||
}
|
||||
}
|
||||
code = code*10 + keypad[row][column]
|
||||
}
|
||||
|
||||
return code
|
||||
}
|
||||
|
||||
func PartTwo(instructions []string) int {
|
||||
row, column := 2, 0
|
||||
|
||||
keypad := [5][5]int{
|
||||
{0, 0, 1, 0, 0},
|
||||
{0, 2, 3, 4, 0},
|
||||
{5, 6, 7, 8, 9},
|
||||
{0, 10, 11, 12, 0},
|
||||
{0, 0, 13, 0, 0},
|
||||
}
|
||||
|
||||
isValidPosition := func(r, c int) bool {
|
||||
return r >= 0 && r < 5 && c >= 0 && c < 5 && keypad[r][c] != 0
|
||||
}
|
||||
|
||||
var codeBuilder strings.Builder
|
||||
|
||||
for _, line := range instructions {
|
||||
for _, move := range line {
|
||||
newRow, newColumn := row, column
|
||||
switch move {
|
||||
case 'U':
|
||||
newRow--
|
||||
case 'D':
|
||||
newRow++
|
||||
case 'L':
|
||||
newColumn--
|
||||
case 'R':
|
||||
newColumn++
|
||||
}
|
||||
if isValidPosition(newRow, newColumn) {
|
||||
row, column = newRow, newColumn
|
||||
}
|
||||
}
|
||||
value := keypad[row][column]
|
||||
if value < 10 {
|
||||
codeBuilder.WriteByte(byte('0' + value))
|
||||
} else {
|
||||
codeBuilder.WriteByte(byte('A' + value - 10))
|
||||
}
|
||||
}
|
||||
|
||||
code := codeBuilder.String()
|
||||
fmt.Println(code)
|
||||
return 0
|
||||
}
|
||||
42
internal/2016/DayTwo/code_test.go
Normal file
42
internal/2016/DayTwo/code_test.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package daytwo
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var testInput = []string{"ULL", "RRDDD", "LURDL", "UUUUD"}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 1985
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := "5DB3"
|
||||
|
||||
oldStdout := os.Stdout
|
||||
r, w, err := os.Pipe()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create pipe: %v", err)
|
||||
}
|
||||
os.Stdout = w
|
||||
|
||||
PartTwo(testInput)
|
||||
|
||||
_ = w.Close()
|
||||
os.Stdout = oldStdout
|
||||
|
||||
var buffer bytes.Buffer
|
||||
_, _ = buffer.ReadFrom(r)
|
||||
got := strings.TrimSpace(buffer.String())
|
||||
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() printed %q, want %q", got, expected)
|
||||
}
|
||||
}
|
||||
9
internal/2016/register.go
Normal file
9
internal/2016/register.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package year2016
|
||||
|
||||
import (
|
||||
_ "advent-of-code/internal/2016/DayFive"
|
||||
_ "advent-of-code/internal/2016/DayFour"
|
||||
_ "advent-of-code/internal/2016/DayOne"
|
||||
_ "advent-of-code/internal/2016/DayThree"
|
||||
_ "advent-of-code/internal/2016/DayTwo"
|
||||
)
|
||||
64
internal/2018/DayFive/code.go
Normal file
64
internal/2018/DayFive/code.go
Normal file
@@ -0,0 +1,64 @@
|
||||
package dayfive
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"os"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2018D5", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return string(content)
|
||||
}
|
||||
|
||||
func reactPolymer(data string) int {
|
||||
stack := []rune{}
|
||||
|
||||
for _, char := range data {
|
||||
if len(stack) == 0 {
|
||||
stack = append(stack, char)
|
||||
continue
|
||||
}
|
||||
|
||||
top := stack[len(stack)-1]
|
||||
|
||||
if unicode.ToLower(top) == unicode.ToLower(char) && top != char {
|
||||
stack = stack[:len(stack)-1]
|
||||
} else {
|
||||
stack = append(stack, char)
|
||||
}
|
||||
}
|
||||
|
||||
return len(stack)
|
||||
}
|
||||
|
||||
func PartOne(data string) int {
|
||||
return reactPolymer(data)
|
||||
}
|
||||
|
||||
func PartTwo(data string) int {
|
||||
unitTypes := make(map[rune]bool)
|
||||
for _, char := range data {
|
||||
unitTypes[unicode.ToLower(char)] = true
|
||||
}
|
||||
|
||||
shortestPolymerLength := len(data)
|
||||
for unitType := range unitTypes {
|
||||
filtered := make([]rune, 0, len(data))
|
||||
for _, char := range data {
|
||||
if unicode.ToLower(char) != unitType {
|
||||
filtered = append(filtered, char)
|
||||
}
|
||||
}
|
||||
length := reactPolymer(string(filtered))
|
||||
if length < shortestPolymerLength {
|
||||
shortestPolymerLength = length
|
||||
}
|
||||
}
|
||||
|
||||
return shortestPolymerLength
|
||||
}
|
||||
21
internal/2018/DayFive/code_test.go
Normal file
21
internal/2018/DayFive/code_test.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package dayfive
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = "dabAcCaCBAcCcaDA"
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 10
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 4
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
133
internal/2018/DayFour/code.go
Normal file
133
internal/2018/DayFour/code.go
Normal file
@@ -0,0 +1,133 @@
|
||||
package dayfour
|
||||
|
||||
import (
|
||||
"os"
|
||||
"regexp"
|
||||
"slices"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
var (
|
||||
guardRegex = regexp.MustCompile(`Guard #(\d+) begins shift`)
|
||||
timeLayout = "2006-01-02 15:04"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2018D4", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
type record struct {
|
||||
timestamp time.Time
|
||||
action string
|
||||
guardID int
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
records := make([]record, 0, len(data))
|
||||
|
||||
for _, line := range data {
|
||||
timeStr, action, _ := strings.Cut(line[1:], "] ")
|
||||
timestamp, _ := time.Parse(timeLayout, timeStr)
|
||||
guardID := -1
|
||||
if matches := guardRegex.FindStringSubmatch(action); matches != nil {
|
||||
guardID, _ = strconv.Atoi(matches[1])
|
||||
}
|
||||
records = append(records, record{timestamp, action, guardID})
|
||||
}
|
||||
|
||||
slices.SortFunc(records, func(a, b record) int {
|
||||
return a.timestamp.Compare(b.timestamp)
|
||||
})
|
||||
|
||||
guardSleepMinutes := make(map[int]int)
|
||||
guardMinuteCount := make(map[int]map[int]int)
|
||||
currentGuard := -1
|
||||
|
||||
for i := range records {
|
||||
if records[i].guardID != -1 {
|
||||
currentGuard = records[i].guardID
|
||||
if guardMinuteCount[currentGuard] == nil {
|
||||
guardMinuteCount[currentGuard] = make(map[int]int)
|
||||
}
|
||||
}
|
||||
if records[i].action == "falls asleep" && i+1 < len(records) {
|
||||
start, end := records[i].timestamp.Minute(), records[i+1].timestamp.Minute()
|
||||
guardSleepMinutes[currentGuard] += end - start
|
||||
for m := start; m < end; m++ {
|
||||
guardMinuteCount[currentGuard][m]++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
maxGuard, maxMinutes := -1, 0
|
||||
for id, minutes := range guardSleepMinutes {
|
||||
if minutes > maxMinutes {
|
||||
maxGuard, maxMinutes = id, minutes
|
||||
}
|
||||
}
|
||||
|
||||
maxMinute, maxCount := -1, 0
|
||||
for m, count := range guardMinuteCount[maxGuard] {
|
||||
if count > maxCount {
|
||||
maxMinute, maxCount = m, count
|
||||
}
|
||||
}
|
||||
|
||||
return maxGuard * maxMinute
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
records := make([]record, 0, len(data))
|
||||
|
||||
for _, line := range data {
|
||||
timeStr, action, _ := strings.Cut(line[1:], "] ")
|
||||
timestamp, _ := time.Parse(timeLayout, timeStr)
|
||||
guardID := -1
|
||||
if matches := guardRegex.FindStringSubmatch(action); matches != nil {
|
||||
guardID, _ = strconv.Atoi(matches[1])
|
||||
}
|
||||
records = append(records, record{timestamp, action, guardID})
|
||||
}
|
||||
|
||||
slices.SortFunc(records, func(a, b record) int {
|
||||
return a.timestamp.Compare(b.timestamp)
|
||||
})
|
||||
|
||||
guardMinuteCount := make(map[int]map[int]int)
|
||||
currentGuard := -1
|
||||
|
||||
for idx := range records {
|
||||
if records[idx].guardID != -1 {
|
||||
currentGuard = records[idx].guardID
|
||||
if guardMinuteCount[currentGuard] == nil {
|
||||
guardMinuteCount[currentGuard] = make(map[int]int)
|
||||
}
|
||||
}
|
||||
if records[idx].action == "falls asleep" && idx+1 < len(records) {
|
||||
start, end := records[idx].timestamp.Minute(), records[idx+1].timestamp.Minute()
|
||||
for m := start; m < end; m++ {
|
||||
guardMinuteCount[currentGuard][m]++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
maxGuard, maxMinute, maxCount := -1, -1, 0
|
||||
for guardID, minuteCounts := range guardMinuteCount {
|
||||
for minute, count := range minuteCounts {
|
||||
if count > maxCount {
|
||||
maxGuard, maxMinute, maxCount = guardID, minute, count
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return maxGuard * maxMinute
|
||||
}
|
||||
39
internal/2018/DayFour/code_test.go
Normal file
39
internal/2018/DayFour/code_test.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package dayfour
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"[1518-11-01 00:00] Guard #10 begins shift",
|
||||
"[1518-11-01 00:05] falls asleep",
|
||||
"[1518-11-01 00:25] wakes up",
|
||||
"[1518-11-01 00:30] falls asleep",
|
||||
"[1518-11-01 00:55] wakes up",
|
||||
"[1518-11-01 23:58] Guard #99 begins shift",
|
||||
"[1518-11-02 00:40] falls asleep",
|
||||
"[1518-11-02 00:50] wakes up",
|
||||
"[1518-11-03 00:05] Guard #10 begins shift",
|
||||
"[1518-11-03 00:24] falls asleep",
|
||||
"[1518-11-03 00:29] wakes up",
|
||||
"[1518-11-04 00:02] Guard #99 begins shift",
|
||||
"[1518-11-04 00:36] falls asleep",
|
||||
"[1518-11-04 00:46] wakes up",
|
||||
"[1518-11-05 00:03] Guard #99 begins shift",
|
||||
"[1518-11-05 00:45] falls asleep",
|
||||
"[1518-11-05 00:55] wakes up",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 240
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 4455
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
@@ -45,11 +45,11 @@ func TestPartTwo(t *testing.T) {
|
||||
|
||||
PartTwo(input)
|
||||
|
||||
w.Close()
|
||||
_ = w.Close()
|
||||
os.Stdout = oldStdout
|
||||
|
||||
var buffer bytes.Buffer
|
||||
buffer.ReadFrom(r)
|
||||
_, _ = buffer.ReadFrom(r)
|
||||
got := strings.TrimSpace(buffer.String())
|
||||
|
||||
if got != expected {
|
||||
|
||||
9
internal/2018/register.go
Normal file
9
internal/2018/register.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package year2018
|
||||
|
||||
import (
|
||||
_ "advent-of-code/internal/2018/DayFive"
|
||||
_ "advent-of-code/internal/2018/DayFour"
|
||||
_ "advent-of-code/internal/2018/DayOne"
|
||||
_ "advent-of-code/internal/2018/DayThree"
|
||||
_ "advent-of-code/internal/2018/DayTwo"
|
||||
)
|
||||
@@ -91,7 +91,7 @@ func PartTwo(data []string) int {
|
||||
return false
|
||||
}
|
||||
for _, c := range value[1:] {
|
||||
if !((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f')) {
|
||||
if (c < '0' || c > '9') && (c < 'a' || c > 'f') {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,11 +14,8 @@ func init() {
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
lines := strings.Split(string(content), "\n")
|
||||
var data []string
|
||||
for _, line := range lines {
|
||||
data = append(data, line)
|
||||
}
|
||||
return data
|
||||
data := make([]string, 0, len(lines))
|
||||
return append(data, lines...)
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
|
||||
12
internal/2020/register.go
Normal file
12
internal/2020/register.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package year2020
|
||||
|
||||
import (
|
||||
_ "advent-of-code/internal/2020/DayEight"
|
||||
_ "advent-of-code/internal/2020/DayFive"
|
||||
_ "advent-of-code/internal/2020/DayFour"
|
||||
_ "advent-of-code/internal/2020/DayOne"
|
||||
_ "advent-of-code/internal/2020/DaySeven"
|
||||
_ "advent-of-code/internal/2020/DaySix"
|
||||
_ "advent-of-code/internal/2020/DayThree"
|
||||
_ "advent-of-code/internal/2020/DayTwo"
|
||||
)
|
||||
155
internal/2021/DayFour/code.go
Normal file
155
internal/2021/DayFour/code.go
Normal file
@@ -0,0 +1,155 @@
|
||||
package dayfour
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
const boardSize = 5
|
||||
|
||||
func init() {
|
||||
registry.Register("2021D4", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(strings.TrimSpace(string(content)), "\n")
|
||||
}
|
||||
|
||||
type board struct {
|
||||
numbers [boardSize][boardSize]int
|
||||
positionMap map[int][2]int
|
||||
rowCounts [boardSize]int
|
||||
columnCounts [boardSize]int
|
||||
marked map[int]bool
|
||||
won bool
|
||||
}
|
||||
|
||||
func newBoard() board {
|
||||
return board{
|
||||
positionMap: make(map[int][2]int, boardSize*boardSize),
|
||||
marked: make(map[int]bool),
|
||||
}
|
||||
}
|
||||
|
||||
func parseBoards(lines []string) []board {
|
||||
var boards []board
|
||||
current := newBoard()
|
||||
row := 0
|
||||
|
||||
for _, line := range lines {
|
||||
line = strings.TrimSpace(line)
|
||||
if line == "" {
|
||||
if row == boardSize {
|
||||
boards = append(boards, current)
|
||||
current = newBoard()
|
||||
row = 0
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
fields := strings.Fields(line)
|
||||
for column, field := range fields {
|
||||
number, _ := strconv.Atoi(field)
|
||||
current.numbers[row][column] = number
|
||||
current.positionMap[number] = [2]int{row, column}
|
||||
}
|
||||
row++
|
||||
}
|
||||
|
||||
if row == boardSize {
|
||||
boards = append(boards, current)
|
||||
}
|
||||
|
||||
return boards
|
||||
}
|
||||
|
||||
func (b *board) mark(number int) bool {
|
||||
if b.won {
|
||||
return false
|
||||
}
|
||||
|
||||
position, exists := b.positionMap[number]
|
||||
if !exists {
|
||||
return false
|
||||
}
|
||||
|
||||
b.marked[number] = true
|
||||
row, column := position[0], position[1]
|
||||
b.rowCounts[row]++
|
||||
b.columnCounts[column]++
|
||||
|
||||
if b.rowCounts[row] == boardSize || b.columnCounts[column] == boardSize {
|
||||
b.won = true
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (b *board) sumUnmarked() int {
|
||||
sum := 0
|
||||
for row := range boardSize {
|
||||
for column := range boardSize {
|
||||
number := b.numbers[row][column]
|
||||
if !b.marked[number] {
|
||||
sum += number
|
||||
}
|
||||
}
|
||||
}
|
||||
return sum
|
||||
}
|
||||
|
||||
func parseNumbers(line string) []int {
|
||||
numbersStr := strings.Split(line, ",")
|
||||
numbers := make([]int, 0, len(numbersStr))
|
||||
for _, numStr := range numbersStr {
|
||||
num, _ := strconv.Atoi(numStr)
|
||||
numbers = append(numbers, num)
|
||||
}
|
||||
return numbers
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
numbers := parseNumbers(data[0])
|
||||
boards := parseBoards(data[1:])
|
||||
|
||||
for _, number := range numbers {
|
||||
for idx := range boards {
|
||||
if boards[idx].mark(number) {
|
||||
return boards[idx].sumUnmarked() * number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
numbers := parseNumbers(data[0])
|
||||
boards := parseBoards(data[1:])
|
||||
|
||||
wonCount := 0
|
||||
totalBoards := len(boards)
|
||||
var lastWinner *board
|
||||
var lastNumber int
|
||||
|
||||
for _, number := range numbers {
|
||||
for idx := range boards {
|
||||
if boards[idx].mark(number) {
|
||||
wonCount++
|
||||
lastWinner = &boards[idx]
|
||||
lastNumber = number
|
||||
|
||||
if wonCount == totalBoards {
|
||||
return lastWinner.sumUnmarked() * lastNumber
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
41
internal/2021/DayFour/code_test.go
Normal file
41
internal/2021/DayFour/code_test.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package dayfour
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1",
|
||||
"",
|
||||
"22 13 17 11 0",
|
||||
" 8 2 23 4 24",
|
||||
"21 9 14 16 7",
|
||||
" 6 10 3 18 5",
|
||||
" 1 12 20 15 19",
|
||||
"",
|
||||
" 3 15 0 2 22",
|
||||
" 9 18 13 17 5",
|
||||
"19 8 7 25 23",
|
||||
"20 11 10 24 4",
|
||||
"14 21 16 12 6",
|
||||
"",
|
||||
"14 21 17 24 4",
|
||||
"10 16 15 9 19",
|
||||
"18 8 23 26 20",
|
||||
"22 11 13 6 5",
|
||||
" 2 0 12 3 7",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 4512
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 1924
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
8
internal/2021/register.go
Normal file
8
internal/2021/register.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package year2021
|
||||
|
||||
import (
|
||||
_ "advent-of-code/internal/2021/DayFour"
|
||||
_ "advent-of-code/internal/2021/DayOne"
|
||||
_ "advent-of-code/internal/2021/DayThree"
|
||||
_ "advent-of-code/internal/2021/DayTwo"
|
||||
)
|
||||
54
internal/2022/DayFour/code.go
Normal file
54
internal/2022/DayFour/code.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package dayfour
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2022D4", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
count := 0
|
||||
for _, line := range data {
|
||||
parts := strings.Split(line, ",")
|
||||
|
||||
var firstRangeStart, firstRangeEnd, secondRangeStart, secondRangeEnd int
|
||||
fmt.Sscanf(parts[0], "%d-%d", &firstRangeStart, &firstRangeEnd)
|
||||
fmt.Sscanf(parts[1], "%d-%d", &secondRangeStart, &secondRangeEnd)
|
||||
|
||||
minStart := min(firstRangeStart, secondRangeStart)
|
||||
maxEnd := max(firstRangeEnd, secondRangeEnd)
|
||||
|
||||
if (minStart == firstRangeStart && maxEnd == firstRangeEnd) || (minStart == secondRangeStart && maxEnd == secondRangeEnd) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
|
||||
return count
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
count := 0
|
||||
for _, line := range data {
|
||||
parts := strings.Split(line, ",")
|
||||
|
||||
var firstRangeStart, firstRangeEnd, secondRangeStart, secondRangeEnd int
|
||||
fmt.Sscanf(parts[0], "%d-%d", &firstRangeStart, &firstRangeEnd)
|
||||
fmt.Sscanf(parts[1], "%d-%d", &secondRangeStart, &secondRangeEnd)
|
||||
|
||||
if firstRangeStart <= secondRangeEnd && secondRangeStart <= firstRangeEnd {
|
||||
count++
|
||||
}
|
||||
}
|
||||
|
||||
return count
|
||||
}
|
||||
28
internal/2022/DayFour/code_test.go
Normal file
28
internal/2022/DayFour/code_test.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package dayfour
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"2-4,6-8",
|
||||
"2-3,4-5",
|
||||
"5-7,7-9",
|
||||
"2-8,3-7",
|
||||
"6-6,4-6",
|
||||
"2-6,4-8",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 2
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 4
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
87
internal/2022/DayThree/code.go
Normal file
87
internal/2022/DayThree/code.go
Normal file
@@ -0,0 +1,87 @@
|
||||
package daythree
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2022D3", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func buildItemSet(items string) map[rune]bool {
|
||||
itemSet := make(map[rune]bool)
|
||||
for _, item := range items {
|
||||
itemSet[item] = true
|
||||
}
|
||||
return itemSet
|
||||
}
|
||||
|
||||
func findCommonItem(itemSet map[rune]bool, items string) rune {
|
||||
for _, item := range items {
|
||||
if itemSet[item] {
|
||||
return item
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func findIntersection(itemSet map[rune]bool, items string) map[rune]bool {
|
||||
intersection := make(map[rune]bool)
|
||||
for _, item := range items {
|
||||
if itemSet[item] {
|
||||
intersection[item] = true
|
||||
}
|
||||
}
|
||||
return intersection
|
||||
}
|
||||
|
||||
func getItemPriority(item rune) int {
|
||||
if item >= 'a' && item <= 'z' {
|
||||
return int(item - 'a' + 1)
|
||||
}
|
||||
if item >= 'A' && item <= 'Z' {
|
||||
return int(item - 'A' + 27)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
totalPriority := 0
|
||||
for _, rucksack := range data {
|
||||
compartmentSize := len(rucksack) / 2
|
||||
firstCompartment := rucksack[:compartmentSize]
|
||||
secondCompartment := rucksack[compartmentSize:]
|
||||
|
||||
firstCompartmentItems := buildItemSet(firstCompartment)
|
||||
commonItem := findCommonItem(firstCompartmentItems, secondCompartment)
|
||||
totalPriority += getItemPriority(commonItem)
|
||||
}
|
||||
|
||||
return totalPriority
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
totalPriority := 0
|
||||
for i := 0; i < len(data); i += 3 {
|
||||
if i+2 >= len(data) {
|
||||
break
|
||||
}
|
||||
firstRucksack := data[i]
|
||||
secondRucksack := data[i+1]
|
||||
thirdRucksack := data[i+2]
|
||||
|
||||
firstRucksackItems := buildItemSet(firstRucksack)
|
||||
commonInFirstTwo := findIntersection(firstRucksackItems, secondRucksack)
|
||||
badge := findCommonItem(commonInFirstTwo, thirdRucksack)
|
||||
totalPriority += getItemPriority(badge)
|
||||
}
|
||||
|
||||
return totalPriority
|
||||
}
|
||||
28
internal/2022/DayThree/code_test.go
Normal file
28
internal/2022/DayThree/code_test.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package daythree
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"vJrwpWtwJgWrhcsFMMfFFhFp",
|
||||
"jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL",
|
||||
"PmmdzqPrVvPwwTWBwg",
|
||||
"wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn",
|
||||
"ttgJtRGJQctTZtZT",
|
||||
"CrZsJsPPZsGzwwsLwLmpwMDw",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 157
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 70
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
8
internal/2022/register.go
Normal file
8
internal/2022/register.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package year2022
|
||||
|
||||
import (
|
||||
_ "advent-of-code/internal/2022/DayFour"
|
||||
_ "advent-of-code/internal/2022/DayOne"
|
||||
_ "advent-of-code/internal/2022/DayThree"
|
||||
_ "advent-of-code/internal/2022/DayTwo"
|
||||
)
|
||||
210
internal/2025/DayEight/code.go
Normal file
210
internal/2025/DayEight/code.go
Normal file
@@ -0,0 +1,210 @@
|
||||
package dayeight
|
||||
|
||||
import (
|
||||
"cmp"
|
||||
"container/heap"
|
||||
"os"
|
||||
"slices"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2025D8", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
type JunctionBox struct {
|
||||
X, Y, Z int
|
||||
}
|
||||
|
||||
type UnionFind struct {
|
||||
parent []int
|
||||
size []int
|
||||
}
|
||||
|
||||
type Connection struct {
|
||||
firstJunctionBox, secondJunctionBox int
|
||||
squaredDistance int
|
||||
}
|
||||
|
||||
type ConnectionHeap []Connection
|
||||
|
||||
func (h ConnectionHeap) Len() int { return len(h) }
|
||||
func (h ConnectionHeap) Less(i, j int) bool { return h[i].squaredDistance > h[j].squaredDistance }
|
||||
func (h ConnectionHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] }
|
||||
func (h *ConnectionHeap) Push(x any) { *h = append(*h, x.(Connection)) }
|
||||
func (h *ConnectionHeap) Pop() any {
|
||||
old := *h
|
||||
n := len(old)
|
||||
x := old[n-1]
|
||||
*h = old[0 : n-1]
|
||||
return x
|
||||
}
|
||||
|
||||
func NewUnionFind(count int) *UnionFind {
|
||||
parent := make([]int, count)
|
||||
size := make([]int, count)
|
||||
for idx := range parent {
|
||||
parent[idx] = idx
|
||||
size[idx] = 1
|
||||
}
|
||||
return &UnionFind{parent: parent, size: size}
|
||||
}
|
||||
|
||||
func (uf *UnionFind) Find(junctionBox int) int {
|
||||
if uf.parent[junctionBox] != junctionBox {
|
||||
uf.parent[junctionBox] = uf.Find(uf.parent[junctionBox])
|
||||
}
|
||||
return uf.parent[junctionBox]
|
||||
}
|
||||
|
||||
func (uf *UnionFind) Union(junctionBox1, junctionBox2 int) (bool, int) {
|
||||
root1 := uf.Find(junctionBox1)
|
||||
root2 := uf.Find(junctionBox2)
|
||||
if root1 == root2 {
|
||||
return false, root1
|
||||
}
|
||||
if uf.size[root1] < uf.size[root2] {
|
||||
root1, root2 = root2, root1
|
||||
}
|
||||
uf.parent[root2] = root1
|
||||
uf.size[root1] += uf.size[root2]
|
||||
return true, root1
|
||||
}
|
||||
|
||||
func parseJunctionBoxes(data []string) []JunctionBox {
|
||||
var junctionBoxes []JunctionBox
|
||||
for _, line := range data {
|
||||
parts := strings.Split(line, ",")
|
||||
x, _ := strconv.Atoi(parts[0])
|
||||
y, _ := strconv.Atoi(parts[1])
|
||||
z, _ := strconv.Atoi(parts[2])
|
||||
junctionBoxes = append(junctionBoxes, JunctionBox{X: x, Y: y, Z: z})
|
||||
}
|
||||
return junctionBoxes
|
||||
}
|
||||
|
||||
func generateAllConnections(junctionBoxes []JunctionBox) []Connection {
|
||||
junctionBoxCount := len(junctionBoxes)
|
||||
connections := make([]Connection, 0, junctionBoxCount*(junctionBoxCount-1)/2)
|
||||
|
||||
for i := range junctionBoxCount {
|
||||
for j := i + 1; j < junctionBoxCount; j++ {
|
||||
dx := junctionBoxes[i].X - junctionBoxes[j].X
|
||||
dy := junctionBoxes[i].Y - junctionBoxes[j].Y
|
||||
dz := junctionBoxes[i].Z - junctionBoxes[j].Z
|
||||
squaredDistance := dx*dx + dy*dy + dz*dz
|
||||
|
||||
connections = append(connections, Connection{
|
||||
firstJunctionBox: i,
|
||||
secondJunctionBox: j,
|
||||
squaredDistance: squaredDistance,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
slices.SortFunc(connections, func(a, b Connection) int {
|
||||
return cmp.Compare(a.squaredDistance, b.squaredDistance)
|
||||
})
|
||||
|
||||
return connections
|
||||
}
|
||||
|
||||
func findKSmallestConnections(junctionBoxes []JunctionBox, k int) []Connection {
|
||||
junctionBoxCount := len(junctionBoxes)
|
||||
connectionHeap := make(ConnectionHeap, 0, k)
|
||||
heap.Init(&connectionHeap)
|
||||
|
||||
for i := range junctionBoxCount {
|
||||
for j := i + 1; j < junctionBoxCount; j++ {
|
||||
dx := junctionBoxes[i].X - junctionBoxes[j].X
|
||||
dy := junctionBoxes[i].Y - junctionBoxes[j].Y
|
||||
dz := junctionBoxes[i].Z - junctionBoxes[j].Z
|
||||
squaredDistance := dx*dx + dy*dy + dz*dz
|
||||
|
||||
connection := Connection{
|
||||
firstJunctionBox: i,
|
||||
secondJunctionBox: j,
|
||||
squaredDistance: squaredDistance,
|
||||
}
|
||||
|
||||
if len(connectionHeap) < k {
|
||||
heap.Push(&connectionHeap, connection)
|
||||
} else if connection.squaredDistance < connectionHeap[0].squaredDistance {
|
||||
heap.Pop(&connectionHeap)
|
||||
heap.Push(&connectionHeap, connection)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
connections := make([]Connection, 0, len(connectionHeap))
|
||||
for connectionHeap.Len() > 0 {
|
||||
connections = append(connections, heap.Pop(&connectionHeap).(Connection))
|
||||
}
|
||||
|
||||
slices.SortFunc(connections, func(a, b Connection) int {
|
||||
return cmp.Compare(a.squaredDistance, b.squaredDistance)
|
||||
})
|
||||
|
||||
return connections
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
junctionBoxes := parseJunctionBoxes(data)
|
||||
junctionBoxCount := len(junctionBoxes)
|
||||
|
||||
targetPairs := 1000
|
||||
if junctionBoxCount <= 20 {
|
||||
targetPairs = 10
|
||||
}
|
||||
|
||||
connections := findKSmallestConnections(junctionBoxes, targetPairs)
|
||||
|
||||
uf := NewUnionFind(junctionBoxCount)
|
||||
for _, connection := range connections {
|
||||
uf.Union(connection.firstJunctionBox, connection.secondJunctionBox)
|
||||
}
|
||||
|
||||
circuitSizes := make(map[int]int)
|
||||
for idx := range junctionBoxes {
|
||||
root := uf.Find(idx)
|
||||
circuitSizes[root] = uf.size[root]
|
||||
}
|
||||
|
||||
sizes := make([]int, 0, len(circuitSizes))
|
||||
for _, size := range circuitSizes {
|
||||
sizes = append(sizes, size)
|
||||
}
|
||||
|
||||
slices.Sort(sizes)
|
||||
slices.Reverse(sizes)
|
||||
|
||||
return sizes[0] * sizes[1] * sizes[2]
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
junctionBoxes := parseJunctionBoxes(data)
|
||||
connections := generateAllConnections(junctionBoxes)
|
||||
|
||||
uf := NewUnionFind(len(junctionBoxes))
|
||||
var lastConnection Connection
|
||||
|
||||
for _, connection := range connections {
|
||||
merged, root := uf.Union(connection.firstJunctionBox, connection.secondJunctionBox)
|
||||
if merged {
|
||||
lastConnection = connection
|
||||
if uf.size[root] == len(junctionBoxes) {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return junctionBoxes[lastConnection.firstJunctionBox].X * junctionBoxes[lastConnection.secondJunctionBox].X
|
||||
}
|
||||
42
internal/2025/DayEight/code_test.go
Normal file
42
internal/2025/DayEight/code_test.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package dayeight
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"162,817,812",
|
||||
"57,618,57",
|
||||
"906,360,560",
|
||||
"592,479,940",
|
||||
"352,342,300",
|
||||
"466,668,158",
|
||||
"542,29,236",
|
||||
"431,825,988",
|
||||
"739,650,466",
|
||||
"52,470,668",
|
||||
"216,146,977",
|
||||
"819,987,18",
|
||||
"117,168,530",
|
||||
"805,96,715",
|
||||
"346,949,466",
|
||||
"970,615,88",
|
||||
"941,993,340",
|
||||
"862,61,35",
|
||||
"984,92,344",
|
||||
"425,690,689",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 40
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 25272
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
125
internal/2025/DayFive/code.go
Normal file
125
internal/2025/DayFive/code.go
Normal file
@@ -0,0 +1,125 @@
|
||||
package dayfive
|
||||
|
||||
import (
|
||||
"os"
|
||||
"slices"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
type freshRange struct {
|
||||
start int
|
||||
end int
|
||||
}
|
||||
|
||||
func init() {
|
||||
registry.Register("2025D5", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
var freshRanges []freshRange
|
||||
var ingredientIDs []int
|
||||
separatorFound := false
|
||||
|
||||
for _, line := range data {
|
||||
if line == "" {
|
||||
separatorFound = true
|
||||
continue
|
||||
}
|
||||
|
||||
if !separatorFound {
|
||||
startStr, endStr, _ := strings.Cut(line, "-")
|
||||
start, _ := strconv.Atoi(startStr)
|
||||
end, _ := strconv.Atoi(endStr)
|
||||
freshRanges = append(freshRanges, freshRange{start: start, end: end})
|
||||
} else {
|
||||
id, _ := strconv.Atoi(line)
|
||||
ingredientIDs = append(ingredientIDs, id)
|
||||
}
|
||||
}
|
||||
|
||||
slices.SortFunc(freshRanges, func(a, b freshRange) int {
|
||||
switch {
|
||||
case a.start < b.start:
|
||||
return -1
|
||||
case a.start > b.start:
|
||||
return 1
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
})
|
||||
|
||||
freshCount := 0
|
||||
for _, id := range ingredientIDs {
|
||||
idx := sort.Search(len(freshRanges), func(idx int) bool {
|
||||
return freshRanges[idx].start > id
|
||||
})
|
||||
|
||||
for i := idx - 1; i >= 0 && freshRanges[i].start <= id; i-- {
|
||||
if id <= freshRanges[i].end {
|
||||
freshCount++
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return freshCount
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
var freshRanges []freshRange
|
||||
|
||||
for _, line := range data {
|
||||
if line == "" {
|
||||
break
|
||||
}
|
||||
|
||||
startStr, endStr, _ := strings.Cut(line, "-")
|
||||
start, _ := strconv.Atoi(startStr)
|
||||
end, _ := strconv.Atoi(endStr)
|
||||
freshRanges = append(freshRanges, freshRange{start: start, end: end})
|
||||
}
|
||||
|
||||
slices.SortFunc(freshRanges, func(a, b freshRange) int {
|
||||
switch {
|
||||
case a.start < b.start:
|
||||
return -1
|
||||
case a.start > b.start:
|
||||
return 1
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
})
|
||||
|
||||
var mergedRanges []freshRange
|
||||
for _, r := range freshRanges {
|
||||
if len(mergedRanges) == 0 {
|
||||
mergedRanges = append(mergedRanges, r)
|
||||
continue
|
||||
}
|
||||
|
||||
lastRange := &mergedRanges[len(mergedRanges)-1]
|
||||
if r.start <= lastRange.end+1 {
|
||||
if r.end > lastRange.end {
|
||||
lastRange.end = r.end
|
||||
}
|
||||
} else {
|
||||
mergedRanges = append(mergedRanges, r)
|
||||
}
|
||||
}
|
||||
|
||||
totalFreshIDs := 0
|
||||
for _, r := range mergedRanges {
|
||||
totalFreshIDs += r.end - r.start + 1
|
||||
}
|
||||
|
||||
return totalFreshIDs
|
||||
}
|
||||
33
internal/2025/DayFive/code_test.go
Normal file
33
internal/2025/DayFive/code_test.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package dayfive
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"3-5",
|
||||
"10-14",
|
||||
"16-20",
|
||||
"12-18",
|
||||
"",
|
||||
"1",
|
||||
"5",
|
||||
"8",
|
||||
"11",
|
||||
"17",
|
||||
"32",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 3
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 14
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
104
internal/2025/DayFour/code.go
Normal file
104
internal/2025/DayFour/code.go
Normal file
@@ -0,0 +1,104 @@
|
||||
package dayfour
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
type position struct {
|
||||
row, column int
|
||||
}
|
||||
|
||||
var directions = []position{
|
||||
{-1, -1},
|
||||
{-1, 0},
|
||||
{-1, 1},
|
||||
{0, -1},
|
||||
{0, 1},
|
||||
{1, -1},
|
||||
{1, 0},
|
||||
{1, 1},
|
||||
}
|
||||
|
||||
func init() {
|
||||
registry.Register("2025D4", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
isRoll := make(map[position]bool)
|
||||
|
||||
for row := range data {
|
||||
for column := 0; column < len(data[row]); column++ {
|
||||
if data[row][column] == '@' {
|
||||
isRoll[position{row, column}] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
accessibleRolls := 0
|
||||
for pos := range isRoll {
|
||||
adjacentRolls := 0
|
||||
for _, direction := range directions {
|
||||
neighbor := position{pos.row + direction.row, pos.column + direction.column}
|
||||
if isRoll[neighbor] {
|
||||
adjacentRolls++
|
||||
}
|
||||
}
|
||||
|
||||
if adjacentRolls < 4 {
|
||||
accessibleRolls++
|
||||
}
|
||||
}
|
||||
|
||||
return accessibleRolls
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
isRoll := make(map[position]bool)
|
||||
|
||||
for row := range data {
|
||||
for column := 0; column < len(data[row]); column++ {
|
||||
if data[row][column] == '@' {
|
||||
isRoll[position{row, column}] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
totalRemoved := 0
|
||||
|
||||
for {
|
||||
accessibleRolls := make(map[position]bool)
|
||||
|
||||
for pos := range isRoll {
|
||||
adjacentRolls := 0
|
||||
for _, direction := range directions {
|
||||
neighbor := position{pos.row + direction.row, pos.column + direction.column}
|
||||
if isRoll[neighbor] {
|
||||
adjacentRolls++
|
||||
}
|
||||
}
|
||||
|
||||
if adjacentRolls < 4 {
|
||||
accessibleRolls[pos] = true
|
||||
}
|
||||
}
|
||||
|
||||
if len(accessibleRolls) == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
for pos := range accessibleRolls {
|
||||
delete(isRoll, pos)
|
||||
totalRemoved++
|
||||
}
|
||||
}
|
||||
|
||||
return totalRemoved
|
||||
}
|
||||
32
internal/2025/DayFour/code_test.go
Normal file
32
internal/2025/DayFour/code_test.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package dayfour
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"..@@.@@@@.",
|
||||
"@@@.@.@.@@",
|
||||
"@@@@@.@.@@",
|
||||
"@.@@@@..@.",
|
||||
"@@.@@@@.@@",
|
||||
".@@@@@@@.@",
|
||||
".@.@.@.@@@",
|
||||
"@.@@@.@@@@",
|
||||
".@@@@@@@@.",
|
||||
"@.@.@@@.@.",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 13
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 43
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
234
internal/2025/DayNine/code.go
Normal file
234
internal/2025/DayNine/code.go
Normal file
@@ -0,0 +1,234 @@
|
||||
package daynine
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"os"
|
||||
"slices"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2025D9", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
type Point struct {
|
||||
x, y int
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func parsePoints(data []string) []Point {
|
||||
points := make([]Point, 0, len(data))
|
||||
for _, line := range data {
|
||||
parts := strings.Split(line, ",")
|
||||
x, _ := strconv.Atoi(parts[0])
|
||||
y, _ := strconv.Atoi(parts[1])
|
||||
points = append(points, Point{x: x, y: y})
|
||||
}
|
||||
return points
|
||||
}
|
||||
|
||||
func abs(x int) int {
|
||||
if x < 0 {
|
||||
return -x
|
||||
}
|
||||
return x
|
||||
}
|
||||
|
||||
func minMax(a, b int) (int, int) {
|
||||
if a > b {
|
||||
return b, a
|
||||
}
|
||||
return a, b
|
||||
}
|
||||
|
||||
func compressCoordinates(points []Point) ([]int, []int, map[int]int, map[int]int) {
|
||||
xs := make(map[int]bool)
|
||||
ys := make(map[int]bool)
|
||||
for _, point := range points {
|
||||
xs[point.x] = true
|
||||
ys[point.y] = true
|
||||
}
|
||||
sortedX := make([]int, 0, len(xs))
|
||||
sortedY := make([]int, 0, len(ys))
|
||||
for x := range xs {
|
||||
sortedX = append(sortedX, x)
|
||||
}
|
||||
for y := range ys {
|
||||
sortedY = append(sortedY, y)
|
||||
}
|
||||
slices.Sort(sortedX)
|
||||
slices.Sort(sortedY)
|
||||
|
||||
mapX := make(map[int]int, len(sortedX))
|
||||
mapY := make(map[int]int, len(sortedY))
|
||||
for idx, x := range sortedX {
|
||||
mapX[x] = 2 * idx
|
||||
}
|
||||
for idx, y := range sortedY {
|
||||
mapY[y] = 2 * idx
|
||||
}
|
||||
return sortedX, sortedY, mapX, mapY
|
||||
}
|
||||
|
||||
func drawBoundary(grid [][]bool, points []Point, mapX, mapY map[int]int) {
|
||||
for idx := range points {
|
||||
current, next := points[idx], points[(idx+1)%len(points)]
|
||||
cx1, cy1 := mapX[current.x], mapY[current.y]
|
||||
cx2, cy2 := mapX[next.x], mapY[next.y]
|
||||
|
||||
if cx1 == cx2 {
|
||||
minY, maxY := minMax(cy1, cy2)
|
||||
for y := minY; y <= maxY; y++ {
|
||||
grid[cx1][y] = true
|
||||
}
|
||||
} else {
|
||||
minX, maxX := minMax(cx1, cx2)
|
||||
for x := minX; x <= maxX; x++ {
|
||||
grid[x][cy1] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func scanLineFill(grid [][]bool, points []Point, mapX, mapY map[int]int, _, height int) {
|
||||
type edge struct {
|
||||
x, yMin, yMax int
|
||||
}
|
||||
edges := make([]edge, 0, len(points))
|
||||
for idx := range points {
|
||||
current, next := points[idx], points[(idx+1)%len(points)]
|
||||
if current.x == next.x {
|
||||
minY, maxY := minMax(mapY[current.y], mapY[next.y])
|
||||
edges = append(edges, edge{mapX[current.x], minY, maxY})
|
||||
}
|
||||
}
|
||||
|
||||
for y := range height {
|
||||
crossings := make([]int, 0, len(edges))
|
||||
for _, e := range edges {
|
||||
if e.yMin <= y && y < e.yMax {
|
||||
crossings = append(crossings, e.x)
|
||||
}
|
||||
}
|
||||
slices.Sort(crossings)
|
||||
for i := 0; i < len(crossings)-1; i += 2 {
|
||||
for x := crossings[i]; x <= crossings[i+1]; x++ {
|
||||
grid[x][y] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func forceEmptyGaps(grid [][]bool, sortedX, sortedY []int, width, height int) {
|
||||
for idx := 0; idx < len(sortedX)-1; idx++ {
|
||||
if sortedX[idx+1] == sortedX[idx]+1 {
|
||||
cx := 2*idx + 1
|
||||
for y := range height {
|
||||
grid[cx][y] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
for idx := 0; idx < len(sortedY)-1; idx++ {
|
||||
if sortedY[idx+1] == sortedY[idx]+1 {
|
||||
cy := 2*idx + 1
|
||||
for x := range width {
|
||||
grid[x][cy] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func buildPrefixSum(grid [][]bool, width, height int) [][]int {
|
||||
sum := make([][]int, width+1)
|
||||
for idx := range sum {
|
||||
sum[idx] = make([]int, height+1)
|
||||
}
|
||||
for i := range width {
|
||||
for j := range height {
|
||||
value := 0
|
||||
if grid[i][j] {
|
||||
value = 1
|
||||
}
|
||||
sum[i+1][j+1] = value + sum[i][j+1] + sum[i+1][j] - sum[i][j]
|
||||
}
|
||||
}
|
||||
return sum
|
||||
}
|
||||
|
||||
func getSum(sum [][]int, x1, y1, x2, y2 int) int {
|
||||
return sum[x2+1][y2+1] - sum[x1][y2+1] - sum[x2+1][y1] + sum[x1][y1]
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
points := parsePoints(data)
|
||||
maxArea := 0
|
||||
|
||||
for i := range points {
|
||||
for j := i + 1; j < len(points); j++ {
|
||||
dx := abs(points[i].x - points[j].x)
|
||||
dy := abs(points[i].y - points[j].y)
|
||||
|
||||
if area := (dx + 1) * (dy + 1); area > maxArea {
|
||||
maxArea = area
|
||||
}
|
||||
}
|
||||
}
|
||||
return maxArea
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
points := parsePoints(data)
|
||||
sortedX, sortedY, mapX, mapY := compressCoordinates(points)
|
||||
|
||||
width, height := 2*len(sortedX), 2*len(sortedY)
|
||||
grid := make([][]bool, width)
|
||||
for idx := range grid {
|
||||
grid[idx] = make([]bool, height)
|
||||
}
|
||||
|
||||
drawBoundary(grid, points, mapX, mapY)
|
||||
scanLineFill(grid, points, mapX, mapY, width, height)
|
||||
forceEmptyGaps(grid, sortedX, sortedY, width, height)
|
||||
|
||||
sum := buildPrefixSum(grid, width, height)
|
||||
|
||||
compressedPoints := make([]Point, len(points))
|
||||
for idx, point := range points {
|
||||
compressedPoints[idx] = Point{mapX[point.x], mapY[point.y]}
|
||||
}
|
||||
|
||||
maxArea := 0
|
||||
for i := range points {
|
||||
for j := i + 1; j < len(points); j++ {
|
||||
p1, p2 := points[i], points[j]
|
||||
dx := abs(p1.x - p2.x)
|
||||
dy := abs(p1.y - p2.y)
|
||||
|
||||
if dx == 0 || dy == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
area := (dx + 1) * (dy + 1)
|
||||
if area <= maxArea {
|
||||
continue
|
||||
}
|
||||
|
||||
cx1, cy1 := compressedPoints[i].x, compressedPoints[i].y
|
||||
cx2, cy2 := compressedPoints[j].x, compressedPoints[j].y
|
||||
minCX, maxCX := minMax(cx1, cx2)
|
||||
minCY, maxCY := minMax(cy1, cy2)
|
||||
|
||||
totalCells := (maxCX - minCX + 1) * (maxCY - minCY + 1)
|
||||
if getSum(sum, minCX, minCY, maxCX, maxCY) == totalCells {
|
||||
maxArea = area
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return maxArea
|
||||
}
|
||||
30
internal/2025/DayNine/code_test.go
Normal file
30
internal/2025/DayNine/code_test.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package daynine
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"7,1",
|
||||
"11,1",
|
||||
"11,7",
|
||||
"9,7",
|
||||
"9,5",
|
||||
"2,5",
|
||||
"2,3",
|
||||
"7,3",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 50
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 24
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
106
internal/2025/DaySeven/code.go
Normal file
106
internal/2025/DaySeven/code.go
Normal file
@@ -0,0 +1,106 @@
|
||||
package dayseven
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2025D7", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
type Position struct {
|
||||
row int
|
||||
column int
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func findStart(data []string) (int, int) {
|
||||
for row := range data {
|
||||
if column := strings.IndexByte(data[row], 'S'); column != -1 {
|
||||
return row, column
|
||||
}
|
||||
}
|
||||
return -1, -1
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
rows, columns := len(data), len(data[0])
|
||||
startRow, startColumn := findStart(data)
|
||||
|
||||
queue := []Position{{startRow, startColumn}}
|
||||
activated := make(map[Position]bool)
|
||||
splits := 0
|
||||
|
||||
for len(queue) > 0 {
|
||||
current := queue[0]
|
||||
queue = queue[1:]
|
||||
|
||||
row := current.row + 1
|
||||
column := current.column
|
||||
|
||||
for row < rows && data[row][column] != '^' {
|
||||
row++
|
||||
}
|
||||
|
||||
if row < rows {
|
||||
splitPosition := Position{row, column}
|
||||
if !activated[splitPosition] {
|
||||
activated[splitPosition] = true
|
||||
splits++
|
||||
|
||||
if column > 0 {
|
||||
queue = append(queue, Position{row, column - 1})
|
||||
}
|
||||
if column < columns-1 {
|
||||
queue = append(queue, Position{row, column + 1})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return splits
|
||||
}
|
||||
|
||||
func PartTwo(input []string) int {
|
||||
rows, columns := len(input), len(input[0])
|
||||
startRow, startColumn := findStart(input)
|
||||
|
||||
cache := make(map[Position]int)
|
||||
|
||||
var countTimelines func(row, column int) int
|
||||
countTimelines = func(row, column int) int {
|
||||
position := Position{row, column}
|
||||
if count, exists := cache[position]; exists {
|
||||
return count
|
||||
}
|
||||
|
||||
r, c := row+1, column
|
||||
for r < rows && input[r][c] != '^' {
|
||||
r++
|
||||
}
|
||||
|
||||
if r == rows {
|
||||
return 1
|
||||
}
|
||||
|
||||
total := 0
|
||||
if c > 0 {
|
||||
total += countTimelines(r, c-1)
|
||||
}
|
||||
if c < columns-1 {
|
||||
total += countTimelines(r, c+1)
|
||||
}
|
||||
|
||||
cache[position] = total
|
||||
return total
|
||||
}
|
||||
|
||||
return countTimelines(startRow, startColumn)
|
||||
}
|
||||
38
internal/2025/DaySeven/code_test.go
Normal file
38
internal/2025/DaySeven/code_test.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package dayseven
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
".......S.......",
|
||||
"...............",
|
||||
".......^.......",
|
||||
"...............",
|
||||
"......^.^......",
|
||||
"...............",
|
||||
".....^.^.^.....",
|
||||
"...............",
|
||||
"....^.^...^....",
|
||||
"...............",
|
||||
"...^.^...^.^...",
|
||||
"...............",
|
||||
"..^...^.....^..",
|
||||
"...............",
|
||||
".^.^.^.^.^...^.",
|
||||
"...............",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 21
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 40
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
174
internal/2025/DaySix/code.go
Normal file
174
internal/2025/DaySix/code.go
Normal file
@@ -0,0 +1,174 @@
|
||||
package daysix
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2025D6", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(strings.TrimRight(string(content), "\n"), "\n")
|
||||
}
|
||||
|
||||
func transpose(lines []string) []string {
|
||||
maxWidth := 0
|
||||
for _, line := range lines {
|
||||
if len(line) > maxWidth {
|
||||
maxWidth = len(line)
|
||||
}
|
||||
}
|
||||
|
||||
transposed := make([]string, maxWidth)
|
||||
for column := 0; column < maxWidth; column++ {
|
||||
var builder strings.Builder
|
||||
for _, line := range lines {
|
||||
if column < len(line) {
|
||||
builder.WriteByte(line[column])
|
||||
} else {
|
||||
builder.WriteByte(' ')
|
||||
}
|
||||
}
|
||||
transposed[column] = builder.String()
|
||||
}
|
||||
|
||||
return transposed
|
||||
}
|
||||
|
||||
func isSpaceColumn(column string) bool {
|
||||
return strings.TrimSpace(column) == ""
|
||||
}
|
||||
|
||||
func extractRowFromColumns(transposed []string, row, startColumn, endColumn int) string {
|
||||
var builder strings.Builder
|
||||
for column := startColumn; column <= endColumn && column < len(transposed); column++ {
|
||||
if row < len(transposed[column]) {
|
||||
builder.WriteByte(transposed[column][row])
|
||||
} else {
|
||||
builder.WriteByte(' ')
|
||||
}
|
||||
}
|
||||
return builder.String()
|
||||
}
|
||||
|
||||
func extractNumbers(transposed []string, startColumn, endColumn, operationRow int) []int {
|
||||
numbers := make([]int, 0)
|
||||
for row := range operationRow {
|
||||
rowStr := extractRowFromColumns(transposed, row, startColumn, endColumn)
|
||||
trimmed := strings.TrimSpace(rowStr)
|
||||
fields := strings.FieldsSeq(trimmed)
|
||||
for field := range fields {
|
||||
if number, err := strconv.Atoi(field); err == nil {
|
||||
numbers = append(numbers, number)
|
||||
}
|
||||
}
|
||||
}
|
||||
return numbers
|
||||
}
|
||||
|
||||
func extractNumberFromColumn(column string, operationRow int) (int, bool) {
|
||||
numberStr := strings.Map(func(r rune) rune {
|
||||
if r >= '0' && r <= '9' {
|
||||
return r
|
||||
}
|
||||
return -1
|
||||
}, column[:min(operationRow, len(column))])
|
||||
number, _ := strconv.Atoi(numberStr)
|
||||
return number, true
|
||||
}
|
||||
|
||||
func extractOperation(segment string) byte {
|
||||
if idx := strings.IndexAny(segment, "+*"); idx != -1 {
|
||||
return segment[idx]
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func applyOperation(numbers []int, operation byte) int {
|
||||
result := numbers[0]
|
||||
if operation == '+' {
|
||||
for idx := 1; idx < len(numbers); idx++ {
|
||||
result += numbers[idx]
|
||||
}
|
||||
} else {
|
||||
for idx := 1; idx < len(numbers); idx++ {
|
||||
result *= numbers[idx]
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
operationRow := len(data) - 1
|
||||
transposed := transpose(data)
|
||||
|
||||
total := 0
|
||||
column := 0
|
||||
for column < len(transposed) {
|
||||
if isSpaceColumn(transposed[column]) {
|
||||
column++
|
||||
continue
|
||||
}
|
||||
|
||||
startColumn := column
|
||||
for column < len(transposed) && !isSpaceColumn(transposed[column]) {
|
||||
column++
|
||||
}
|
||||
endColumn := column - 1
|
||||
|
||||
numbers := extractNumbers(transposed, startColumn, endColumn, operationRow)
|
||||
operationRowStr := extractRowFromColumns(transposed, operationRow, startColumn, endColumn)
|
||||
operation := extractOperation(operationRowStr)
|
||||
|
||||
if len(numbers) > 0 && operation != 0 {
|
||||
result := applyOperation(numbers, operation)
|
||||
total += result
|
||||
}
|
||||
}
|
||||
|
||||
return total
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
operationRow := len(data) - 1
|
||||
transposed := transpose(data)
|
||||
|
||||
total := 0
|
||||
column := len(transposed) - 1
|
||||
|
||||
for column >= 0 {
|
||||
if isSpaceColumn(transposed[column]) {
|
||||
column--
|
||||
continue
|
||||
}
|
||||
|
||||
endColumn := column
|
||||
for column >= 0 && !isSpaceColumn(transposed[column]) {
|
||||
column--
|
||||
}
|
||||
startColumn := column + 1
|
||||
|
||||
numbers := make([]int, 0)
|
||||
for column := startColumn; column <= endColumn && column < len(transposed); column++ {
|
||||
if number, ok := extractNumberFromColumn(transposed[column], operationRow); ok {
|
||||
numbers = append(numbers, number)
|
||||
}
|
||||
}
|
||||
|
||||
operationRowStr := extractRowFromColumns(transposed, operationRow, startColumn, endColumn)
|
||||
operation := extractOperation(operationRowStr)
|
||||
|
||||
if len(numbers) > 0 && operation != 0 {
|
||||
result := applyOperation(numbers, operation)
|
||||
total += result
|
||||
}
|
||||
}
|
||||
|
||||
return total
|
||||
}
|
||||
26
internal/2025/DaySix/code_test.go
Normal file
26
internal/2025/DaySix/code_test.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package daysix
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"123 328 51 64 ",
|
||||
" 45 64 387 23 ",
|
||||
" 6 98 215 314",
|
||||
"* + * + ",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 4277556
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 3263827
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
91
internal/2025/DayTen/code.go
Normal file
91
internal/2025/DayTen/code.go
Normal file
@@ -0,0 +1,91 @@
|
||||
package dayten
|
||||
|
||||
import (
|
||||
"advent-of-code/internal/registry"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2025D10", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(string(content), "\n")
|
||||
}
|
||||
|
||||
func parseMachine(line string) ([]bool, [][]int) {
|
||||
bracketRegex := regexp.MustCompile(`\[([.#]+)\]`)
|
||||
parenthesisRegex := regexp.MustCompile(`\(([^)]+)\)`)
|
||||
|
||||
bracketMatch := bracketRegex.FindStringSubmatch(line)
|
||||
targetString := bracketMatch[1]
|
||||
target := make([]bool, len(targetString))
|
||||
for idx, char := range targetString {
|
||||
target[idx] = char == '#'
|
||||
}
|
||||
|
||||
parenthesisMatches := parenthesisRegex.FindAllStringSubmatch(line, -1)
|
||||
buttons := make([][]int, 0, len(parenthesisMatches))
|
||||
|
||||
for _, match := range parenthesisMatches {
|
||||
buttonString := match[1]
|
||||
parts := strings.Split(buttonString, ",")
|
||||
button := make([]int, 0, len(parts))
|
||||
for _, part := range parts {
|
||||
light, _ := strconv.Atoi(part)
|
||||
button = append(button, light)
|
||||
}
|
||||
buttons = append(buttons, button)
|
||||
}
|
||||
|
||||
return target, buttons
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
total := 0
|
||||
for _, line := range data {
|
||||
target, buttons := parseMachine(line)
|
||||
numberOfLights := len(target)
|
||||
numberOfButtons := len(buttons)
|
||||
minimumPresses := numberOfButtons + 1
|
||||
|
||||
for mask := 0; mask < (1 << numberOfButtons); mask++ {
|
||||
lights := make([]bool, numberOfLights)
|
||||
presses := 0
|
||||
|
||||
for buttonIdx := range numberOfButtons {
|
||||
if mask&(1<<buttonIdx) != 0 {
|
||||
presses++
|
||||
for _, light := range buttons[buttonIdx] {
|
||||
if light < numberOfLights {
|
||||
lights[light] = !lights[light]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
matches := true
|
||||
for idx := range numberOfLights {
|
||||
if lights[idx] != target[idx] {
|
||||
matches = false
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if matches && presses < minimumPresses {
|
||||
minimumPresses = presses
|
||||
}
|
||||
}
|
||||
total += minimumPresses
|
||||
}
|
||||
|
||||
return total
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
return 0
|
||||
}
|
||||
25
internal/2025/DayTen/code_test.go
Normal file
25
internal/2025/DayTen/code_test.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package dayten
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}",
|
||||
"[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}",
|
||||
"[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 7
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 33
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
72
internal/2025/DayThree/code.go
Normal file
72
internal/2025/DayThree/code.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package daythree
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2025D3", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) [][]int {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
lines := strings.Split(string(content), "\n")
|
||||
var data [][]int
|
||||
for _, line := range lines {
|
||||
var bank []int
|
||||
for _, char := range line {
|
||||
bank = append(bank, int(char-'0'))
|
||||
}
|
||||
data = append(data, bank)
|
||||
}
|
||||
return data
|
||||
}
|
||||
|
||||
func PartOne(data [][]int) int {
|
||||
total := 0
|
||||
for _, bank := range data {
|
||||
maxAfter := make([]int, len(bank))
|
||||
|
||||
for idx := len(bank) - 2; idx >= 0; idx-- {
|
||||
maxAfter[idx] = max(maxAfter[idx+1], bank[idx+1])
|
||||
}
|
||||
|
||||
maxJoltage := 0
|
||||
|
||||
for idx := 0; idx < len(bank)-1; idx++ {
|
||||
joltage := bank[idx]*10 + maxAfter[idx]
|
||||
maxJoltage = max(maxJoltage, joltage)
|
||||
}
|
||||
total += maxJoltage
|
||||
}
|
||||
return total
|
||||
}
|
||||
|
||||
func PartTwo(data [][]int) int {
|
||||
total := 0
|
||||
for _, bank := range data {
|
||||
var joltage int
|
||||
start := 0
|
||||
|
||||
for position := range 12 {
|
||||
remaining := 12 - position - 1
|
||||
maxIdx := start
|
||||
maxValue := bank[start]
|
||||
|
||||
for idx := start; idx < len(bank)-remaining; idx++ {
|
||||
if bank[idx] > maxValue {
|
||||
maxValue = bank[idx]
|
||||
maxIdx = idx
|
||||
}
|
||||
}
|
||||
|
||||
joltage = joltage*10 + maxValue
|
||||
start = maxIdx + 1
|
||||
}
|
||||
total += joltage
|
||||
}
|
||||
return total
|
||||
}
|
||||
26
internal/2025/DayThree/code_test.go
Normal file
26
internal/2025/DayThree/code_test.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package daythree
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = [][]int{
|
||||
{9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1},
|
||||
{8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9},
|
||||
{2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 7, 8},
|
||||
{8, 1, 8, 1, 8, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1},
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 357
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 3121910778619
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
87
internal/2025/DayTwo/code.go
Normal file
87
internal/2025/DayTwo/code.go
Normal file
@@ -0,0 +1,87 @@
|
||||
package daytwo
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"advent-of-code/internal/registry"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registry.Register("2025D2", ParseInput, PartOne, PartTwo)
|
||||
}
|
||||
|
||||
func ParseInput(filepath string) []string {
|
||||
content, _ := os.ReadFile(filepath)
|
||||
return strings.Split(strings.TrimSpace(string(content)), "\n")
|
||||
}
|
||||
|
||||
func PartOne(data []string) int {
|
||||
sum := 0
|
||||
for _, line := range data {
|
||||
for newRange := range strings.SplitSeq(line, ",") {
|
||||
parts := strings.Split(newRange, "-")
|
||||
start, _ := strconv.Atoi(parts[0])
|
||||
end, _ := strconv.Atoi(parts[1])
|
||||
for id := start; id <= end; id++ {
|
||||
sID := strconv.Itoa(id)
|
||||
if len(sID)%2 == 0 {
|
||||
half := len(sID) / 2
|
||||
if sID[:half] == sID[half:] {
|
||||
sum += id
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return sum
|
||||
}
|
||||
|
||||
func PartTwo(data []string) int {
|
||||
totalSum := 0
|
||||
for _, line := range data {
|
||||
for rangeSpec := range strings.SplitSeq(line, ",") {
|
||||
rangeStartStr, rangeEndStr, _ := strings.Cut(rangeSpec, "-")
|
||||
rangeStart, _ := strconv.Atoi(rangeStartStr)
|
||||
rangeEnd, _ := strconv.Atoi(rangeEndStr)
|
||||
|
||||
seenNumbers := make(map[int]bool)
|
||||
maxDigits := len(rangeEndStr)
|
||||
|
||||
var generatePatterns func(string, int, int)
|
||||
generatePatterns = func(currentPattern string, targetPatternLength, currentDepth int) {
|
||||
if currentDepth == targetPatternLength {
|
||||
repeated := currentPattern + currentPattern
|
||||
for len(repeated) <= maxDigits {
|
||||
number, err := strconv.Atoi(repeated)
|
||||
if err != nil || number > rangeEnd {
|
||||
break
|
||||
}
|
||||
if number >= rangeStart && !seenNumbers[number] {
|
||||
totalSum += number
|
||||
seenNumbers[number] = true
|
||||
}
|
||||
repeated += currentPattern
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
minDigit := 0
|
||||
if currentDepth == 0 {
|
||||
minDigit = 1
|
||||
}
|
||||
|
||||
for digit := minDigit; digit <= 9; digit++ {
|
||||
extendedPattern := currentPattern + strconv.Itoa(digit)
|
||||
generatePatterns(extendedPattern, targetPatternLength, currentDepth+1)
|
||||
}
|
||||
}
|
||||
|
||||
for patternLength := 1; patternLength <= maxDigits/2; patternLength++ {
|
||||
generatePatterns("", patternLength, 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
return totalSum
|
||||
}
|
||||
33
internal/2025/DayTwo/code_test.go
Normal file
33
internal/2025/DayTwo/code_test.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package daytwo
|
||||
|
||||
import "testing"
|
||||
|
||||
var testInput = []string{
|
||||
"11-22",
|
||||
"95-115",
|
||||
"998-1012",
|
||||
"1188511880-1188511890",
|
||||
"222220-222224",
|
||||
"1698522-1698528",
|
||||
"446443-446449",
|
||||
"38593856-38593862",
|
||||
"565653-565659",
|
||||
"824824821-824824827",
|
||||
"2121212118-2121212124",
|
||||
}
|
||||
|
||||
func TestPartOne(t *testing.T) {
|
||||
expected := 1227775554
|
||||
got := PartOne(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartOne() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartTwo(t *testing.T) {
|
||||
expected := 4174379265
|
||||
got := PartTwo(testInput)
|
||||
if got != expected {
|
||||
t.Errorf("PartTwo() = %d, want %d", got, expected)
|
||||
}
|
||||
}
|
||||
14
internal/2025/register.go
Normal file
14
internal/2025/register.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package year2025
|
||||
|
||||
import (
|
||||
_ "advent-of-code/internal/2025/DayEight"
|
||||
_ "advent-of-code/internal/2025/DayFive"
|
||||
_ "advent-of-code/internal/2025/DayFour"
|
||||
_ "advent-of-code/internal/2025/DayNine"
|
||||
_ "advent-of-code/internal/2025/DayOne"
|
||||
_ "advent-of-code/internal/2025/DaySeven"
|
||||
_ "advent-of-code/internal/2025/DaySix"
|
||||
_ "advent-of-code/internal/2025/DayTen"
|
||||
_ "advent-of-code/internal/2025/DayThree"
|
||||
_ "advent-of-code/internal/2025/DayTwo"
|
||||
)
|
||||
300
internal/data/2015/DayEight/input.txt
Normal file
300
internal/data/2015/DayEight/input.txt
Normal file
@@ -0,0 +1,300 @@
|
||||
"\xa8br\x8bjr\""
|
||||
"nq"
|
||||
"zjrfcpbktjmrzgsz\xcaqsc\x03n\"huqab"
|
||||
"daz\\zyyxddpwk"
|
||||
"draes\xa2n\\g\x27ek\"lj\"\\viqych"
|
||||
"nnx\\krnrfomdnt\x2flbl\xd2xpo\"cp\"k"
|
||||
"kwdaapalq"
|
||||
"u\"ptk"
|
||||
"ckhorczuiudfjmmcc\\u\"wozqxibsfjma"
|
||||
"ydctdrxat\"pd\"lwi\"bjesevfw\xe8"
|
||||
"v\"\xa8rrzep\"\"r"
|
||||
"nbydghkfvmq\\\xe0\"lfsrsvlsj\"i\x61liif"
|
||||
"jsas\"u"
|
||||
"odipikxlo"
|
||||
"\"rnubsgwltqkbsu\"pcpcs"
|
||||
"eitk\\f\\mhcqqoym\\ji"
|
||||
"vnedc"
|
||||
"\"lhcaurdqzyjyu"
|
||||
"haxzsa\"zcn\"y\"foclgtjfcnv\"m\x68krc"
|
||||
"\"eoeggg\"tmiydvcay\"vfavc"
|
||||
"snqvyqoncwxcvwbdktoywch"
|
||||
"rnfgjsyr\xd5wacy"
|
||||
"ik\"hebrpvsts"
|
||||
"txw"
|
||||
"\x15pxtdkogd\"urbm\"gevhh\"nxr\x3erxtk"
|
||||
"cetqtcy"
|
||||
"inleep\\mgl"
|
||||
"uflwbxvww\x2cxzezqnaply\"yh\"qlllzk"
|
||||
"eepak\"xqtedzt"
|
||||
"na\x61qzfieafvyrsnwkssznohjmc"
|
||||
"yceaonylz\xc1\\jrlbbkzwsidfi"
|
||||
"ybqafngkcqpbp"
|
||||
"\xaft"
|
||||
"yidjpaobqydso"
|
||||
"ju\\ldxig\\lrdrhjcmm\x77rc"
|
||||
"tylacqeslnwj\x48ds\"tjxa"
|
||||
"efbfm"
|
||||
"\\fxkgoprgdcjgyajykg\\dtbrz"
|
||||
"eujvva"
|
||||
"h\x7acwfpikme\\vwthyvrqdnx\""
|
||||
"rbpbrxm\\\"\"\"voxx"
|
||||
"ykiw\"tkb\\lforu\"rsf\\tf\"x\"rqti"
|
||||
"e\\wh\x77aqeugiq\\ihhfqfuaij"
|
||||
"g\"t\\o"
|
||||
"nxzo\"hf\\xp"
|
||||
"dxiaqfo\xea"
|
||||
"kali\\zczhiqkqzybjj\"fgdjnik"
|
||||
"zdkgrqmdv"
|
||||
"bimxim\xb6lrwsaj\"ui\"a"
|
||||
"\"rrznitibgx\\olpsjmjqzctxaubdifsq"
|
||||
"zb\"khzixaacmhuzmlymoformipdzml"
|
||||
"qfwi"
|
||||
"hjwsxfpphttjy\"\"zixais\xbblgnqfto"
|
||||
"puj\\qmyu\"nqgaqfthbwjokbmrpbhpi"
|
||||
"cyxdpkh\\\""
|
||||
"q"
|
||||
"m"
|
||||
"tbxdzzllarlo"
|
||||
"gbtys"
|
||||
"gytilk\\vlqxvcuutjunrqc"
|
||||
"uugkvcuzan\\eyhb"
|
||||
"yaxr\"genlbgw\"\\uc"
|
||||
"nrgecjeip\\sjdvgqaqxwsqactopu"
|
||||
"pu\"r\"txpyrkfny\\zmwfneyvwmnkkdipv"
|
||||
"jm\xa3bhwvq"
|
||||
"qxojmnml\"w\x9airr"
|
||||
"xbzsuihs\x4dcedy\xaclrhgii\\\""
|
||||
"drgjirusrekrwmvxllwdm"
|
||||
"\x28hfxnfpycmpnkku\"csuf\xaarxlqyg\"x"
|
||||
"\"zvz\\rmg\"\\sxxoifffyqfyn\"iq\"ps"
|
||||
"\"z"
|
||||
"zbwkmk\"sgzos\x93gtc\""
|
||||
"bvm\x28aa\\\\\"pywuhaniox\\z\\hbp\xd7mold"
|
||||
"aszgvsyna"
|
||||
"qf\"vdwuss"
|
||||
"lnohni\"qwiacjsjegstlbfq\\kyjhyd"
|
||||
"c\\naawulxlqplnacvytspry\xf5ytxxqq"
|
||||
"razwqmsqgbaaxcd\\f"
|
||||
"radggyrjrg\"zx"
|
||||
"\"pu\x11t\\ajcjuieinlkvya"
|
||||
"veggiskh"
|
||||
"eglfhjxiet\"kouqfskwsy\"hpthsldel"
|
||||
"mv\xc1b\"f\\shrssnjwcpmurepdxdlcj"
|
||||
"dlayjd\"suvzotgdtc"
|
||||
"\xa9pvxeopn"
|
||||
"lpplsaxy\"oiwaq"
|
||||
"hqwh\\lusv"
|
||||
"hykykwlx\"\xa5atkgh\\d\x63dff"
|
||||
"vfktanpjy\"xxetc"
|
||||
"dnhwkgjnsmsswfuelvihvjl\"jtf"
|
||||
"x\"dwvzra\"nbbsewftehczgbvfzd\"rau"
|
||||
"csfi\"mzejnjqkqupwadrgti\"von"
|
||||
"xckf\xf7xsm\\pgvlpetjndpyblais\\z"
|
||||
"yecy\x6fuj\x58bwpgeuiw\"mdu"
|
||||
"fgb"
|
||||
"c\\lx\x3efthet\xfdelgvwvpem"
|
||||
"kgyrmarvfwjinlowt"
|
||||
"yzte"
|
||||
"vc\"z"
|
||||
"sxevqfzmmdwsuu\""
|
||||
"fxbaercmcy\xb6md"
|
||||
"f"
|
||||
"m\x44gqbcppho\\b"
|
||||
"gtafr\x57m\x11jy\"\"erwmmpiwjkbckuw"
|
||||
"ufdjt\"kssprzxqixzxmq\x58q"
|
||||
"yzbyo\"lfdbyaxexyfbnyv\\\xe8xmre"
|
||||
"u\x43ntr\\\\byyfjr\"iveujvnwsqbnpuvrta"
|
||||
"us\xf6bai"
|
||||
"c\\edh"
|
||||
"tzckolphexfq\\\x23\xfbdqv\\\"m"
|
||||
"yjafhbvhhj\x1b\"bplb"
|
||||
"\"o"
|
||||
"rubahvmp\""
|
||||
"qmkukrnrmqumh"
|
||||
"wdpxyvyidhwjf\\nabbijwhr\xc5bksvy\"p"
|
||||
"u\"prlpg\""
|
||||
"nsvcquyxbwilsxxemf\xd9leq"
|
||||
"y\xcetxuafl"
|
||||
"it"
|
||||
"kwdlysf\\xjpelae"
|
||||
"viwh\x58wpjjlnvryuti\x2chngrx\\nhtkui"
|
||||
"vhn\x9ehre\xc3ncsqbozms\"nl"
|
||||
"ytc\xa3mgeeogjcqavmmmd"
|
||||
"xzlexlitseozoxtpzzutfq"
|
||||
"cish\x07lmovj"
|
||||
"ekbflwqzaiivdr\"pq\\azrfbntqwkn"
|
||||
"uc\"xdbegmlmhksofzohavtrnxf"
|
||||
"xfdnrdqdrcjzbe"
|
||||
"ndg\"ckgrpisib\"rg\"p\\lmpfzlssnvk"
|
||||
"witfjwpbyyzlop"
|
||||
"zonlww\"emrbcsgdtrg\"rjzy\x64zqntlw"
|
||||
"dvgb\"zn\\vrbzema\"ckmd"
|
||||
"\\vdlmxhlvldk\"pmzazeip"
|
||||
"\"\"r"
|
||||
"rsntinv"
|
||||
"iy"
|
||||
"lr\x20efh"
|
||||
"csgexlb\"zqdavlxxhtdbh\"\"\x0fkpvhiphm"
|
||||
"ouwhp\"ogbft"
|
||||
"cm\\ckltng\"dw\x8brf\xf0eppgckd"
|
||||
"zmnlsgalhpkejsizfsbtnfliu\"nhc"
|
||||
"pnrkaayqvwpdjbhcrbb\"yfeq\"aq"
|
||||
"ozh\\hoxow\x2csrtr\\r\""
|
||||
"bqxabj\"u\\s"
|
||||
"cpsjti\"gy"
|
||||
"aa\"p\\nki\\ajijkqev"
|
||||
"q\"\"lfdentjgd\\"
|
||||
"bmokvpoebutfki"
|
||||
"pielvcbne\xf6efvzxn"
|
||||
"kx"
|
||||
"zlgmqagcrbhrwtwtmmg"
|
||||
"aiyhmntcqjbpv\xb5hhswxbryoedvos"
|
||||
"tdpaxrb"
|
||||
"fu\"\x7dttkyvhrlwko"
|
||||
"oirc\\\"cqlnqffjqt\\k"
|
||||
"edxlia\\tcyby"
|
||||
"jpeybgwfayerfrfbvfog\"ol"
|
||||
"ysr"
|
||||
"bzwzilgwfugjk"
|
||||
"tlcc\x75nukvwjgftetjcs\xaecwc"
|
||||
"dsqssa\"vzrf\"sewbp\\ahhlmhbeihlh"
|
||||
"qtgmjck\"n\"guki\"gmdivwqxismqj"
|
||||
"\"f"
|
||||
"wuorvlovucngbzdszqpikyk"
|
||||
"dfrdsacoukmgvhbq\"\"iwto"
|
||||
"\"ey\"ch\\wcgioe\\\"ouvligmsw"
|
||||
"ciqlszzgs"
|
||||
"\\tzyrkaoi\"sopjaq"
|
||||
"lmtnv"
|
||||
"ar\"fqoroigiertjjlm\"ymgi\\kkjewsxd"
|
||||
"wehcimlvudpxtamdn\"rwy"
|
||||
"hr\"zvrwthr\"vruzqfrldn\"b"
|
||||
"sggekodkiwvym\"mhsco"
|
||||
"ltlkfbrrdvk\\"
|
||||
"uut\"sfjnz\"\\ef"
|
||||
"hxilg\\"
|
||||
"zsredsiwlzrpedibn"
|
||||
"vtfi"
|
||||
"\\h"
|
||||
"qekfrc\xf6wduodbwrguqcng\\n"
|
||||
"\"lljlfdrxftwidn\\pkv\xd9ij"
|
||||
"mrvgqynpehkliuijlpp"
|
||||
"gikjph"
|
||||
"yoxcdrdt\"wbaurnyhoyxoihu"
|
||||
"onmomwuxuammbzxe"
|
||||
"rnrr\\twviz\x61gqaljr\x0dmtw"
|
||||
"r\"vupaoi"
|
||||
"l"
|
||||
"sei"
|
||||
"jwxtdtbkd\\kxd"
|
||||
"\x22v\\"
|
||||
"ahd"
|
||||
"j\"bjqxs"
|
||||
"\\i\x24gglxub\\nzsajokt"
|
||||
"lviwpu\"uxdlh\\zuy\"xqy\"ytdzlx\"r"
|
||||
"kptfmys"
|
||||
"fwxzikfhczkjwyjszqdbkepaeellc"
|
||||
"nlqpsvbrbd\\ns"
|
||||
"qryuwkjiodw\"\"vaqyq\"dmyifm"
|
||||
"tw\x15kdmaudjl\\zorhp\"alwh"
|
||||
"aatrvczesykekkjfyb\"kb"
|
||||
"usqcutbqbxxhucwxo\xc1ltb\"j\"bghjcvws"
|
||||
"ilhsrnzxkz"
|
||||
"bianqfdfdhvw"
|
||||
"hqibqs\x7ax\"qoxqoaqtcsz"
|
||||
"htxtoojbbauztwxuiq\\ngyfy\\obzc"
|
||||
"rxn\\moxlj"
|
||||
"mtus\x84erh\"dbe"
|
||||
"asx\x50huvsitcxadt"
|
||||
"\"bugggtnrc\"\"kl\"hmpu\x83hqrvhpo"
|
||||
"ewisbp\"\"vuzf\\w\x5fvalszdhl"
|
||||
"scusplpwxfnxu\x57\"zynpn\x99xerc\\ri"
|
||||
"m\\kinmkke\x0cl"
|
||||
"xhuzit\x7fd"
|
||||
"kfbo\x04\x50ruqirn"
|
||||
"t\"\"xpbdscmdoug"
|
||||
"punvpsgnbgyxe\"sptmpz"
|
||||
"bxukkazijr"
|
||||
"nxyrcdaoo\"rjkk\"wntehcvcip\"vrd"
|
||||
"rdpvqskmihqaw"
|
||||
"p\\gwdhtqnpgthod"
|
||||
"nwnuf\"\"yebycearom\"nqym\"\xd4sii\xccle"
|
||||
"alda\"ptspo\"wkkv\"zoi\"hkb\"vnntyd"
|
||||
"ixpgpfzbqv"
|
||||
"znui\"\\fzn\x03qozabh\"rva\"pv\x67"
|
||||
"e\"zswmwuk"
|
||||
"hcccygwfa"
|
||||
"ngmace\\rtyllolr\"\x68bw"
|
||||
"\\c\"jyufbry\"ryo\"xpo\x26ecninfeckh\\s"
|
||||
"hdnpngtuc\"dzbvvosn\x31fwtpzbrt"
|
||||
"hesbpd\xd4"
|
||||
"dsdbstuzrdfmrnyntufs\"dmv"
|
||||
"d\xeeibcwhcvkt"
|
||||
"fvzwrsfjdqdmy\"\"v"
|
||||
"ns\"dqafz\\lkyoflnazv\"mn\x37\"o\"yj\"e"
|
||||
"dypilgbwzccayxa\"bnmuernx"
|
||||
"q\xa9ztqrhreb\"\"kxfeyodqb"
|
||||
"iz\xa5qjxqulaawuwz\"rqmpcj\\yel"
|
||||
"z\"\\pq\"\"y\x67zpjtn"
|
||||
"ifxqvivp\"kiiftdoe"
|
||||
"jxzebj\"\x35\"qr\"ecglcutuoyywqumcs\"kk"
|
||||
"q"
|
||||
"yob\x85qmpuwexptczbkrl"
|
||||
"cjiavv\"uudpozvibyycnmxhxpxmpjoz"
|
||||
"xro\\uiqyrcid"
|
||||
"nod\\k"
|
||||
"d\"neiec"
|
||||
"tqyrqvwyvmz\\pzgzzcqsqsrgbqbtapoz"
|
||||
"r\"xvocpeuxfxslgueb\x05kzyyie\"aoec"
|
||||
"\"du\\uirlhcbgv\\cjqhfreqnvn"
|
||||
"zp\x04\x15\"pbjwhrjtmiba"
|
||||
"\\cv\""
|
||||
"k\"rwnb\\hiu\"rqd\"rc\\nyakrhly"
|
||||
"klrmafjzandiddodgz"
|
||||
"xipzhqzhvlpykzcuppx"
|
||||
"zdvrvn\xd0mtfvpylbn\\\\sxcznrzugwznl"
|
||||
"ody\\pvm\"kpjiudzhxazirgxzvumeat\"o"
|
||||
"kllvhdp\"prjikzrrc\"adgpegc\\\"gk"
|
||||
"sqtpug\xbcaauxaamw"
|
||||
"wegxxrrxdvpivrqievfeokmnojsk"
|
||||
"\\bo"
|
||||
"gijhz"
|
||||
"ylowluvabwrigssdgtxdwsiorxev\xdd"
|
||||
"\""
|
||||
"ghnsrnsqtxpygikahkrl"
|
||||
"\"rcfqkbjf\"sgxg\"vnd\\rotn"
|
||||
"ap\"smgsuexjrbuqs\"mpbstogj\"x"
|
||||
"koaunz\\sgt\"opv"
|
||||
"yialiuzwix"
|
||||
"yp\"ndxgwzml\"bt"
|
||||
"lpcjxmggfsy\\szbxccarjkqzasqkb\xcfd\x0c"
|
||||
"x"
|
||||
"mgakc"
|
||||
"vjieunoh\x73fjwx"
|
||||
"erbvv\"qulsd"
|
||||
"mimycrbfhqkarmz"
|
||||
"tihfbgcszuej\"c\xfbvoqskkhbgpaddioo"
|
||||
"mziavkwrmekriqghw"
|
||||
"izk\\tnjd\\ed\\emokvjoc"
|
||||
"c\"nhbqzndro\\g"
|
||||
"usfngdo"
|
||||
"aypljdftvptt"
|
||||
"ym\"afvq\xbcc"
|
||||
"zabi\"wjpvugwhl"
|
||||
"ebvptcjqjhc\"n\"p\"dxrphegr\\"
|
||||
"mzlqqxokhye\xd9\\rffhnzs"
|
||||
"hnipqknwpsjakanuewe"
|
||||
"rqgbfcjdrmiz\"h"
|
||||
"kzzp\\z\\txmkwaouxictybwx"
|
||||
"yzmspjkqrteiydswlvb"
|
||||
"gjpxklgpzv\"txri\\hotpuiukzzzd"
|
||||
"p\"rxergtbsxmjmkeeqwvoagnki\""
|
||||
"santipvuiq"
|
||||
"\"ihjqlhtwbuy\"hdkiv\"mtiqacnf\\"
|
||||
"oliaggtqyyx"
|
||||
"fwwnpmbb"
|
||||
"yrtdrieazfxyyneo"
|
||||
"nywbv\\"
|
||||
"twc\\ehfqxhgomgrgwpxyzmnkioj"
|
||||
"qludrkkvljljd\\xvdeum\x4e"
|
||||
1
internal/data/2015/DayEleven/input.txt
Normal file
1
internal/data/2015/DayEleven/input.txt
Normal file
@@ -0,0 +1 @@
|
||||
hxbxwxba
|
||||
9
internal/data/2015/DayFourteen/input.txt
Normal file
9
internal/data/2015/DayFourteen/input.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Vixen can fly 19 km/s for 7 seconds, but then must rest for 124 seconds.
|
||||
Rudolph can fly 3 km/s for 15 seconds, but then must rest for 28 seconds.
|
||||
Donner can fly 19 km/s for 9 seconds, but then must rest for 164 seconds.
|
||||
Blitzen can fly 19 km/s for 9 seconds, but then must rest for 158 seconds.
|
||||
Comet can fly 13 km/s for 7 seconds, but then must rest for 82 seconds.
|
||||
Cupid can fly 25 km/s for 6 seconds, but then must rest for 145 seconds.
|
||||
Dasher can fly 14 km/s for 3 seconds, but then must rest for 38 seconds.
|
||||
Dancer can fly 3 km/s for 16 seconds, but then must rest for 37 seconds.
|
||||
Prancer can fly 25 km/s for 6 seconds, but then must rest for 143 seconds.
|
||||
28
internal/data/2015/DayNine/input.txt
Normal file
28
internal/data/2015/DayNine/input.txt
Normal file
@@ -0,0 +1,28 @@
|
||||
Tristram to AlphaCentauri = 34
|
||||
Tristram to Snowdin = 100
|
||||
Tristram to Tambi = 63
|
||||
Tristram to Faerun = 108
|
||||
Tristram to Norrath = 111
|
||||
Tristram to Straylight = 89
|
||||
Tristram to Arbre = 132
|
||||
AlphaCentauri to Snowdin = 4
|
||||
AlphaCentauri to Tambi = 79
|
||||
AlphaCentauri to Faerun = 44
|
||||
AlphaCentauri to Norrath = 147
|
||||
AlphaCentauri to Straylight = 133
|
||||
AlphaCentauri to Arbre = 74
|
||||
Snowdin to Tambi = 105
|
||||
Snowdin to Faerun = 95
|
||||
Snowdin to Norrath = 48
|
||||
Snowdin to Straylight = 88
|
||||
Snowdin to Arbre = 7
|
||||
Tambi to Faerun = 68
|
||||
Tambi to Norrath = 134
|
||||
Tambi to Straylight = 107
|
||||
Tambi to Arbre = 40
|
||||
Faerun to Norrath = 11
|
||||
Faerun to Straylight = 66
|
||||
Faerun to Arbre = 144
|
||||
Norrath to Straylight = 115
|
||||
Norrath to Arbre = 135
|
||||
Straylight to Arbre = 127
|
||||
339
internal/data/2015/DaySeven/input.txt
Normal file
339
internal/data/2015/DaySeven/input.txt
Normal file
@@ -0,0 +1,339 @@
|
||||
af AND ah -> ai
|
||||
NOT lk -> ll
|
||||
hz RSHIFT 1 -> is
|
||||
NOT go -> gp
|
||||
du OR dt -> dv
|
||||
x RSHIFT 5 -> aa
|
||||
at OR az -> ba
|
||||
eo LSHIFT 15 -> es
|
||||
ci OR ct -> cu
|
||||
b RSHIFT 5 -> f
|
||||
fm OR fn -> fo
|
||||
NOT ag -> ah
|
||||
v OR w -> x
|
||||
g AND i -> j
|
||||
an LSHIFT 15 -> ar
|
||||
1 AND cx -> cy
|
||||
jq AND jw -> jy
|
||||
iu RSHIFT 5 -> ix
|
||||
gl AND gm -> go
|
||||
NOT bw -> bx
|
||||
jp RSHIFT 3 -> jr
|
||||
hg AND hh -> hj
|
||||
bv AND bx -> by
|
||||
er OR es -> et
|
||||
kl OR kr -> ks
|
||||
et RSHIFT 1 -> fm
|
||||
e AND f -> h
|
||||
u LSHIFT 1 -> ao
|
||||
he RSHIFT 1 -> hx
|
||||
eg AND ei -> ej
|
||||
bo AND bu -> bw
|
||||
dz OR ef -> eg
|
||||
dy RSHIFT 3 -> ea
|
||||
gl OR gm -> gn
|
||||
da LSHIFT 1 -> du
|
||||
au OR av -> aw
|
||||
gj OR gu -> gv
|
||||
eu OR fa -> fb
|
||||
lg OR lm -> ln
|
||||
e OR f -> g
|
||||
NOT dm -> dn
|
||||
NOT l -> m
|
||||
aq OR ar -> as
|
||||
gj RSHIFT 5 -> gm
|
||||
hm AND ho -> hp
|
||||
ge LSHIFT 15 -> gi
|
||||
jp RSHIFT 1 -> ki
|
||||
hg OR hh -> hi
|
||||
lc LSHIFT 1 -> lw
|
||||
km OR kn -> ko
|
||||
eq LSHIFT 1 -> fk
|
||||
1 AND am -> an
|
||||
gj RSHIFT 1 -> hc
|
||||
aj AND al -> am
|
||||
gj AND gu -> gw
|
||||
ko AND kq -> kr
|
||||
ha OR gz -> hb
|
||||
bn OR by -> bz
|
||||
iv OR jb -> jc
|
||||
NOT ac -> ad
|
||||
bo OR bu -> bv
|
||||
d AND j -> l
|
||||
bk LSHIFT 1 -> ce
|
||||
de OR dk -> dl
|
||||
dd RSHIFT 1 -> dw
|
||||
hz AND ik -> im
|
||||
NOT jd -> je
|
||||
fo RSHIFT 2 -> fp
|
||||
hb LSHIFT 1 -> hv
|
||||
lf RSHIFT 2 -> lg
|
||||
gj RSHIFT 3 -> gl
|
||||
ki OR kj -> kk
|
||||
NOT ak -> al
|
||||
ld OR le -> lf
|
||||
ci RSHIFT 3 -> ck
|
||||
1 AND cc -> cd
|
||||
NOT kx -> ky
|
||||
fp OR fv -> fw
|
||||
ev AND ew -> ey
|
||||
dt LSHIFT 15 -> dx
|
||||
NOT ax -> ay
|
||||
bp AND bq -> bs
|
||||
NOT ii -> ij
|
||||
ci AND ct -> cv
|
||||
iq OR ip -> ir
|
||||
x RSHIFT 2 -> y
|
||||
fq OR fr -> fs
|
||||
bn RSHIFT 5 -> bq
|
||||
0 -> c
|
||||
14146 -> b
|
||||
d OR j -> k
|
||||
z OR aa -> ab
|
||||
gf OR ge -> gg
|
||||
df OR dg -> dh
|
||||
NOT hj -> hk
|
||||
NOT di -> dj
|
||||
fj LSHIFT 15 -> fn
|
||||
lf RSHIFT 1 -> ly
|
||||
b AND n -> p
|
||||
jq OR jw -> jx
|
||||
gn AND gp -> gq
|
||||
x RSHIFT 1 -> aq
|
||||
ex AND ez -> fa
|
||||
NOT fc -> fd
|
||||
bj OR bi -> bk
|
||||
as RSHIFT 5 -> av
|
||||
hu LSHIFT 15 -> hy
|
||||
NOT gs -> gt
|
||||
fs AND fu -> fv
|
||||
dh AND dj -> dk
|
||||
bz AND cb -> cc
|
||||
dy RSHIFT 1 -> er
|
||||
hc OR hd -> he
|
||||
fo OR fz -> ga
|
||||
t OR s -> u
|
||||
b RSHIFT 2 -> d
|
||||
NOT jy -> jz
|
||||
hz RSHIFT 2 -> ia
|
||||
kk AND kv -> kx
|
||||
ga AND gc -> gd
|
||||
fl LSHIFT 1 -> gf
|
||||
bn AND by -> ca
|
||||
NOT hr -> hs
|
||||
NOT bs -> bt
|
||||
lf RSHIFT 3 -> lh
|
||||
au AND av -> ax
|
||||
1 AND gd -> ge
|
||||
jr OR js -> jt
|
||||
fw AND fy -> fz
|
||||
NOT iz -> ja
|
||||
c LSHIFT 1 -> t
|
||||
dy RSHIFT 5 -> eb
|
||||
bp OR bq -> br
|
||||
NOT h -> i
|
||||
1 AND ds -> dt
|
||||
ab AND ad -> ae
|
||||
ap LSHIFT 1 -> bj
|
||||
br AND bt -> bu
|
||||
NOT ca -> cb
|
||||
NOT el -> em
|
||||
s LSHIFT 15 -> w
|
||||
gk OR gq -> gr
|
||||
ff AND fh -> fi
|
||||
kf LSHIFT 15 -> kj
|
||||
fp AND fv -> fx
|
||||
lh OR li -> lj
|
||||
bn RSHIFT 3 -> bp
|
||||
jp OR ka -> kb
|
||||
lw OR lv -> lx
|
||||
iy AND ja -> jb
|
||||
dy OR ej -> ek
|
||||
1 AND bh -> bi
|
||||
NOT kt -> ku
|
||||
ao OR an -> ap
|
||||
ia AND ig -> ii
|
||||
NOT ey -> ez
|
||||
bn RSHIFT 1 -> cg
|
||||
fk OR fj -> fl
|
||||
ce OR cd -> cf
|
||||
eu AND fa -> fc
|
||||
kg OR kf -> kh
|
||||
jr AND js -> ju
|
||||
iu RSHIFT 3 -> iw
|
||||
df AND dg -> di
|
||||
dl AND dn -> do
|
||||
la LSHIFT 15 -> le
|
||||
fo RSHIFT 1 -> gh
|
||||
NOT gw -> gx
|
||||
NOT gb -> gc
|
||||
ir LSHIFT 1 -> jl
|
||||
x AND ai -> ak
|
||||
he RSHIFT 5 -> hh
|
||||
1 AND lu -> lv
|
||||
NOT ft -> fu
|
||||
gh OR gi -> gj
|
||||
lf RSHIFT 5 -> li
|
||||
x RSHIFT 3 -> z
|
||||
b RSHIFT 3 -> e
|
||||
he RSHIFT 2 -> hf
|
||||
NOT fx -> fy
|
||||
jt AND jv -> jw
|
||||
hx OR hy -> hz
|
||||
jp AND ka -> kc
|
||||
fb AND fd -> fe
|
||||
hz OR ik -> il
|
||||
ci RSHIFT 1 -> db
|
||||
fo AND fz -> gb
|
||||
fq AND fr -> ft
|
||||
gj RSHIFT 2 -> gk
|
||||
cg OR ch -> ci
|
||||
cd LSHIFT 15 -> ch
|
||||
jm LSHIFT 1 -> kg
|
||||
ih AND ij -> ik
|
||||
fo RSHIFT 3 -> fq
|
||||
fo RSHIFT 5 -> fr
|
||||
1 AND fi -> fj
|
||||
1 AND kz -> la
|
||||
iu AND jf -> jh
|
||||
cq AND cs -> ct
|
||||
dv LSHIFT 1 -> ep
|
||||
hf OR hl -> hm
|
||||
km AND kn -> kp
|
||||
de AND dk -> dm
|
||||
dd RSHIFT 5 -> dg
|
||||
NOT lo -> lp
|
||||
NOT ju -> jv
|
||||
NOT fg -> fh
|
||||
cm AND co -> cp
|
||||
ea AND eb -> ed
|
||||
dd RSHIFT 3 -> df
|
||||
gr AND gt -> gu
|
||||
ep OR eo -> eq
|
||||
cj AND cp -> cr
|
||||
lf OR lq -> lr
|
||||
gg LSHIFT 1 -> ha
|
||||
et RSHIFT 2 -> eu
|
||||
NOT jh -> ji
|
||||
ek AND em -> en
|
||||
jk LSHIFT 15 -> jo
|
||||
ia OR ig -> ih
|
||||
gv AND gx -> gy
|
||||
et AND fe -> fg
|
||||
lh AND li -> lk
|
||||
1 AND io -> ip
|
||||
kb AND kd -> ke
|
||||
kk RSHIFT 5 -> kn
|
||||
id AND if -> ig
|
||||
NOT ls -> lt
|
||||
dw OR dx -> dy
|
||||
dd AND do -> dq
|
||||
lf AND lq -> ls
|
||||
NOT kc -> kd
|
||||
dy AND ej -> el
|
||||
1 AND ke -> kf
|
||||
et OR fe -> ff
|
||||
hz RSHIFT 5 -> ic
|
||||
dd OR do -> dp
|
||||
cj OR cp -> cq
|
||||
NOT dq -> dr
|
||||
kk RSHIFT 1 -> ld
|
||||
jg AND ji -> jj
|
||||
he OR hp -> hq
|
||||
hi AND hk -> hl
|
||||
dp AND dr -> ds
|
||||
dz AND ef -> eh
|
||||
hz RSHIFT 3 -> ib
|
||||
db OR dc -> dd
|
||||
hw LSHIFT 1 -> iq
|
||||
he AND hp -> hr
|
||||
NOT cr -> cs
|
||||
lg AND lm -> lo
|
||||
hv OR hu -> hw
|
||||
il AND in -> io
|
||||
NOT eh -> ei
|
||||
gz LSHIFT 15 -> hd
|
||||
gk AND gq -> gs
|
||||
1 AND en -> eo
|
||||
NOT kp -> kq
|
||||
et RSHIFT 5 -> ew
|
||||
lj AND ll -> lm
|
||||
he RSHIFT 3 -> hg
|
||||
et RSHIFT 3 -> ev
|
||||
as AND bd -> bf
|
||||
cu AND cw -> cx
|
||||
jx AND jz -> ka
|
||||
b OR n -> o
|
||||
be AND bg -> bh
|
||||
1 AND ht -> hu
|
||||
1 AND gy -> gz
|
||||
NOT hn -> ho
|
||||
ck OR cl -> cm
|
||||
ec AND ee -> ef
|
||||
lv LSHIFT 15 -> lz
|
||||
ks AND ku -> kv
|
||||
NOT ie -> if
|
||||
hf AND hl -> hn
|
||||
1 AND r -> s
|
||||
ib AND ic -> ie
|
||||
hq AND hs -> ht
|
||||
y AND ae -> ag
|
||||
NOT ed -> ee
|
||||
bi LSHIFT 15 -> bm
|
||||
dy RSHIFT 2 -> dz
|
||||
ci RSHIFT 2 -> cj
|
||||
NOT bf -> bg
|
||||
NOT im -> in
|
||||
ev OR ew -> ex
|
||||
ib OR ic -> id
|
||||
bn RSHIFT 2 -> bo
|
||||
dd RSHIFT 2 -> de
|
||||
bl OR bm -> bn
|
||||
as RSHIFT 1 -> bl
|
||||
ea OR eb -> ec
|
||||
ln AND lp -> lq
|
||||
kk RSHIFT 3 -> km
|
||||
is OR it -> iu
|
||||
iu RSHIFT 2 -> iv
|
||||
as OR bd -> be
|
||||
ip LSHIFT 15 -> it
|
||||
iw OR ix -> iy
|
||||
kk RSHIFT 2 -> kl
|
||||
NOT bb -> bc
|
||||
ci RSHIFT 5 -> cl
|
||||
ly OR lz -> ma
|
||||
z AND aa -> ac
|
||||
iu RSHIFT 1 -> jn
|
||||
cy LSHIFT 15 -> dc
|
||||
cf LSHIFT 1 -> cz
|
||||
as RSHIFT 3 -> au
|
||||
cz OR cy -> da
|
||||
kw AND ky -> kz
|
||||
lx -> a
|
||||
iw AND ix -> iz
|
||||
lr AND lt -> lu
|
||||
jp RSHIFT 5 -> js
|
||||
aw AND ay -> az
|
||||
jc AND je -> jf
|
||||
lb OR la -> lc
|
||||
NOT cn -> co
|
||||
kh LSHIFT 1 -> lb
|
||||
1 AND jj -> jk
|
||||
y OR ae -> af
|
||||
ck AND cl -> cn
|
||||
kk OR kv -> kw
|
||||
NOT cv -> cw
|
||||
kl AND kr -> kt
|
||||
iu OR jf -> jg
|
||||
at AND az -> bb
|
||||
jp RSHIFT 2 -> jq
|
||||
iv AND jb -> jd
|
||||
jn OR jo -> jp
|
||||
x OR ai -> aj
|
||||
ba AND bc -> bd
|
||||
jl OR jk -> jm
|
||||
b RSHIFT 1 -> v
|
||||
o AND q -> r
|
||||
NOT p -> q
|
||||
k AND m -> n
|
||||
as RSHIFT 2 -> at
|
||||
1
internal/data/2015/DayTen/input.txt
Normal file
1
internal/data/2015/DayTen/input.txt
Normal file
@@ -0,0 +1 @@
|
||||
1113122113
|
||||
56
internal/data/2015/DayThirteen/input.txt
Normal file
56
internal/data/2015/DayThirteen/input.txt
Normal file
@@ -0,0 +1,56 @@
|
||||
Alice would lose 57 happiness units by sitting next to Bob.
|
||||
Alice would lose 62 happiness units by sitting next to Carol.
|
||||
Alice would lose 75 happiness units by sitting next to David.
|
||||
Alice would gain 71 happiness units by sitting next to Eric.
|
||||
Alice would lose 22 happiness units by sitting next to Frank.
|
||||
Alice would lose 23 happiness units by sitting next to George.
|
||||
Alice would lose 76 happiness units by sitting next to Mallory.
|
||||
Bob would lose 14 happiness units by sitting next to Alice.
|
||||
Bob would gain 48 happiness units by sitting next to Carol.
|
||||
Bob would gain 89 happiness units by sitting next to David.
|
||||
Bob would gain 86 happiness units by sitting next to Eric.
|
||||
Bob would lose 2 happiness units by sitting next to Frank.
|
||||
Bob would gain 27 happiness units by sitting next to George.
|
||||
Bob would gain 19 happiness units by sitting next to Mallory.
|
||||
Carol would gain 37 happiness units by sitting next to Alice.
|
||||
Carol would gain 45 happiness units by sitting next to Bob.
|
||||
Carol would gain 24 happiness units by sitting next to David.
|
||||
Carol would gain 5 happiness units by sitting next to Eric.
|
||||
Carol would lose 68 happiness units by sitting next to Frank.
|
||||
Carol would lose 25 happiness units by sitting next to George.
|
||||
Carol would gain 30 happiness units by sitting next to Mallory.
|
||||
David would lose 51 happiness units by sitting next to Alice.
|
||||
David would gain 34 happiness units by sitting next to Bob.
|
||||
David would gain 99 happiness units by sitting next to Carol.
|
||||
David would gain 91 happiness units by sitting next to Eric.
|
||||
David would lose 38 happiness units by sitting next to Frank.
|
||||
David would gain 60 happiness units by sitting next to George.
|
||||
David would lose 63 happiness units by sitting next to Mallory.
|
||||
Eric would gain 23 happiness units by sitting next to Alice.
|
||||
Eric would lose 69 happiness units by sitting next to Bob.
|
||||
Eric would lose 33 happiness units by sitting next to Carol.
|
||||
Eric would lose 47 happiness units by sitting next to David.
|
||||
Eric would gain 75 happiness units by sitting next to Frank.
|
||||
Eric would gain 82 happiness units by sitting next to George.
|
||||
Eric would gain 13 happiness units by sitting next to Mallory.
|
||||
Frank would gain 77 happiness units by sitting next to Alice.
|
||||
Frank would gain 27 happiness units by sitting next to Bob.
|
||||
Frank would lose 87 happiness units by sitting next to Carol.
|
||||
Frank would gain 74 happiness units by sitting next to David.
|
||||
Frank would lose 41 happiness units by sitting next to Eric.
|
||||
Frank would lose 99 happiness units by sitting next to George.
|
||||
Frank would gain 26 happiness units by sitting next to Mallory.
|
||||
George would lose 63 happiness units by sitting next to Alice.
|
||||
George would lose 51 happiness units by sitting next to Bob.
|
||||
George would lose 60 happiness units by sitting next to Carol.
|
||||
George would gain 30 happiness units by sitting next to David.
|
||||
George would lose 100 happiness units by sitting next to Eric.
|
||||
George would lose 63 happiness units by sitting next to Frank.
|
||||
George would gain 57 happiness units by sitting next to Mallory.
|
||||
Mallory would lose 71 happiness units by sitting next to Alice.
|
||||
Mallory would lose 28 happiness units by sitting next to Bob.
|
||||
Mallory would lose 10 happiness units by sitting next to Carol.
|
||||
Mallory would gain 44 happiness units by sitting next to David.
|
||||
Mallory would gain 22 happiness units by sitting next to Eric.
|
||||
Mallory would gain 79 happiness units by sitting next to Frank.
|
||||
Mallory would lose 16 happiness units by sitting next to George.
|
||||
1
internal/data/2015/DayTwelve/input.txt
Normal file
1
internal/data/2015/DayTwelve/input.txt
Normal file
File diff suppressed because one or more lines are too long
1
internal/data/2016/DayFive/input.txt
Normal file
1
internal/data/2016/DayFive/input.txt
Normal file
@@ -0,0 +1 @@
|
||||
reyedfim
|
||||
953
internal/data/2016/DayFour/input.txt
Normal file
953
internal/data/2016/DayFour/input.txt
Normal file
@@ -0,0 +1,953 @@
|
||||
hqcfqwydw-fbqijys-whqii-huiuqhsx-660[qhiwf]
|
||||
oxjmxdfkd-pzxsbkdbo-erkq-ixyloxqlov-913[xodkb]
|
||||
bpvctixr-eaphixr-vgphh-gthtpgrw-947[smrkl]
|
||||
iwcjapey-lhwopey-cnwoo-wymqeoepekj-992[eowpy]
|
||||
mvhkvbdib-agjrzm-zibdizzmdib-317[bizdm]
|
||||
excdklvo-lkcuod-dbksxsxq-146[ztwya]
|
||||
ocipgvke-ejqeqncvg-octmgvkpi-908[prmku]
|
||||
ktwbhtvmbox-vetllbybxw-vtgwr-vhtmbgz-tvjnblbmbhg-579[uvnyc]
|
||||
dpmpsgvm-tdbwfohfs-ivou-tijqqjoh-389[emdac]
|
||||
forwcoqhwjs-pibbm-igsf-hsghwbu-532[bhswf]
|
||||
uzfqdzmfuazmx-nmewqf-ogefayqd-eqdhuoq-664[qfdem]
|
||||
fnjyxwrinm-yujbcrl-pajbb-uxprbcrlb-277[brjcl]
|
||||
aoubshwq-dzoghwq-ufogg-fsoqeiwgwhwcb-714[nkrmy]
|
||||
pbeebfvir-rtt-fnyrf-975[frbet]
|
||||
bnknqetk-qzaahs-trdq-sdrshmf-235[mtcqz]
|
||||
odiih-ljwmh-lxjcrwp-orwjwlrwp-927[wjlrh]
|
||||
sxdobxkdsyxkv-bkllsd-cobfsmoc-302[sbdko]
|
||||
gzefmnxq-omzpk-ymzmsqyqzf-352[saomt]
|
||||
tvsnigxmpi-gerhc-gsexmrk-qerekiqirx-854[eirgx]
|
||||
ktfitzbgz-vtgwr-ftgtzxfxgm-267[tgfzx]
|
||||
lxuxaodu-npp-orwjwlrwp-563[pwlor]
|
||||
oazegyqd-sdmpq-pkq-xmnadmfadk-352[damqk]
|
||||
wfruflnsl-gzssd-hzxytrjw-xjwanhj-177[bgxsp]
|
||||
pbybeshy-qlr-qrfvta-455[tmios]
|
||||
xmrrq-udskkaxawv-vqw-esfsywewfl-918[fdqsb]
|
||||
vhehkyne-vahvhetmx-ltexl-917[uvhmy]
|
||||
molgbzqfib-ciltbo-obzbfsfkd-393[htayl]
|
||||
veqtekmrk-jpsaiv-wlmttmrk-256[ewyhq]
|
||||
cvabijtm-lgm-apqxxqvo-512[dinjm]
|
||||
oaxadrgx-nmewqf-qzsuzqqduzs-456[oevtg]
|
||||
vehmsegxmzi-veffmx-wepiw-880[emfiv]
|
||||
fruurvlyh-fubrjhqlf-fdqgb-frdwlqj-ghvljq-413[cgkzy]
|
||||
otzkxtgzoutgr-inuiurgzk-sgxqkzotm-774[gtzko]
|
||||
hwbba-eqpuwogt-itcfg-tcddkv-ujkrrkpi-154[ktbcd]
|
||||
pynffvsvrq-cynfgvp-tenff-ynobengbel-377[fnevy]
|
||||
aoubshwq-qcbgiasf-ufors-qvcqczohs-hsqvbczcum-558[hypcz]
|
||||
kzeed-xhfajsljw-mzsy-knsfshnsl-281[nsmtd]
|
||||
hwdtljsnh-hfsid-htfynsl-ijufwyrjsy-177[hsfjy]
|
||||
excdklvo-zvkcdsm-qbkcc-psxkxmsxq-900[yznml]
|
||||
diozmivodjivg-xviyt-pnzm-oznodib-239[iodvz]
|
||||
nzcczdtgp-clmmte-lnbftdtetzy-743[tczde]
|
||||
ejpanjwpekjwh-bhksan-iwngapejc-264[mgyfj]
|
||||
ubhatstkwhnl-vhehkyne-xzz-wxiehrfxgm-917[hexkn]
|
||||
vhkkhlbox-vtgwr-vhtmbgz-vnlmhfxk-lxkobvx-163[vhkxb]
|
||||
irdgrxzex-tyftfcrkv-rthlzjzkzfe-373[rzfte]
|
||||
cvabijtm-rmttgjmiv-lmdmtwxumvb-564[mtvbi]
|
||||
hqfxxnknji-gfxpjy-xmnuunsl-151[brtjg]
|
||||
odkasqzuo-dmnnuf-xasuefuoe-690[zyejx]
|
||||
ixeumktoi-pkrrehkgt-sgtgmksktz-384[ktgei]
|
||||
atyzghrk-igtje-iugzotm-uvkxgzouty-358[rmnqz]
|
||||
ktwbhtvmbox-xzz-phkdlahi-865[nmsjb]
|
||||
nzydfxpc-rclop-ojp-lylwjdtd-951[dlpcj]
|
||||
vxupkizork-kmm-sgtgmksktz-280[yublv]
|
||||
cvabijtm-kivlg-kwibqvo-twoqabqka-408[pgush]
|
||||
hqcfqwydw-fbqijys-whqii-mehaixef-218[vzaur]
|
||||
bpvctixr-rpcsn-rdpixcv-ldgzhwde-271[cifnu]
|
||||
fnjyxwrinm-kjbtnc-lxwcjrwvnwc-199[nwcjr]
|
||||
kzeed-idj-xmnuunsl-593[uazmr]
|
||||
dsxxw-zyqicr-bcqgel-236[cqxbd]
|
||||
gpewwmjmih-jpsaiv-wivzmgiw-230[iwmgj]
|
||||
amjmpdsj-afmamjyrc-bcqgel-470[mszht]
|
||||
eqpuwogt-itcfg-tcorcikpi-hnqygt-ujkrrkpi-596[nywzt]
|
||||
pelbtravp-pnaql-erprvivat-533[parve]
|
||||
yhwooebeaz-bhksan-wymqeoepekj-758[eoabh]
|
||||
iruzfrtkzmv-upv-kirzezex-529[zpysg]
|
||||
lxaaxbren-lqxlxujcn-mnenuxyvnwc-953[nxlac]
|
||||
clxalrtyr-prr-nfdezxpc-dpcgtnp-457[prcdl]
|
||||
sorozgxe-mxgjk-kmm-vaxingyotm-228[ugkxd]
|
||||
vdzonmhydc-eknvdq-otqbgzrhmf-469[jnsrl]
|
||||
gsvvswmzi-gspsvjyp-nippcfier-hizipstqirx-802[mvkcd]
|
||||
xgvnndadzy-xviyt-xjvodib-yzkgjthzio-707[ncejo]
|
||||
emixwvqhml-akidmvomz-pcvb-uizsmbqvo-538[mvibo]
|
||||
dpotvnfs-hsbef-cbtlfu-usbjojoh-597[mnkij]
|
||||
amjmpdsj-pyzzgr-jyzmpyrmpw-522[rxsqz]
|
||||
fkqbokxqflkxi-yxphbq-ixyloxqlov-861[xjeyz]
|
||||
vehmsegxmzi-tpewxmg-kveww-xvemrmrk-256[emvwx]
|
||||
aietsrmdih-ikk-viwievgl-750[iekva]
|
||||
zekvierkzferc-gcrjkzt-xirjj-nfibjyfg-763[jlbrc]
|
||||
krxqjijamxdb-lqxlxujcn-lxwcjrwvnwc-537[opuqe]
|
||||
dsxxw-zsllw-jyzmpyrmpw-652[hgyae]
|
||||
mbiyqoxsm-mkxni-mykdsxq-kmaescsdsyx-770[otslp]
|
||||
oqnidbshkd-vdzonmhydc-idkkxadzm-qdzbpthrhshnm-573[dhkmn]
|
||||
jqwpihizlwca-moo-apqxxqvo-174[oqaip]
|
||||
ahngzyzqcntr-azrjds-qdrdzqbg-573[zdqra]
|
||||
bhksan-lqnydwoejc-472[gutvo]
|
||||
jvsvymbs-zjhclunly-obua-zlycpjlz-175[ljyzb]
|
||||
wrs-vhfuhw-hjj-ilqdqflqj-205[hjqfl]
|
||||
egdytrixat-eaphixr-vgphh-ldgzhwde-661[duchs]
|
||||
oxmeeuruqp-eomhqzsqd-tgzf-mocgueufuaz-196[uemoq]
|
||||
ahngzyzqcntr-cxd-ehmzmbhmf-677[dqulm]
|
||||
gspsvjyp-tpewxmg-kveww-wivzmgiw-568[ghntx]
|
||||
pualyuhapvuhs-jvuzbtly-nyhkl-wshzapj-nyhzz-thyrlapun-149[kibhn]
|
||||
nzcczdtgp-mfyyj-pyrtyppctyr-171[ypctr]
|
||||
guahyncw-nij-mywlyn-vohhs-jolwbumcha-760[hnwya]
|
||||
bgmxkgtmbhgte-xzz-vhgmtbgfxgm-397[gmbtx]
|
||||
zixppfcfba-gbiivybxk-zrpqljbo-pbosfzb-653[psocz]
|
||||
votubcmf-sbccju-nbslfujoh-935[bcufj]
|
||||
gsrwyqiv-kvehi-nippcfier-irkmriivmrk-204[irkve]
|
||||
jsvagsulanw-hdsklau-yjskk-ksdwk-632[ltnxs]
|
||||
irdgrxzex-srjbvk-uvgcfpdvek-503[rvdeg]
|
||||
krxqjijamxdb-ljwmh-bcxajpn-849[jxabm]
|
||||
ajmrxjlcren-ljwmh-vjwjpnvnwc-407[yemcd]
|
||||
ahngzyzqcntr-rbzudmfdq-gtms-btrsnldq-rdquhbd-755[dqrbn]
|
||||
rzvkjiduzy-ezggtwzvi-hvmfzodib-291[yuzaf]
|
||||
bwx-amkzmb-ntwemz-aitma-408[mabtw]
|
||||
wihmogyl-aluxy-vumeyn-mufym-812[wymtu]
|
||||
xjmmjndqz-nxvqzibzm-cpio-yzkgjthzio-889[mtsyf]
|
||||
xmtjbzidx-ytz-nojmvbz-525[hyzbw]
|
||||
bnmrtldq-fqzcd-tmrszakd-qzaahs-cdrhfm-131[wmcrn]
|
||||
ftzgxmbv-wrx-kxtvjnblbmbhg-293[bxgmt]
|
||||
gsvvswmzi-gerhc-wepiw-230[wegis]
|
||||
pdjqhwlf-fdqgb-uhfhlylqj-699[fhlqd]
|
||||
zsxyfgqj-kzeed-uqfxynh-lwfxx-ijuqtdrjsy-957[xfjqy]
|
||||
rnqnyfwd-lwfij-uqfxynh-lwfxx-knsfshnsl-359[zbtyx]
|
||||
wrs-vhfuhw-gbh-whfkqrorjb-231[hrwbf]
|
||||
iuxxuyobk-hatte-rumoyzoiy-280[ouyit]
|
||||
oqnidbshkd-bgnbnkzsd-nodqzshnmr-287[xnmzi]
|
||||
atyzghrk-jek-jkyomt-540[anzom]
|
||||
ibghopzs-pogysh-rsdofhasbh-818[hsobg]
|
||||
wbhsfbohwcboz-foppwh-rsjszcdasbh-532[njpay]
|
||||
excdklvo-mrymyvkdo-ecob-docdsxq-484[docek]
|
||||
xgsvgmotm-yigbktmkx-natz-yzuxgmk-722[zwckh]
|
||||
ajyqqgdgcb-afmamjyrc-qfgnngle-964[pzowt]
|
||||
ugdgjxmd-jsttal-kzahhafy-138[cyirg]
|
||||
irgyyolokj-iuxxuyobk-inuiurgzk-rumoyzoiy-982[sgadc]
|
||||
qcbgiasf-ufors-gqojsbusf-vibh-qcbhowbasbh-870[njidq]
|
||||
bkwzkqsxq-mrymyvkdo-wkxkqowoxd-146[hfdmy]
|
||||
mybbycsfo-mrymyvkdo-bokmaescsdsyx-120[mlnky]
|
||||
zuv-ykixkz-jek-ktmotkkxotm-852[mebdc]
|
||||
dkqjcbctfqwu-lgnnadgcp-fgrctvogpv-648[cgdfn]
|
||||
vehmsegxmzi-ikk-xvemrmrk-724[byndz]
|
||||
upq-tfdsfu-cvooz-nbobhfnfou-155[xyskn]
|
||||
gpewwmjmih-wgezirkiv-lyrx-hitevxqirx-360[ierwx]
|
||||
rdggdhxkt-ytaanqtpc-bpcpvtbtci-817[mnjpk]
|
||||
xlrypetn-clmmte-zapcletzyd-405[eltcm]
|
||||
oxjmxdfkd-oxyyfq-abmxoqjbkq-861[nmhlv]
|
||||
xjinphzm-bmvyz-kgvnodx-bmvnn-gjbdnodxn-395[nbdmv]
|
||||
tpspahyf-nyhkl-jhukf-zopwwpun-799[phfkn]
|
||||
jsvagsulanw-usfvq-mkwj-lwklafy-684[alswf]
|
||||
ipvohghykvbz-kfl-ylhjxbpzpapvu-877[vmizu]
|
||||
fydelmwp-awldetn-rcldd-afcnsldtyr-405[dlace]
|
||||
gpbepvxcv-tvv-steadnbtci-609[vtbce]
|
||||
tipfxvezt-upv-rthlzjzkzfe-581[ztefp]
|
||||
bknsykmdsfo-oqq-vyqscdsmc-796[sqcdk]
|
||||
ejpanjwpekjwh-zua-odellejc-914[ejalp]
|
||||
ytu-xjhwjy-uqfxynh-lwfxx-jslnsjjwnsl-775[jxlns]
|
||||
tinnm-aoubshwq-tzcksf-zopcfohcfm-376[cfohm]
|
||||
xjgjmapg-ezggtwzvi-xpnojhzm-nzmqdxz-811[zgjmx]
|
||||
tvsnigxmpi-fewoix-hiwmkr-386[tpuvk]
|
||||
udglrdfwlyh-udeelw-vhuylfhv-829[ldhue]
|
||||
luxciuwncpy-wbiwifuny-mniluay-786[iunwy]
|
||||
ftzgxmbv-ktuubm-inkvatlbgz-865[btgkm]
|
||||
xzwrmkbqtm-zijjqb-twoqabqka-486[erqyp]
|
||||
diozmivodjivg-zbb-ncdkkdib-499[dibko]
|
||||
kwvacumz-ozilm-kivlg-lmxizbumvb-980[milvz]
|
||||
hwbba-dwppa-tgugctej-648[abgpt]
|
||||
myxcewob-qbkno-bkllsd-cdybkqo-120[atghd]
|
||||
zekvierkzferc-irsszk-uvjzxe-477[snqzi]
|
||||
wlsiayhcw-dyffsvyuh-guleyncha-526[yhacf]
|
||||
clotzlnetgp-ojp-opdtry-249[optlc]
|
||||
dmybmsuzs-vqxxknqmz-eqdhuoqe-560[qmdes]
|
||||
mtzslklcozfd-clmmte-dstaatyr-275[rtnyq]
|
||||
cxy-bnlanc-lqxlxujcn-vjwjpnvnwc-823[ncjlx]
|
||||
jshzzpmplk-zjhclunly-obua-bzly-alzapun-929[vcuxs]
|
||||
yuxufmdk-sdmpq-ngzzk-oazfmuzyqzf-508[kghlv]
|
||||
otzkxtgzoutgr-kmm-sgtgmksktz-722[tgkmz]
|
||||
xgvnndadzy-xviyt-hvmfzodib-941[qbwmr]
|
||||
qekrixmg-fyrrc-ywiv-xiwxmrk-230[ikjwl]
|
||||
dpssptjwf-dpmpsgvm-qmbtujd-hsbtt-bobmztjt-337[tbmps]
|
||||
tcfkqcevkxg-rncuvke-itcuu-ujkrrkpi-388[tabmn]
|
||||
hjgbwuladw-tskcwl-xafsfuafy-528[afwls]
|
||||
ygcrqpkbgf-ecpfa-gpikpggtkpi-154[gpkcf]
|
||||
hqcfqwydw-sxesebqju-qdqboiyi-608[qbdei]
|
||||
iehepwnu-cnwza-ydkykhwpa-iwngapejc-706[waenp]
|
||||
jchipqat-ytaanqtpc-htgkxrth-115[mfnly]
|
||||
pinovwgz-ezggtwzvi-xpnojhzm-nzmqdxz-967[yzosw]
|
||||
yhwooebeaz-oywrajcan-dqjp-owhao-628[oaweh]
|
||||
fhezusjybu-tou-skijecuh-iuhlysu-270[uhsei]
|
||||
tcrjjzwzvu-upv-kirzezex-659[bdnty]
|
||||
npmhcargjc-aylbw-amyrgle-qcptgacq-626[tkmzs]
|
||||
ejpanjwpekjwh-ywjzu-ykwpejc-pnwejejc-160[lnqkc]
|
||||
cybyjqho-whqtu-ryexqpqhteki-uww-tuiywd-946[qwyht]
|
||||
cqwdujys-uww-bewyijysi-218[wyijs]
|
||||
xekdwvwnzkqo-acc-pnwejejc-342[cewjk]
|
||||
encuukhkgf-uecxgpigt-jwpv-ugtxkegu-440[kwmxr]
|
||||
mbiyqoxsm-tovvilokx-cobfsmoc-224[doavb]
|
||||
jvuzbtly-nyhkl-jhukf-zlycpjlz-591[jwxzi]
|
||||
ncjzrpytn-clmmte-lylwjdtd-691[ltcdj]
|
||||
enqvbnpgvir-enoovg-erprvivat-117[venrg]
|
||||
gzefmnxq-ngzzk-ymdwqfuzs-612[zfgmn]
|
||||
gokzyxsjon-cmkfoxqob-rexd-psxkxmsxq-302[zylnb]
|
||||
aflwjfslagfsd-xdgowj-xafsfuafy-554[rgqmz]
|
||||
ugdgjxmd-ujqgywfau-hdsklau-yjskk-kzahhafy-294[daelo]
|
||||
mvkccspson-mrymyvkdo-nozkbdwoxd-718[odkmc]
|
||||
egdytrixat-rwdrdapit-stepgibtci-817[ampoz]
|
||||
qfmcusbwq-pogysh-fsgsofqv-194[gcthj]
|
||||
wifilzof-qyujihctyx-luvvcn-qilembij-344[ilcfj]
|
||||
gpbepvxcv-snt-apqdgpidgn-323[dnmyh]
|
||||
kpvgtpcvkqpcn-gii-gpikpggtkpi-180[vyxnb]
|
||||
ziuxioqvo-moo-mvoqvmmzqvo-512[omvqi]
|
||||
fbebmtkr-zktwx-vtgwr-vhtmbgz-wxitkmfxgm-631[zilsp]
|
||||
wihmogyl-aluxy-luvvcn-wihnuchgyhn-240[hlnuy]
|
||||
eqnqthwn-lgnnadgcp-rwtejcukpi-726[jwvun]
|
||||
hdgdovmt-bmvyz-ytz-yzqzgjkhzio-369[zydgh]
|
||||
aflwjfslagfsd-usfvq-ugslafy-hmjuzskafy-138[vjmnt]
|
||||
froruixo-iorzhu-uhdftxlvlwlrq-205[eslfx]
|
||||
xekdwvwnzkqo-zua-skngodkl-368[kdnow]
|
||||
xtwtelcj-rclop-clmmte-dpcgtnpd-353[jowtx]
|
||||
lhkhszqx-fqzcd-cxd-nodqzshnmr-911[dhqzc]
|
||||
fodvvlilhg-fdqgb-xvhu-whvwlqj-725[syfpw]
|
||||
mtzslklcozfd-dnlgpyrpc-sfye-cpdplcns-873[zngtm]
|
||||
rwcnawjcrxwju-yujbcrl-pajbb-jwjuhbrb-459[jbrwc]
|
||||
hcd-gsqfsh-awzwhofm-ufors-suu-twbobqwbu-948[reunt]
|
||||
pwcvonofrcig-pibbm-obozmgwg-688[zgthm]
|
||||
vhehkyne-lvtoxgzxk-angm-wxiehrfxgm-345[xeghk]
|
||||
ucynmlgxcb-njyqrga-epyqq-qrmpyec-938[mgnpj]
|
||||
fruurvlyh-fdqgb-frdwlqj-uhvhdufk-699[fudhr]
|
||||
hqfxxnknji-gzssd-yjhmstqtld-697[sdhjn]
|
||||
qzoggwtwsr-rms-rsdofhasbh-402[gtlom]
|
||||
gzefmnxq-ngzzk-dqeqmdot-638[yatsz]
|
||||
rmn-qcapcr-njyqrga-epyqq-pcqcypaf-834[mpqie]
|
||||
yknnkoera-ywjzu-zarahkliajp-186[yozsd]
|
||||
clxalrtyr-eza-dpncpe-mldvpe-epnsyzwzrj-483[eplrz]
|
||||
vkrhzxgbv-cxeeruxtg-vhgmtbgfxgm-137[fsxoz]
|
||||
ymszqfuo-bxmefuo-sdmee-mzmxkeue-898[ndgcf]
|
||||
dmbttjgjfe-sbccju-bdrvjtjujpo-649[vkijs]
|
||||
wifilzof-wbiwifuny-guleyncha-136[ifwln]
|
||||
oxmeeuruqp-vqxxknqmz-abqdmfuaze-196[baztd]
|
||||
tinnm-qfmcusbwq-pogysh-gvwddwbu-636[aryhp]
|
||||
lxaaxbren-ouxfna-bnaerlnb-693[anbxe]
|
||||
nglmtuex-xzz-mktbgbgz-397[zqyrt]
|
||||
xlrypetn-mfyyj-pyrtyppctyr-223[yprtc]
|
||||
fodvvlilhg-fdqgb-vklsslqj-127[lvdfg]
|
||||
ikhcxvmbex-lvtoxgzxk-angm-ehzblmbvl-761[xblmv]
|
||||
fkqbokxqflkxi-ciltbo-qoxfkfkd-211[kfoqx]
|
||||
lujbbrornm-bljenwpna-qdwc-fxatbqxy-589[bnajl]
|
||||
eqpuwogt-itcfg-tcddkv-vgejpqnqia-258[besga]
|
||||
lnkfaypeha-ydkykhwpa-zaoecj-108[zamyw]
|
||||
lhkhszqx-fqzcd-atmmx-lzqjdshmf-859[hmqzd]
|
||||
aflwjfslagfsd-tskcwl-vwhsjlewfl-190[xevmq]
|
||||
pbafhzre-tenqr-wryylorna-fuvccvat-507[racef]
|
||||
jvsvymbs-ibuuf-yljlpcpun-773[ubjlp]
|
||||
fab-eqodqf-rxaiqd-etubbuzs-612[bqade]
|
||||
cxy-bnlanc-ljwmh-nwprwnnarwp-251[nwacl]
|
||||
hdgdovmt-bmvyz-pinovwgz-ytz-omvdidib-239[qfmcj]
|
||||
wsvsdkbi-qbkno-mkxni-mykdsxq-bokmaescsdsyx-328[skbdm]
|
||||
njmjubsz-hsbef-gmpxfs-tijqqjoh-727[ykelf]
|
||||
foadouwbu-qobrm-oqeiwgwhwcb-142[owbqu]
|
||||
cvabijtm-kivlg-ewzsapwx-538[posuz]
|
||||
xgsvgmotm-igtje-gtgreyoy-696[gtemo]
|
||||
oaddaeuhq-ngzzk-efadmsq-612[adeqz]
|
||||
zgmfyxypbmsq-pyzzgr-yaosgqgrgml-470[efsgy]
|
||||
wihmogyl-aluxy-vumeyn-zchuhwcha-110[eisnw]
|
||||
hafgnoyr-fpniratre-uhag-phfgbzre-freivpr-663[rfaeg]
|
||||
jqwpihizlwca-zijjqb-ewzsapwx-174[ognyv]
|
||||
uwtojhynqj-hfsid-htfynsl-ijajqturjsy-619[jhsty]
|
||||
hqfxxnknji-kqtbjw-wjhjnansl-177[ctzqd]
|
||||
upq-tfdsfu-dboez-dpbujoh-mphjtujdt-103[dujpt]
|
||||
tfiifjzmv-jtrmvexvi-ylek-wzeretzex-919[kuzli]
|
||||
ugjjgkanw-hdsklau-yjskk-vwkayf-840[omzwl]
|
||||
ugdgjxmd-kusnwfywj-zmfl-ogjckzgh-840[gjdfk]
|
||||
vehmsegxmzi-fewoix-hitevxqirx-308[eixhm]
|
||||
yflexwxoalrp-bdd-absbilmjbkq-419[esuky]
|
||||
kwzzwaqdm-rmttgjmiv-lmxizbumvb-330[mzbit]
|
||||
htqtwkzq-hfsid-yjhmstqtld-593[thqds]
|
||||
tinnm-qobrm-qcohwbu-difqvogwbu-740[boqim]
|
||||
tipfxvezt-jtrmvexvi-ylek-nfibjyfg-659[fqnis]
|
||||
lzfmdshb-atmmx-qdzbpthrhshnm-859[hmbds]
|
||||
nij-mywlyn-mwupyhayl-bohn-qilembij-292[vwady]
|
||||
jchipqat-hrpktcvtg-wjci-gthtpgrw-999[tcghp]
|
||||
dyz-combod-oqq-mecdywob-cobfsmo-250[obcdm]
|
||||
dkqjcbctfqwu-ecpfa-vgejpqnqia-310[crelp]
|
||||
gsrwyqiv-kvehi-gerhc-stivexmsrw-646[slxzf]
|
||||
hmsdqmzshnmzk-bgnbnkzsd-cdozqsldms-261[sdmzn]
|
||||
tfejldvi-xiruv-srjbvk-uvmvcfgdvek-217[kfcmn]
|
||||
wrs-vhfuhw-exqqb-dqdobvlv-751[qvbdh]
|
||||
willimcpy-jfumncw-alumm-mufym-682[dsbwk]
|
||||
etaqigpke-lgnnadgcp-ceswkukvkqp-856[fnltm]
|
||||
diozmivodjivg-nxvqzibzm-cpio-gvwjmvojmt-603[vywzn]
|
||||
oxjmxdfkd-oxyyfq-absbilmjbkq-809[bxdfj]
|
||||
uqtqbizg-ozilm-moo-wxmzibqwva-564[indml]
|
||||
rdchjbtg-vgpst-uadltg-gtprfjxhxixdc-323[czknl]
|
||||
pybgmyargtc-amjmpdsj-njyqrga-epyqq-mncpyrgmlq-808[rzoqv]
|
||||
sbqiiyvyut-sxesebqju-huiuqhsx-582[suiqb]
|
||||
clxalrtyr-dnlgpyrpc-sfye-epnsyzwzrj-873[rylpc]
|
||||
amlqskcp-epybc-cee-bcqgel-756[ceblp]
|
||||
jrncbavmrq-pnaql-pbngvat-qrirybczrag-377[rabnq]
|
||||
cebwrpgvyr-onfxrg-qrcnegzrag-221[rgcen]
|
||||
forwcoqhwjs-tzcksf-rsjszcdasbh-792[scfhj]
|
||||
ckgvutofkj-pkrrehkgt-jkvgxzsktz-696[wxbfz]
|
||||
kzeed-uqfxynh-lwfxx-qtlnxynhx-255[xnefh]
|
||||
vhkkhlbox-vtgwr-hixktmbhgl-683[hkbgl]
|
||||
mrxivrexmsrep-hci-viwievgl-464[msqei]
|
||||
nsyjwsfyntsfq-idj-htsyfnsrjsy-931[syfjn]
|
||||
awzwhofm-ufors-qobrm-qcohwbu-aofyshwbu-272[owbfh]
|
||||
ahngzyzqcntr-bzmcx-cdoknxldms-651[cnzdm]
|
||||
nsyjwsfyntsfq-hfsid-wjfhvznxnynts-671[dqrws]
|
||||
krxqjijamxdb-npp-uxprbcrlb-589[vutpy]
|
||||
ahngzyzqcntr-azrjds-knfhrshbr-209[qnogp]
|
||||
pejji-bkllsd-crszzsxq-458[xlhso]
|
||||
qcffcgwjs-gqojsbusf-vibh-zcuwghwqg-480[njzmp]
|
||||
ziuxioqvo-moo-amzdqkma-174[zeuba]
|
||||
ujqgywfau-aflwjfslagfsd-vqw-kwjnauwk-398[wafju]
|
||||
elrkdcdugrxv-fdqgb-orjlvwlfv-101[mhsyz]
|
||||
kpvgtpcvkqpcn-tcddkv-qrgtcvkqpu-700[ptqjs]
|
||||
jfifqxov-doxab-avb-xkxivpfp-107[xfvab]
|
||||
lsyrkjkbnyec-mkxni-mykdsxq-kmaescsdsyx-978[mbynk]
|
||||
ocipgvke-lgnnadgcp-wugt-vguvkpi-206[hugza]
|
||||
hcd-gsqfsh-qvcqczohs-rsgwub-142[dhpmf]
|
||||
lsyrkjkbnyec-oqq-ckvoc-822[ckoqy]
|
||||
vhkkhlbox-utldxm-vnlmhfxk-lxkobvx-787[xklhv]
|
||||
vkppo-cqwdujys-vbemuh-qdqboiyi-504[qbdio]
|
||||
qjopwxha-ywjzu-zaoecj-654[jaowz]
|
||||
njmjubsz-hsbef-dipdpmbuf-efqbsunfou-311[bfusd]
|
||||
ktiaaqnqml-jiasmb-lmdmtwxumvb-694[yxlgt]
|
||||
vrurcjah-pajmn-lqxlxujcn-fxatbqxy-511[ztgdk]
|
||||
vagreangvbany-qlr-znexrgvat-325[yblnw]
|
||||
lgh-kwujwl-wyy-jwsuimakalagf-996[gsubl]
|
||||
apuut-xgvnndadzy-ezggtwzvi-zibdizzmdib-343[qlykv]
|
||||
pxtihgbsxw-utldxm-kxlxtkva-787[xtkla]
|
||||
mfklstdw-esyfwlau-usfvq-vwkayf-762[kljiy]
|
||||
eqpuwogt-itcfg-hwbba-fag-fgrnqaogpv-232[gafbo]
|
||||
qzoggwtwsr-rms-rsdzcmasbh-688[srgmw]
|
||||
yhkpvhjapcl-ibuuf-jbzavtly-zlycpjl-955[skwvb]
|
||||
gpewwmjmih-hci-gywxsqiv-wivzmgi-620[txcfj]
|
||||
lahxpnwrl-npp-vjatncrwp-537[aisyo]
|
||||
ckgvutofkj-hatte-aykx-zkyzotm-436[ntzbr]
|
||||
iehepwnu-cnwza-lhwopey-cnwoo-ykjpwejiajp-628[wepjn]
|
||||
fkqbokxqflkxi-yxphbq-obpbxoze-471[napmi]
|
||||
etyyx-cxd-lzqjdshmf-261[inzys]
|
||||
ftzgxmbv-utldxm-ftkdxmbgz-267[wqkjm]
|
||||
jyfvnlupj-jhukf-jvhapun-klwsvftlua-903[yrgnq]
|
||||
zsxyfgqj-jll-qfgtwfytwd-489[sazdc]
|
||||
oxjmxdfkd-zxkav-zlxqfkd-rpbo-qbpqfkd-263[vauwt]
|
||||
dsxxw-cee-bcnyprkclr-470[ghzni]
|
||||
enzcntvat-fpniratre-uhag-jbexfubc-533[aentb]
|
||||
froruixo-mhoobehdq-dqdobvlv-803[odbhq]
|
||||
raphhxuxts-qphzti-bpcpvtbtci-115[pthbc]
|
||||
jvsvymbs-jhukf-jvhapun-shivyhavyf-955[yabwx]
|
||||
ykhknbqh-ywjzu-odellejc-498[ehjkl]
|
||||
avw-zljyla-ihzrla-zlycpjlz-201[uvdxz]
|
||||
wdjcvuvmyjpn-nxvqzibzm-cpio-hvivbzhzio-967[vizbc]
|
||||
xgjougizobk-pkrrehkgt-ktmotkkxotm-150[gnkzc]
|
||||
kyelcrga-aylbw-rcaflmjmew-808[wsmtg]
|
||||
laffe-atyzghrk-igtje-jkyomt-462[taefg]
|
||||
hqtyeqsjylu-uww-ijehqwu-608[quweh]
|
||||
kzgwomvqk-kivlg-kcabwumz-amzdqkm-200[cdavq]
|
||||
avw-zljyla-jhukf-shivyhavyf-305[ahvyf]
|
||||
guahyncw-vumeyn-xypyfijgyhn-370[ynghu]
|
||||
kwtwznct-jiasmb-zmikycqaqbqwv-564[wbjnt]
|
||||
sorozgxe-mxgjk-hatte-vaxingyotm-228[enmvq]
|
||||
hqtyeqsjylu-sxesebqju-bqrehqjeho-348[nxucm]
|
||||
qzoggwtwsr-awzwhofm-ufors-tzcksf-rsdofhasbh-948[sfowh]
|
||||
jfifqxov-doxab-mixpqfz-doxpp-qbzeklildv-185[rydoa]
|
||||
gsvvswmzi-vehmsegxmzi-fyrrc-irkmriivmrk-204[imrvs]
|
||||
dlhwvupglk-qlssfilhu-ylzlhyjo-721[lhsuy]
|
||||
crwwv-zxkav-absbilmjbkq-679[bakvw]
|
||||
xzwrmkbqtm-lgm-zmkmqdqvo-720[mqkzb]
|
||||
eqnqthwn-ecpfa-eqcvkpi-qrgtcvkqpu-570[qcepk]
|
||||
ftzgxmbv-utldxm-nlxk-mxlmbgz-891[mxlbg]
|
||||
xqvwdeoh-gbh-ghyhorsphqw-387[hgoqw]
|
||||
rdchjbtg-vgpst-uadltg-pcpanhxh-141[mtvxn]
|
||||
sebehvkb-vbemuh-udwyduuhydw-140[ubdeh]
|
||||
gpsxdprixkt-qphzti-stktadebtci-921[tipdk]
|
||||
nij-mywlyn-dyffsvyuh-omyl-nymncha-214[obtqu]
|
||||
rdggdhxkt-rpcsn-rdpixcv-bpgztixcv-843[cdgpr]
|
||||
pdjqhwlf-iorzhu-uhdftxlvlwlrq-803[rtwsz]
|
||||
tinnm-dzoghwq-ufogg-twbobqwbu-428[bgown]
|
||||
etyyx-qzaahs-lzmzfdldms-781[cmnek]
|
||||
willimcpy-dyffsvyuh-fuvilunils-448[sjytb]
|
||||
dpotvnfs-hsbef-qmbtujd-hsbtt-ufdiopmphz-831[zmvga]
|
||||
hdgdovmt-bmvyz-ytz-xpnojhzm-nzmqdxz-109[hzpfs]
|
||||
ksodcbwnsr-qobrm-aobousasbh-324[bosar]
|
||||
myvybpev-tovvilokx-kmaescsdsyx-380[vsyek]
|
||||
nbhofujd-cbtlfu-tbmft-571[mkltr]
|
||||
sedikcuh-whqtu-uww-jusxdebewo-764[uwedh]
|
||||
jvsvymbs-jhukf-klclsvwtlua-825[jxhaq]
|
||||
crwwv-mixpqfz-doxpp-jxohbqfkd-575[serbn]
|
||||
fmsledevhsyw-hci-xiglrspskc-646[scehi]
|
||||
xekdwvwnzkqo-ywjzu-oanreyao-576[dwrqm]
|
||||
gzefmnxq-vqxxknqmz-pqbmdfyqzf-352[xuyzs]
|
||||
bqvvu-zua-hkceopeyo-706[eouva]
|
||||
ytu-xjhwjy-gfxpjy-btwpxmtu-151[bynhm]
|
||||
npmhcargjc-hcjjwzcyl-bctcjmnkclr-886[cjhlm]
|
||||
xlrypetn-dnlgpyrpc-sfye-dlwpd-119[znfjd]
|
||||
ejpanjwpekjwh-ydkykhwpa-hkceopeyo-758[patzv]
|
||||
lhkhszqx-fqzcd-eknvdq-rsnqzfd-287[qdzfh]
|
||||
froruixo-fdqgb-orjlvwlfv-179[optcg]
|
||||
jvsvymbs-jovjvshal-jbzavtly-zlycpjl-253[zcnfy]
|
||||
avw-zljyla-ibuuf-ylzlhyjo-149[xtcfz]
|
||||
bnmrtldq-fqzcd-bzmcx-bnzshmf-cdudknoldms-157[whdus]
|
||||
sno-rdbqds-idkkxadzm-rsnqzfd-703[dsknq]
|
||||
vkppo-sxesebqju-tuiywd-504[epsub]
|
||||
ryexqpqhteki-zubboruqd-husuylydw-790[nimls]
|
||||
vetllbybxw-lvtoxgzxk-angm-kxvxbobgz-995[xbglv]
|
||||
rdchjbtg-vgpst-qphzti-gtrtxkxcv-817[mayne]
|
||||
dzczkrip-xiruv-irdgrxzex-vxx-rthlzjzkzfe-503[xwhmg]
|
||||
qcbgiasf-ufors-pogysh-sbuwbssfwbu-454[nshbt]
|
||||
qcbgiasf-ufors-qobrm-qcohwbu-igsf-hsghwbu-142[bsfgh]
|
||||
zgmfyxypbmsq-pyzzgr-amlryglkclr-392[yglmr]
|
||||
myxcewob-qbkno-cmkfoxqob-rexd-vklybkdybi-146[wxnuy]
|
||||
amlqskcp-epybc-afmamjyrc-pcacgtgle-418[campe]
|
||||
muqfedyput-isqludwuh-xkdj-huqsgkyiyjyed-660[nbtda]
|
||||
vkppo-sqdto-vydqdsydw-114[pzbiy]
|
||||
ziuxioqvo-jcvvg-lmxtwgumvb-668[fnbjv]
|
||||
rdchjbtg-vgpst-rwdrdapit-stepgibtci-271[tdgip]
|
||||
zbytomdsvo-zvkcdsm-qbkcc-zebmrkcsxq-614[nwmol]
|
||||
sbnqbhjoh-fhh-efqbsunfou-103[hjxvu]
|
||||
vagreangvbany-ohaal-nanylfvf-273[zfytn]
|
||||
wihmogyl-aluxy-dyffsvyuh-lyuwkocmcncih-760[efwrt]
|
||||
irgyyolokj-inuiurgzk-ykxboiky-332[ikyog]
|
||||
gntmfefwitzx-xhfajsljw-mzsy-fhvznxnynts-437[mkuja]
|
||||
tpspahyf-nyhkl-yhiipa-zhslz-539[yzmib]
|
||||
encuukhkgf-rncuvke-itcuu-nqikuvkeu-700[ukcen]
|
||||
mybbycsfo-mkxni-oxqsxoobsxq-198[oxbsm]
|
||||
kyelcrga-zsllw-kypicrgle-730[nvjmt]
|
||||
rdggdhxkt-uadltg-stktadebtci-713[btson]
|
||||
dpssptjwf-qmbtujd-hsbtt-usbjojoh-623[miqos]
|
||||
tcfkqcevkxg-dcumgv-vgejpqnqia-336[cgqve]
|
||||
fodvvlilhg-gbh-orjlvwlfv-699[eykml]
|
||||
bxaxipgn-vgpst-eaphixr-vgphh-ejgrwphxcv-817[rsizj]
|
||||
pualyuhapvuhs-ibuuf-jvuahputlua-305[hlzmu]
|
||||
qekrixmg-nippcfier-gsrxemrqirx-646[xhnfm]
|
||||
pdjqhwlf-plolwdub-judgh-fdqgb-ghsorbphqw-543[aiewf]
|
||||
fruurvlyh-vfdyhqjhu-kxqw-fxvwrphu-vhuylfh-647[hufvr]
|
||||
ftzgxmbv-utldxm-ftgtzxfxgm-891[txfgm]
|
||||
htsxzrjw-lwfij-gfxpjy-btwpxmtu-359[jtwxf]
|
||||
gpewwmjmih-jyddc-hci-vigimzmrk-932[imcdg]
|
||||
yuxufmdk-sdmpq-qss-oazfmuzyqzf-378[fmqsu]
|
||||
oxmeeuruqp-eomhqzsqd-tgzf-efadmsq-508[oxhfu]
|
||||
qzoggwtwsr-xszzmpsob-hsqvbczcum-610[scyrz]
|
||||
avw-zljyla-ibuuf-ayhpupun-981[ualpy]
|
||||
zloolpfsb-oxyyfq-bkdfkbbofkd-471[untjs]
|
||||
tvsnigxmpi-jpsaiv-erepcwmw-308[nwfcx]
|
||||
jvuzbtly-nyhkl-qlssfilhu-mpuhujpun-929[ulhjn]
|
||||
yknnkoera-ydkykhwpa-pnwejejc-290[setqd]
|
||||
tcrjjzwzvu-gcrjkzt-xirjj-ljvi-kvjkzex-659[jzkrv]
|
||||
gntmfefwitzx-hmthtqfyj-xytwflj-307[tsebr]
|
||||
gspsvjyp-wgezirkiv-lyrx-pefsvexsvc-412[svepg]
|
||||
ugfkmewj-yjsvw-xdgowj-jwuwanafy-944[hysdk]
|
||||
sbnqbhjoh-qmbtujd-hsbtt-tijqqjoh-597[bzawy]
|
||||
vetllbybxw-unggr-tgterlbl-631[mfwxo]
|
||||
tipfxvezt-avccpsvre-tljkfdvi-jvimztv-139[vtice]
|
||||
hvbizodx-wpiit-yzkvmohzio-603[ytsvn]
|
||||
sno-rdbqds-eknvdq-nodqzshnmr-209[dnqso]
|
||||
rtqlgevkng-dcumgv-rwtejcukpi-960[yhfsz]
|
||||
ugjjgkanw-tmffq-ksdwk-606[bqdtn]
|
||||
jyfvnlupj-jhukf-jvhapun-ylhjxbpzpapvu-981[ygxts]
|
||||
kzeed-gzssd-ijufwyrjsy-203[sdejy]
|
||||
chnylhuncihuf-jfumncw-alumm-uwkocmcncih-864[btkms]
|
||||
qfmcusbwq-suu-ghcfous-922[btras]
|
||||
bgmxkgtmbhgte-ietlmbv-zktll-xgzbgxxkbgz-215[isyml]
|
||||
pwcvonofrcig-xszzmpsob-zopcfohcfm-506[avfiu]
|
||||
iruzfrtkzmv-dzczkrip-xiruv-treup-tfrkzex-fgvirkzfej-633[rzfik]
|
||||
mrxivrexmsrep-nippcfier-qerekiqirx-776[ombwt]
|
||||
iwcjapey-ywjzu-ykwpejc-ykjpwejiajp-420[ztgqm]
|
||||
joufsobujpobm-qmbtujd-hsbtt-sfbdrvjtjujpo-467[jbotu]
|
||||
xst-wigvix-yrwxefpi-gerhc-hiwmkr-230[mylsd]
|
||||
ytu-xjhwjy-ojqqdgjfs-xmnuunsl-931[mvbrl]
|
||||
zovldbkfz-avb-jxkxdbjbkq-159[bkdjv]
|
||||
qvbmzvibqwvit-ntwemz-amzdqkma-226[mqvza]
|
||||
eadalsjq-yjsvw-xdgowj-ljsafafy-840[nqijl]
|
||||
dszphfojd-tdbwfohfs-ivou-bdrvjtjujpo-233[ximod]
|
||||
gsvvswmzi-tpewxmg-kveww-erepcwmw-308[wizmq]
|
||||
ktwbhtvmbox-ktuubm-hixktmbhgl-657[hynsw]
|
||||
iuruxlar-vrgyzoi-mxgyy-sgtgmksktz-488[ufytd]
|
||||
nzydfxpc-rclop-awldetn-rcldd-nzyeltyxpye-379[pusht]
|
||||
iehepwnu-cnwza-ynukcajey-lhwopey-cnwoo-pnwejejc-212[enwcj]
|
||||
vcibutulxiom-jfumncw-alumm-ijyluncihm-214[muicl]
|
||||
pyknyegle-aylbw-qyjcq-392[hzumy]
|
||||
atyzghrk-xghhoz-cuxqynuv-436[cmdsl]
|
||||
vcibutulxiom-jfumncw-alumm-jolwbumcha-682[dgfeu]
|
||||
cybyjqho-whqtu-isqludwuh-xkdj-cqdqwucudj-946[qudch]
|
||||
lejkrscv-jtrmvexvi-ylek-uvgrikdvek-893[vekri]
|
||||
nvrgfezqvu-upv-jkfirxv-789[vfrue]
|
||||
fnjyxwrinm-ljwmh-lxjcrwp-bjunb-173[ljyap]
|
||||
gsrwyqiv-kvehi-qekrixmg-fyrrc-wepiw-360[tnixb]
|
||||
gsvvswmzi-fyrrc-hitevxqirx-308[irvsx]
|
||||
nglmtuex-ynssr-vahvhetmx-wxlbzg-267[xeghl]
|
||||
qjopwxha-acc-ykjpwejiajp-524[gjqhn]
|
||||
wrs-vhfuhw-mhoobehdq-dqdobvlv-803[pdlvm]
|
||||
otzkxtgzoutgr-inuiurgzk-uvkxgzouty-878[modya]
|
||||
gvcskirmg-fyrrc-xvemrmrk-568[rmcgk]
|
||||
xqvwdeoh-hjj-ghsduwphqw-231[hwdjq]
|
||||
sbejpbdujwf-cvooz-nbslfujoh-441[nwsha]
|
||||
zixppfcfba-oxyyfq-ixyloxqlov-315[xfoyi]
|
||||
bdavqofuxq-rxaiqd-pqhqxabyqzf-846[yzpfi]
|
||||
vhglnfxk-zktwx-vetllbybxw-ktuubm-hixktmbhgl-501[bkltx]
|
||||
tinnm-qobrm-qcohwbu-zcuwghwqg-584[ejnps]
|
||||
rmn-qcapcr-kyelcrga-cee-bcqgel-730[cerag]
|
||||
apwmeclga-djmucp-ylyjwqgq-756[acgjl]
|
||||
pybgmyargtc-amlqskcp-epybc-zsllw-pcacgtgle-392[cglpa]
|
||||
jxdkbqfz-avb-tlohpelm-783[blade]
|
||||
npmhcargjc-bwc-pcqcypaf-808[phjds]
|
||||
rdchjbtg-vgpst-qphzti-itrwcdadvn-843[zueyn]
|
||||
votubcmf-qmbtujd-hsbtt-sfdfjwjoh-259[tbfjd]
|
||||
ujoon-gpqqxi-advxhixrh-661[mlyen]
|
||||
ykjoqian-cnwza-lhwopey-cnwoo-iwjwcaiajp-576[waoci]
|
||||
gpewwmjmih-wgezirkiv-lyrx-xvemrmrk-386[mreiw]
|
||||
gzefmnxq-ngzzk-pqhqxabyqzf-352[drqzm]
|
||||
nwilwcejc-nwxxep-oanreyao-394[lqxwm]
|
||||
hdgdovmt-bmvyz-zbb-gjbdnodxn-785[bdgmn]
|
||||
gsrwyqiv-kvehi-aietsrmdih-gerhc-gsexmrk-viwievgl-672[bsytl]
|
||||
rdchjbtg-vgpst-tvv-rdcipxcbtci-999[ctvbd]
|
||||
joufsobujpobm-fhh-tbmft-389[mnyql]
|
||||
fnjyxwrinm-mhn-anbnjalq-147[nmbzl]
|
||||
wfummczcyx-yaa-guhuaygyhn-578[yaucg]
|
||||
qfkkj-mfyyj-dpcgtnpd-457[dfjkp]
|
||||
ncjzrpytn-mfyyj-wzrtdetnd-509[qnwdl]
|
||||
sno-rdbqds-bnknqetk-idkkxadzm-bnmszhmldms-365[dkmns]
|
||||
wkqxodsm-cmkfoxqob-rexd-vyqscdsmc-380[cdmoq]
|
||||
dpssptjwf-tdbwfohfs-ivou-tbmft-233[lbdah]
|
||||
dpssptjwf-dipdpmbuf-xpsltipq-285[pdsfi]
|
||||
qyujihctyx-wuhxs-wiuncha-jolwbumcha-214[zlbuy]
|
||||
oxmeeuruqp-pkq-iadwetab-716[eapqu]
|
||||
wfummczcyx-ohmnuvfy-xsy-womnigyl-mylpcwy-214[ymcwf]
|
||||
xmtjbzidx-ytz-ncdkkdib-525[wmfvr]
|
||||
qekrixmg-jpsaiv-xiglrspskc-204[dwvst]
|
||||
kwtwznct-zijjqb-mvoqvmmzqvo-356[qmnjk]
|
||||
ltpedcxots-ytaanqtpc-rdcipxcbtci-999[lkmsv]
|
||||
zovldbkfz-yrkkv-abmxoqjbkq-913[kboqv]
|
||||
yhkpvhjapcl-wshzapj-nyhzz-jvuahputlua-279[cnmzy]
|
||||
pdjqhwlf-edvnhw-whfkqrorjb-257[unmsk]
|
||||
rgllk-bdavqofuxq-rxaiqd-iadwetab-664[mkeil]
|
||||
wdjcvuvmyjpn-nxvqzibzm-cpio-nzmqdxzn-343[nzmvc]
|
||||
xzwrmkbqtm-kpwkwtibm-nqvivkqvo-486[dcwog]
|
||||
rdchjbtg-vgpst-rpcsn-rdpixcv-hidgpvt-765[stnfw]
|
||||
buzahisl-lnn-thuhnltlua-955[oschg]
|
||||
enzcntvat-ohaal-bcrengvbaf-793[anbce]
|
||||
eqpuwogt-itcfg-uecxgpigt-jwpv-hkpcpekpi-362[pgcei]
|
||||
avw-zljyla-qlssfilhu-dvyrzovw-175[lvasw]
|
||||
iuruxlar-xgsvgmotm-inuiurgzk-zxgototm-982[mlnut]
|
||||
tyepcyletzylw-prr-opalcexpye-925[boymz]
|
||||
hqcfqwydw-rqiauj-huiuqhsx-556[abndo]
|
||||
tcrjjzwzvu-vxx-kirzezex-841[zxejr]
|
||||
qspkfdujmf-sbccju-sfdfjwjoh-285[ktqja]
|
||||
vcibutulxiom-wbiwifuny-guleyncha-682[uzxms]
|
||||
ejpanjwpekjwh-bqvvu-ywjzu-nayaerejc-628[jeawn]
|
||||
kwvacumz-ozilm-kivlg-lmdmtwxumvb-330[mlvik]
|
||||
kzgwomvqk-kwvacumz-ozilm-zijjqb-bziqvqvo-460[zqvik]
|
||||
wfintfhynaj-wfggny-qfgtwfytwd-775[fwgnt]
|
||||
tcfkqcevkxg-hnqygt-vgejpqnqia-622[qgcek]
|
||||
yrwxefpi-nippcfier-wepiw-386[ipewf]
|
||||
xjinphzm-bmvyz-zbb-omvdidib-109[bimzd]
|
||||
qlm-pbzobq-ciltbo-abmilvjbkq-107[jvsxc]
|
||||
tfcfiwlc-gcrjkzt-xirjj-tfekrzedvek-295[wjhqa]
|
||||
nchhg-moo-lmdmtwxumvb-382[mhobc]
|
||||
bknsykmdsfo-lkcuod-myxdksxwoxd-692[azknp]
|
||||
jxdkbqfz-yrkkv-qoxfkfkd-211[kfdqx]
|
||||
jlidywncfy-dyffsvyuh-lyuwkocmcncih-344[ycfdh]
|
||||
iuruxlar-igtje-iugzotm-lotgtiotm-358[tigou]
|
||||
foadouwbu-gqojsbusf-vibh-qighcasf-gsfjwqs-116[sfbgo]
|
||||
ucynmlgxcb-aylbw-nspafyqgle-288[fswap]
|
||||
amppmqgtc-aylbw-qfgnngle-808[galmn]
|
||||
kfg-jvtivk-irsszk-jrcvj-659[jkvir]
|
||||
xjinphzm-bmvyz-ytz-yzqzgjkhzio-681[ubzyj]
|
||||
plolwdub-judgh-fdqgb-ilqdqflqj-491[dlqbf]
|
||||
crwwv-yrkkv-bkdfkbbofkd-783[inhxy]
|
||||
nuatmlmdpage-otaoaxmfq-pqhqxabyqzf-612[qvdxy]
|
||||
pualyuhapvuhs-ibuuf-jbzavtly-zlycpjl-435[znegj]
|
||||
eza-dpncpe-clmmte-lylwjdtd-509[delcm]
|
||||
tfejldvi-xiruv-irsszk-uvgcfpdvek-659[rvaql]
|
||||
pybgmyargtc-aylbw-qcptgacq-600[oscut]
|
||||
kdijqrbu-vbemuh-qdqboiyi-972[biqdu]
|
||||
irgyyolokj-vrgyzoi-mxgyy-jkvruesktz-644[ygkor]
|
||||
rgllk-uzfqdzmfuazmx-otaoaxmfq-oazfmuzyqzf-560[zfamo]
|
||||
iqmbazulqp-eomhqzsqd-tgzf-fqotzaxask-378[qmsxo]
|
||||
oqnidbshkd-atmmx-kzanqzsnqx-703[vztcl]
|
||||
vjpwncrl-lqxlxujcn-mnyjacvnwc-615[cnjlv]
|
||||
bkzrrhehdc-cxd-bnmszhmldms-807[dhmbc]
|
||||
kgjgrypw-epybc-zyqicr-bcnyprkclr-704[mzsty]
|
||||
apuut-ezggtwzvi-yzqzgjkhzio-265[pmlri]
|
||||
rflsjynh-hfsid-htfynsl-qtlnxynhx-567[cqbst]
|
||||
zilqwikbqdm-lgm-nqvivkqvo-330[wmxzv]
|
||||
lahxpnwrl-ouxfna-anlnrerwp-355[nzkvm]
|
||||
veqtekmrk-ikk-tyvglewmrk-386[kemrt]
|
||||
sgmtkzoi-pkrrehkgt-rumoyzoiy-514[zytsw]
|
||||
yflexwxoalrp-oxyyfq-mrozexpfkd-341[xfoye]
|
||||
bwx-amkzmb-kivlg-kwibqvo-xczkpiaqvo-434[lkqrz]
|
||||
clxalrtyr-nsznzwlep-opdtry-145[nczlj]
|
||||
bjfutsneji-jll-wjhjnansl-125[szrni]
|
||||
bcfhvdczs-cpxsqh-ghcfous-324[chsfb]
|
||||
aflwjfslagfsd-kusnwfywj-zmfl-ugflsafewfl-216[flswa]
|
||||
gcfcnuls-aluxy-wuhxs-jolwbumcha-578[uclah]
|
||||
pyknyegle-pybgmyargtc-aylbw-qfgnngle-470[gyeln]
|
||||
oazegyqd-sdmpq-gzefmnxq-qss-geqd-fqefuzs-508[qesdf]
|
||||
xjmmjndqz-mvwwdo-yzkvmohzio-551[ypzog]
|
||||
zekvierkzferc-treup-uvgcfpdvek-789[stzno]
|
||||
ejpanjwpekjwh-xqjju-odellejc-576[enmtc]
|
||||
ltpedcxots-tvv-sthxvc-115[skptq]
|
||||
jshzzpmplk-yhiipa-zavyhnl-981[tluns]
|
||||
mvhkvbdib-agjrzm-yzqzgjkhzio-629[wcyms]
|
||||
yhwooebeaz-acc-paydjkhkcu-316[acehk]
|
||||
gzefmnxq-otaoaxmfq-emxqe-326[emqxa]
|
||||
frqvxphu-judgh-udeelw-pdqdjhphqw-335[orhsy]
|
||||
frqvxphu-judgh-gbh-uhfhlylqj-153[hufgj]
|
||||
cjpibabsepvt-cvooz-fohjoffsjoh-623[emnjh]
|
||||
yflexwxoalrp-zxkav-zlxqfkd-xkxivpfp-783[xfklp]
|
||||
froruixo-hjj-zrunvkrs-777[synml]
|
||||
jvuzbtly-nyhkl-jhukf-jvhapun-jvuahputlua-929[ndjmy]
|
||||
kwzzwaqdm-kivlg-kwibqvo-nqvivkqvo-460[yzmsr]
|
||||
ktiaaqnqml-zijjqb-apqxxqvo-798[qaijx]
|
||||
hqfxxnknji-hfsid-wjhjnansl-931[nhjfi]
|
||||
xjmmjndqz-wpiit-vxlpdndodji-941[dijmn]
|
||||
ksodcbwnsr-rms-cdsfohwcbg-896[xvuol]
|
||||
eza-dpncpe-tyepcyletzylw-nsznzwlep-nzyeltyxpye-847[xydvf]
|
||||
emixwvqhml-jiasmb-ivitgaqa-928[iamqv]
|
||||
etyyx-idkkxadzm-ehmzmbhmf-313[josnm]
|
||||
lhkhszqx-fqzcd-bgnbnkzsd-qdzbpthrhshnm-911[bqzra]
|
||||
dzczkrip-xiruv-upv-wzeretzex-945[icynm]
|
||||
wihmogyl-aluxy-mwupyhayl-bohn-lymyulwb-266[nuraz]
|
||||
kmjezxodgz-xcjxjgvoz-zibdizzmdib-239[yzkgs]
|
||||
hqfxxnknji-wfggny-hzxytrjw-xjwanhj-593[jnxhw]
|
||||
oknkvcta-itcfg-eqpuwogt-itcfg-ecpfa-eqcvkpi-ucngu-986[cgtef]
|
||||
ykhknbqh-oywrajcan-dqjp-qoan-paopejc-810[ondma]
|
||||
nwilwcejc-ywjzu-ykwpejc-naoawnyd-238[zjwsh]
|
||||
dzczkrip-xiruv-sleep-rercpjzj-451[wykfr]
|
||||
gpewwmjmih-nippcfier-qerekiqirx-178[ieprm]
|
||||
bqvvu-oywrajcan-dqjp-wjwhuoeo-420[jowaq]
|
||||
kzgwomvqk-xtiabqk-oziaa-bziqvqvo-148[qaiko]
|
||||
fab-eqodqf-eomhqzsqd-tgzf-fdmuzuzs-820[fqzde]
|
||||
lzfmdshb-dff-sqzhmhmf-755[fhmds]
|
||||
bpvctixr-gpqqxi-sthxvc-297[xcipq]
|
||||
xjgjmapg-kmjezxodgz-xcjxjgvoz-vivgtndn-915[jhigl]
|
||||
pbybeshy-qlr-bcrengvbaf-715[jwrxz]
|
||||
uqtqbizg-ozilm-kivlg-tijwzibwzg-902[lrepd]
|
||||
excdklvo-zbytomdsvo-zvkcdsm-qbkcc-crszzsxq-614[rpnqm]
|
||||
ucynmlgxcb-njyqrga-epyqq-kylyeckclr-418[yclqe]
|
||||
hqtyeqsjylu-sxesebqju-mehaixef-556[eqshj]
|
||||
chnylhuncihuf-wifilzof-jfumncw-alumm-uwkocmcncih-734[cufhi]
|
||||
wyvqljapsl-ihzrla-zhslz-669[ncmjb]
|
||||
jlidywncfy-wifilzof-vohhs-omyl-nymncha-578[yfhil]
|
||||
jfifqxov-doxab-bdd-abpfdk-913[dbfao]
|
||||
xjgjmapg-wpiit-gjbdnodxn-551[zvmhq]
|
||||
dkqjcbctfqwu-tcfkqcevkxg-ecpfa-eqcvkpi-tgegkxkpi-414[ckeqf]
|
||||
tmrszakd-idkkxadzm-lzmzfdldms-365[hwgsv]
|
||||
nglmtuex-vtgwr-vhtmbgz-mxvaghehzr-215[tsfmz]
|
||||
uiovmbqk-rmttgjmiv-bziqvqvo-252[vimqb]
|
||||
iehepwnu-cnwza-fahhuxawj-oanreyao-680[mavot]
|
||||
tvsnigxmpi-glsgspexi-gsrxemrqirx-100[xwqld]
|
||||
qcbgiasf-ufors-rms-aobousasbh-818[sabof]
|
||||
sgmtkzoi-hatte-xkykgxin-722[ktgix]
|
||||
nglmtuex-xzz-tvjnblbmbhg-787[kopjm]
|
||||
ikhcxvmbex-vtgwr-xgzbgxxkbgz-683[ncalt]
|
||||
tbxmlkfwba-molgbzqfib-zxkav-pbosfzbp-419[bfzak]
|
||||
gspsvjyp-fmsledevhsyw-tpewxmg-kveww-eguymwmxmsr-568[nihyt]
|
||||
gvcskirmg-gerhc-jmrergmrk-672[lrzta]
|
||||
xmrrq-uzgugdslw-jwsuimakalagf-502[agulm]
|
||||
shoewudys-hqrryj-tulubefcudj-530[ixkdy]
|
||||
mrxivrexmsrep-hci-wxsveki-230[miwqn]
|
||||
tmrszakd-bgnbnkzsd-otqbgzrhmf-599[qjfny]
|
||||
rwcnawjcrxwju-kdwwh-fxatbqxy-355[jezwy]
|
||||
hjgbwuladw-tmffq-ogjckzgh-528[gnlzr]
|
||||
lxuxaodu-lxwbdvna-pajmn-ajkkrc-dbna-cnbcrwp-511[umnsy]
|
||||
nsyjwsfyntsfq-idj-jslnsjjwnsl-619[ywpco]
|
||||
ubhatstkwhnl-ktuubm-mktbgbgz-761[btkug]
|
||||
lhkhszqx-fqzcd-bgnbnkzsd-dmfhmddqhmf-781[bdnsk]
|
||||
vehmsegxmzi-ikk-vieguymwmxmsr-854[pnkle]
|
||||
udskkaxawv-jsttal-esfsywewfl-528[sawef]
|
||||
jxdkbqfz-avb-cfkxkzfkd-887[kfbdx]
|
||||
jyddc-jpsaiv-gsrxemrqirx-386[rdijs]
|
||||
tagzsrsjvgmk-wyy-umklgewj-kwjnauw-606[wgjka]
|
||||
wyvqljapsl-ihzrla-huhsfzpz-409[znhcm]
|
||||
jvuzbtly-nyhkl-zjhclunly-obua-jbzavtly-zlycpjl-331[lyjzb]
|
||||
gvaaz-sbejpbdujwf-gmpxfs-vtfs-uftujoh-467[tsogk]
|
||||
aczupnetwp-nsznzwlep-cplnbftdtetzy-535[nptze]
|
||||
gifavtkzcv-vxx-jrcvj-815[vcjxa]
|
||||
ytu-xjhwjy-uqfxynh-lwfxx-uzwhmfxnsl-255[yzalu]
|
||||
eqttqukxg-ecpfa-eqcvkpi-cpcnauku-440[zotsy]
|
||||
ncjzrpytn-nlyoj-nzletyr-nzyeltyxpye-639[zhytj]
|
||||
bgmxkgtmbhgte-lvtoxgzxk-angm-phkdlahi-605[nyzfq]
|
||||
ytu-xjhwjy-xhfajsljw-mzsy-qfgtwfytwd-801[rewpl]
|
||||
gpsxdprixkt-rwdrdapit-prfjxhxixdc-349[qrskt]
|
||||
ojk-nzxmzo-kgvnodx-bmvnn-hvivbzhzio-629[cvkyu]
|
||||
ktwbhtvmbox-unggr-ybgtgvbgz-267[nbjvs]
|
||||
wdjcvuvmyjpn-nxvqzibzm-cpio-kpmxcvndib-109[tndsr]
|
||||
froruixo-gbh-zrunvkrs-439[roubf]
|
||||
oazegyqd-sdmpq-otaoaxmfq-fdmuzuzs-352[admoq]
|
||||
fruurvlyh-fdqgb-sxufkdvlqj-699[mynfj]
|
||||
votubcmf-qmbtujd-hsbtt-efqmpznfou-441[wznfd]
|
||||
emixwvqhml-akidmvomz-pcvb-abwziom-928[gwxum]
|
||||
qcbgiasf-ufors-foppwh-sbuwbssfwbu-506[sbfuw]
|
||||
mrxivrexmsrep-fyrrc-pskmwxmgw-100[pmxwc]
|
||||
nsyjwsfyntsfq-uqfxynh-lwfxx-uzwhmfxnsl-125[bwtze]
|
||||
kwtwznct-kpwkwtibm-nqvivkqvo-928[kwtvi]
|
||||
lahxpnwrl-ouxfna-vjwjpnvnwc-953[nwajl]
|
||||
ydjuhdqjyedqb-hqrryj-ixyffydw-114[cwzyi]
|
||||
rgndvtcxr-snt-igpxcxcv-661[uqvtr]
|
||||
bgmxkgtmbhgte-pxtihgbsxw-vahvhetmx-tvjnblbmbhg-371[bghtm]
|
||||
pwcvonofrcig-tzcksf-fsoqeiwgwhwcb-428[swzyd]
|
||||
yaxsnlcrun-ajkkrc-bqryyrwp-641[ycnxl]
|
||||
jef-iushuj-hqrryj-bqrehqjeho-738[zaytn]
|
||||
bdavqofuxq-bxmefuo-sdmee-xmnadmfadk-352[dmaef]
|
||||
qcffcgwjs-qobrm-rsdzcmasbh-350[mezyn]
|
||||
jxdkbqfz-yxphbq-tlohpelm-289[wfvbo]
|
||||
hdgdovmt-bmvyz-wvnfzo-yzndbi-915[dvzbm]
|
||||
hqcfqwydw-sxesebqju-vydqdsydw-712[smhbn]
|
||||
qfmcusbwq-qobrm-qcohwbu-zcuwghwqg-636[qwbcu]
|
||||
jvsvymbs-msvdly-jvuahputlua-955[vsuaj]
|
||||
hqcfqwydw-rkddo-huiuqhsx-218[dhquw]
|
||||
shoewudys-uww-jhqydydw-816[jysaf]
|
||||
dyz-combod-zvkcdsm-qbkcc-dbksxsxq-562[cdbks]
|
||||
tcrjjzwzvu-treup-tfrkzex-rercpjzj-217[fewxh]
|
||||
pynffvsvrq-cynfgvp-tenff-grpuabybtl-481[fnpvy]
|
||||
yhtwhnpun-jyfvnlupj-wshzapj-nyhzz-huhsfzpz-773[zyogh]
|
||||
bnqqnrhud-bzmcx-lzqjdshmf-443[jmvdf]
|
||||
yrwxefpi-glsgspexi-hitevxqirx-282[bzvyj]
|
||||
iuxxuyobk-hgyqkz-zkinturume-540[ukixy]
|
||||
gpsxdprixkt-rpcsn-prfjxhxixdc-271[ewstq]
|
||||
vrurcjah-pajmn-ouxfna-anlnrerwp-615[qsfhg]
|
||||
mrxivrexmsrep-tpewxmg-kveww-hiwmkr-854[votlz]
|
||||
irgyyolokj-ixeumktoi-jek-rghuxgzuxe-904[egiko]
|
||||
dsxxw-zyqicr-pcacgtgle-912[swjtv]
|
||||
yhkpvhjapcl-kfl-ylhjxbpzpapvu-955[phlaj]
|
||||
gsrwyqiv-kvehi-tpewxmg-kveww-hitevxqirx-724[mnsyt]
|
||||
muqfedyput-rkddo-vydqdsydw-998[mlqhr]
|
||||
ykhknbqh-ywjzu-iwngapejc-628[hjknw]
|
||||
uwtojhynqj-gzssd-ywfnsnsl-619[snjwy]
|
||||
emixwvqhml-kpwkwtibm-zmkmqdqvo-148[mkqwi]
|
||||
upv-uvjzxe-347[uvejp]
|
||||
cqwdujys-ryexqpqhteki-rkddo-skijecuh-iuhlysu-738[uyvln]
|
||||
fydelmwp-nsznzwlep-dezclrp-379[elpzd]
|
||||
yknnkoera-fahhuxawj-wymqeoepekj-914[kwucf]
|
||||
hwbba-vqr-ugetgv-lgnnadgcp-ugtxkegu-908[guabe]
|
||||
xqvwdeoh-ixccb-udeelw-fxvwrphu-vhuylfh-803[heuvw]
|
||||
xekdwvwnzkqo-acc-iwjwcaiajp-784[mswzt]
|
||||
rdchjbtg-vgpst-qphzti-jhtg-ithixcv-609[thgic]
|
||||
cqwdujys-vbemuh-iqbui-608[ubiqc]
|
||||
htsxzrjw-lwfij-gfxpjy-rfsfljrjsy-489[jfrsl]
|
||||
rtqlgevkng-dcumgv-wugt-vguvkpi-362[gvukt]
|
||||
oxaflxzqfsb-mixpqfz-doxpp-zrpqljbo-pbosfzb-185[pbfox]
|
||||
lqwhuqdwlrqdo-hjj-sxufkdvlqj-569[qdjlh]
|
||||
wihmogyl-aluxy-wuhxs-wiuncha-nywbhifias-994[ztysn]
|
||||
hwbba-oknkvcta-itcfg-dwppa-tgugctej-492[tacgb]
|
||||
mybbycsfo-oqq-wkxkqowoxd-120[oqbkw]
|
||||
tyepcyletzylw-dnlgpyrpc-sfye-xlcvpetyr-249[xawqz]
|
||||
hjgbwuladw-tmffq-ugflsafewfl-684[flwag]
|
||||
sbnqbhjoh-kfmmzcfbo-bobmztjt-493[jnism]
|
||||
ykjoqian-cnwza-lhwopey-cnwoo-zarahkliajp-602[ihrlb]
|
||||
pynffvsvrq-fpniratre-uhag-erfrnepu-585[kwurl]
|
||||
vetllbybxw-utldxm-mxvaghehzr-787[lxbeh]
|
||||
ktfitzbgz-lvtoxgzxk-angm-nlxk-mxlmbgz-787[gxzkl]
|
||||
emixwvqhml-rmttgjmiv-tijwzibwzg-876[tszyl]
|
||||
esyfwlau-udskkaxawv-hdsklau-yjskk-ksdwk-658[ksadu]
|
||||
jsvagsulanw-tskcwl-jwuwanafy-216[oklsn]
|
||||
wfummczcyx-mwupyhayl-bohn-xymcah-552[xcazi]
|
||||
tbxmlkfwba-oxyyfq-xkxivpfp-705[xfbkp]
|
||||
ytu-xjhwjy-rflsjynh-uqfxynh-lwfxx-ijuqtdrjsy-853[ztoub]
|
||||
cvabijtm-jiasmb-tijwzibwzg-564[qatln]
|
||||
jef-iushuj-uww-ixyffydw-816[ptbea]
|
||||
zntargvp-fpniratre-uhag-svanapvat-715[dnmgz]
|
||||
mvydjvxodqz-zbb-jkzmvodjin-343[fxmnr]
|
||||
xlrypetn-nlyoj-dlwpd-873[ldnpy]
|
||||
jrncbavmrq-pnaql-pbngvat-ybtvfgvpf-117[hgwjo]
|
||||
guahyncw-dyffsvyuh-uhufsmcm-786[ufhyc]
|
||||
ide-htrgti-rpcsn-rdpixcv-igpxcxcv-115[ciprx]
|
||||
nwilwcejc-ydkykhwpa-qoan-paopejc-628[acpwe]
|
||||
udpsdjlqj-sodvwlf-judvv-oderudwrub-673[dujvl]
|
||||
xekdwvwnzkqo-lhwopey-cnwoo-zarahkliajp-966[zdklq]
|
||||
ixccb-iorzhu-xvhu-whvwlqj-803[emzxn]
|
||||
gpbepvxcv-gpqqxi-prfjxhxixdc-297[utzsx]
|
||||
zntargvp-wryylorna-fuvccvat-871[dxepl]
|
||||
jvyyvzpcl-ipvohghykvbz-yhiipa-yljlpcpun-149[aupdo]
|
||||
lzfmdshb-okzrshb-fqzrr-lzmzfdldms-651[ndpcm]
|
||||
krxqjijamxdb-bljenwpna-qdwc-mnyuxhvnwc-381[njwxa]
|
||||
apuut-xviyt-yzkvmohzio-395[iotuv]
|
||||
rzvkjiduzy-kgvnodx-bmvnn-mzxzdqdib-187[tayqb]
|
||||
pkl-oaynap-xwogap-owhao-888[zlbay]
|
||||
ynukcajey-nwxxep-paydjkhkcu-394[kyace]
|
||||
fnjyxwrinm-ouxfna-mnbrpw-771[nfmrw]
|
||||
lejkrscv-tfcfiwlc-irsszk-nfibjyfg-399[fcisj]
|
||||
dwbcjkun-ljwmh-anlnrerwp-589[nwjlr]
|
||||
hdgdovmt-bmvyz-ojk-nzxmzo-wpiit-omvdidib-291[nmqdz]
|
||||
nwzekwypera-xwogap-hwxknwpknu-810[wknpa]
|
||||
htwwtxnaj-ojqqdgjfs-wjxjfwhm-567[jwfhq]
|
||||
ynukcajey-zua-lqnydwoejc-420[xqrgw]
|
||||
pelbtravp-cynfgvp-tenff-npdhvfvgvba-559[vfpna]
|
||||
ibghopzs-foppwh-aobousasbh-142[ranfu]
|
||||
qxdwpopgsdjh-tvv-rdcipxcbtci-713[wscpi]
|
||||
vkppo-sbqiiyvyut-vbemuh-husuylydw-452[uyvbh]
|
||||
lqwhuqdwlrqdo-vfdyhqjhu-kxqw-orjlvwlfv-699[qlwdh]
|
||||
tcrjjzwzvu-gcrjkzt-xirjj-vexzevvizex-113[gusom]
|
||||
wsvsdkbi-qbkno-lexxi-kmaescsdsyx-614[mnoyt]
|
||||
kmjezxodgz-xviyt-xjvodib-jkzmvodjin-681[jdiov]
|
||||
kgjgrypw-epybc-kyelcrga-njyqrga-epyqq-asqrmkcp-qcptgac-990[cgpqy]
|
||||
tagzsrsjvgmk-hdsklau-yjskk-xafsfuafy-736[sakfg]
|
||||
iwcjapey-xqjju-wymqeoepekj-472[wshmz]
|
||||
ckgvutofkj-xghhoz-zxgototm-618[dapcq]
|
||||
excdklvo-bkllsd-zebmrkcsxq-692[sdyzv]
|
||||
ugdgjxmd-jsttal-ogjckzgh-320[nxksp]
|
||||
dmbttjgjfe-gmpxfs-fohjoffsjoh-675[emswj]
|
||||
esyfwlau-wyy-kwjnauwk-762[zfkst]
|
||||
htsxzrjw-lwfij-gzssd-xytwflj-359[jswfl]
|
||||
bnmrtldq-fqzcd-bzmcx-bnzshmf-cdozqsldms-157[rchap]
|
||||
enqvbnpgvir-wryylorna-hfre-grfgvat-247[rgnva]
|
||||
rzvkjiduzy-mvwwdo-hvivbzhzio-629[vzidh]
|
||||
rgllk-omzpk-ymzmsqyqzf-742[ytshk]
|
||||
wyvqljapsl-kfl-shivyhavyf-175[lvyaf]
|
||||
zloolpfsb-molgbzqfib-oxyyfq-absbilmjbkq-731[rdypn]
|
||||
wlqqp-srjbvk-glityrjzex-399[jlqrb]
|
||||
foadouwbu-qvcqczohs-hsqvbczcum-402[coqub]
|
||||
gsrwyqiv-kvehi-wgezirkiv-lyrx-wlmttmrk-334[dxqri]
|
||||
apwmeclga-afmamjyrc-amlryglkclr-470[dvjwq]
|
||||
amjmpdsj-aylbw-amyrgle-bcqgel-756[fmsjn]
|
||||
pbybeshy-sybjre-ynobengbel-507[beyns]
|
||||
jchipqat-rpcsn-hwxeexcv-505[yozns]
|
||||
excdklvo-nio-bomosfsxq-458[bhmlt]
|
||||
oaxadrgx-ngzzk-ymzmsqyqzf-534[eqjfa]
|
||||
ajyqqgdgcb-zsllw-umpiqfmn-262[sdmlk]
|
||||
wkqxodsm-lexxi-cobfsmoc-510[tpnbi]
|
||||
tcfkqcevkxg-ecpfa-eqcvkpi-octmgvkpi-986[ckepv]
|
||||
pbybeshy-onfxrg-qrcyblzrag-845[bryga]
|
||||
rdggdhxkt-hrpktcvtg-wjci-gtrtxkxcv-479[tgckr]
|
||||
willimcpy-jfumncw-alumm-lywycpcha-500[utskn]
|
||||
qyujihctyx-luxciuwncpy-yaa-mbcjjcha-942[tzusp]
|
||||
pelbtravp-pnaql-fgbentr-585[pabel]
|
||||
jef-iushuj-vbemuh-tuiywd-140[jvndh]
|
||||
rwcnawjcrxwju-kjbtnc-mnyuxhvnwc-355[cnwjr]
|
||||
dszphfojd-tdbwfohfs-ivou-ufdiopmphz-285[dfohp]
|
||||
uqtqbizg-ozilm-kivlg-kwibqvo-ewzsapwx-538[iqwzb]
|
||||
njmjubsz-hsbef-cbtlfu-bobmztjt-649[dtsjy]
|
||||
zlilocri-zxkav-zlxqfkd-pefmmfkd-887[zijtp]
|
||||
iwcjapey-ydkykhwpa-oanreyao-576[jfnpy]
|
||||
pybgmyargtc-zgmfyxypbmsq-zyqicr-mncpyrgmlq-600[gzfir]
|
||||
houngfgxjuay-yigbktmkx-natz-ygrky-228[gykan]
|
||||
lnkfaypeha-zua-odellejc-680[gmnlj]
|
||||
vhglnfxk-zktwx-cxeeruxtg-kxlxtkva-319[xkteg]
|
||||
wfintfhynaj-gzssd-qfgtwfytwd-541[mztfn]
|
||||
amlqskcp-epybc-aylbw-nspafyqgle-886[alpyb]
|
||||
iuruxlar-pkrrehkgt-ygrky-774[tsflj]
|
||||
xtwtelcj-rclop-clmmte-opgpwzaxpye-145[tskxr]
|
||||
bqvvu-ywjzu-ykwpejc-hwxknwpknu-862[wkujn]
|
||||
enqvbnpgvir-zntargvp-cynfgvp-tenff-ybtvfgvpf-585[vfngp]
|
||||
rzvkjiduzy-xviyt-xjvodib-xjiovdihzio-967[pjzrk]
|
||||
njmjubsz-hsbef-sbnqbhjoh-cvooz-pqfsbujpot-623[bjosh]
|
||||
zixppfcfba-mixpqfz-doxpp-zlkqxfkjbkq-653[pfxkq]
|
||||
hdgdovmt-bmvyz-kgvnodx-bmvnn-rjmfncjk-239[rpovu]
|
||||
hdgdovmt-bmvyz-xviyt-yzndbi-109[pdslu]
|
||||
xjinphzm-bmvyz-kgvnodx-bmvnn-vivgtndn-525[nvmbd]
|
||||
eqnqthwn-eqttqukxg-hnqygt-rwtejcukpi-544[qteng]
|
||||
zvyvgnel-tenqr-sybjre-grpuabybtl-793[lyfvq]
|
||||
tcorcikpi-ecpfa-eqcvkpi-ugtxkegu-596[teibn]
|
||||
nwzekwypera-fahhuxawj-lqnydwoejc-810[mszph]
|
||||
mhi-lxvkxm-cxeeruxtg-kxvxbobgz-605[palbn]
|
||||
wfummczcyx-jlidywncfy-vumeyn-mylpcwym-838[ijqrb]
|
||||
fhezusjybu-zubboruqd-cqdqwucudj-374[ubdqc]
|
||||
kgjgrypw-epybc-aylbw-amyrgle-qcptgacq-314[mjlic]
|
||||
tcfkqcevkxg-dwppa-ucngu-362[trzmu]
|
||||
oazegyqd-sdmpq-gzefmnxq-eomhqzsqd-tgzf-qzsuzqqduzs-560[dmrkq]
|
||||
jlidywncfy-vohhs-xypyfijgyhn-110[yhfij]
|
||||
ftzgxmbv-lvtoxgzxk-angm-hixktmbhgl-163[gxmtb]
|
||||
xgjougizobk-vrgyzoi-mxgyy-cuxqynuv-644[yntxg]
|
||||
yknnkoera-lhwopey-cnwoo-odellejc-524[qypjt]
|
||||
eza-dpncpe-upwwjmply-zapcletzyd-769[pezac]
|
||||
cvabijtm-ntwemz-zmikycqaqbqwv-564[mqabc]
|
||||
irgyyolokj-kmm-rghuxgzuxe-410[gkmor]
|
||||
ahngzyzqcntr-idkkxadzm-sdbgmnknfx-807[ndkza]
|
||||
surmhfwloh-fkrfrodwh-pdqdjhphqw-829[myflz]
|
||||
elrkdcdugrxv-edvnhw-xvhu-whvwlqj-387[mhtue]
|
||||
sbejpbdujwf-xfbqpojafe-ezf-mphjtujdt-155[tqslv]
|
||||
shoewudys-rkddo-tuiywd-686[sntpq]
|
||||
qcffcgwjs-dzoghwq-ufogg-igsf-hsghwbu-350[psevy]
|
||||
ibghopzs-qobrm-qcohwbu-zopcfohcfm-740[obchf]
|
||||
atyzghrk-vrgyzoi-mxgyy-sgtgmksktz-150[tjpiv]
|
||||
luxciuwncpy-dyffsvyuh-nluchcha-994[cuhyf]
|
||||
vcibutulxiom-xsy-uwkocmcncih-214[ciumo]
|
||||
vkppo-rkddo-cqdqwucudj-140[dckop]
|
||||
ftzgxmbv-vtgwr-kxlxtkva-163[tvxgk]
|
||||
jlidywncfy-vumeyn-womnigyl-mylpcwy-682[ylmnw]
|
||||
mtzslklcozfd-nlyoj-nzletyr-qtylyntyr-639[xswlz]
|
||||
ixccb-fkrfrodwh-fxvwrphu-vhuylfh-283[fhrcu]
|
||||
ykjoqian-cnwza-oywrajcan-dqjp-qoan-paopejc-212[tsrfk]
|
||||
yhkpvhjapcl-yhiipa-jbzavtly-zlycpjl-617[ftaes]
|
||||
qmpmxevc-kvehi-wgezirkiv-lyrx-xvemrmrk-516[emrvi]
|
||||
fmsledevhsyw-veffmx-wivzmgiw-204[efmvw]
|
||||
zlkprjbo-doxab-zxkav-zlxqfkd-obxznrfpfqflk-237[rqgnd]
|
||||
ksodcbwnsr-qobrm-qcohwbu-aobousasbh-142[bosac]
|
||||
yrwxefpi-glsgspexi-qevoixmrk-828[atyoc]
|
||||
dlhwvupglk-wshzapj-nyhzz-klzpnu-877[fbewu]
|
||||
bjfutsneji-idj-hzxytrjw-xjwanhj-359[wyrxt]
|
||||
zsxyfgqj-bjfutsneji-hfsid-htfynsl-zxjw-yjxynsl-229[jsfyn]
|
||||
pualyuhapvuhs-ibuuf-klwsvftlua-643[ualfh]
|
||||
yknnkoera-ydkykhwpa-klanwpekjo-420[kanye]
|
||||
iehepwnu-cnwza-ydkykhwpa-zaoecj-420[pozyv]
|
||||
ftzgxmbv-ktuubm-mxvaghehzr-605[mbght]
|
||||
gntmfefwitzx-xhfajsljw-mzsy-ywfnsnsl-983[woefn]
|
||||
xmtjbzidx-wpiit-ncdkkdib-863[idbkt]
|
||||
ktiaaqnqml-uqtqbizg-ozilm-kpwkwtibm-ivitgaqa-850[ywdzl]
|
||||
dyz-combod-sxdobxkdsyxkv-mkxni-wkxkqowoxd-224[isamh]
|
||||
nsyjwsfyntsfq-rnqnyfwd-lwfij-kqtbjw-uzwhmfxnsl-151[roxtn]
|
||||
ykjoqian-cnwza-xqjju-nayaerejc-524[yvwax]
|
||||
ixccb-iorzhu-ilqdqflqj-569[fcjsy]
|
||||
ovbunmneqbhf-ohaal-qrfvta-819[abfhn]
|
||||
glrcplyrgmlyj-zyqicr-pcyaosgqgrgml-626[glryc]
|
||||
ajyqqgdgcb-bwc-ylyjwqgq-262[qgybc]
|
||||
fhezusjybu-rkddo-bewyijysi-608[ybdei]
|
||||
aflwjfslagfsd-kusnwfywj-zmfl-xafsfuafy-632[wltdc]
|
||||
iuxxuyobk-lruckx-vaxingyotm-644[xuiko]
|
||||
jyfvnlupj-kfl-thyrlapun-773[lfjnp]
|
||||
eqpuwogt-itcfg-tcfkqcevkxg-dcumgv-qrgtcvkqpu-934[ionzm]
|
||||
hqcfqwydw-sqdto-seqjydw-bqrehqjeho-998[qdehw]
|
||||
xst-wigvix-ikk-wivzmgiw-724[rtszg]
|
||||
tinnm-pibbm-zcuwghwqg-766[mfgbn]
|
||||
vkppo-rqiauj-cqdqwucudj-348[qucdj]
|
||||
bnmrtldq-fqzcd-ahngzyzqcntr-atmmx-dmfhmddqhmf-989[mdqfh]
|
||||
vkrhzxgbv-unggr-tgterlbl-319[tsrkm]
|
||||
wihmogyl-aluxy-wuhxs-uhufsmcm-526[uhmls]
|
||||
nzydfxpc-rclop-awldetn-rcldd-pyrtyppctyr-951[pcdry]
|
||||
egdytrixat-eaphixr-vgphh-pcpanhxh-921[hpaxe]
|
||||
nwzekwypera-lhwopey-cnwoo-hkceopeyo-654[eowpy]
|
||||
zovldbkfz-zlkprjbo-doxab-zxkav-ixyloxqlov-367[olxzb]
|
||||
lgh-kwujwl-xmrrq-kusnwfywj-zmfl-hmjuzskafy-372[gmait]
|
||||
ipvohghykvbz-jhukf-ylzlhyjo-357[awkcb]
|
||||
dmybmsuzs-otaoaxmfq-dqmocgueufuaz-976[muaod]
|
||||
zbytomdsvo-bkllsd-cdybkqo-796[eufzt]
|
||||
sbqiiyvyut-fbqijys-whqii-iqbui-998[ebfqa]
|
||||
qyujihctyx-wbiwifuny-guleyncha-838[ejitg]
|
||||
ikhcxvmbex-unggr-kxvxbobgz-683[ejuzo]
|
||||
hafgnoyr-ohaal-jbexfubc-923[bjmzn]
|
||||
shmml-wryylorna-genvavat-455[almnr]
|
||||
yknnkoera-xqjju-klanwpekjo-420[empdo]
|
||||
upq-tfdsfu-kfmmzcfbo-efwfmpqnfou-415[nmfed]
|
||||
xcitgcpixdcpa-rdchjbtg-vgpst-hrpktcvtg-wjci-stepgibtci-557[ctgip]
|
||||
fydelmwp-nsznzwlep-opgpwzaxpye-769[pewzl]
|
||||
glrcplyrgmlyj-cee-pcqcypaf-548[ymzlj]
|
||||
xmtjbzidx-wpiit-xjiovdihzio-265[ztyda]
|
||||
rwcnawjcrxwju-ljwmh-mnbrpw-901[wjrcm]
|
||||
wlqqp-tyftfcrkv-ivtvzmzex-841[tvfqz]
|
||||
thnulapj-wshzapj-nyhzz-zopwwpun-669[pzhnw]
|
||||
bpvctixr-rdggdhxkt-hrpktcvtg-wjci-pcpanhxh-401[chptg]
|
||||
eza-dpncpe-awldetn-rcldd-dlwpd-743[delpa]
|
||||
pbybeshy-sybjre-npdhvfvgvba-299[bvyeh]
|
||||
qmpmxevc-kvehi-jpsaiv-viwievgl-802[viemp]
|
||||
jrncbavmrq-pnaql-pbngvat-qrcyblzrag-715[arbnq]
|
||||
ugjjgkanw-wyy-kzahhafy-736[clxvm]
|
||||
mwupyhayl-bohn-nluchcha-682[hacln]
|
||||
qjopwxha-xwogap-ykjpwejiajp-108[jpawo]
|
||||
avw-zljyla-jhukf-huhsfzpz-175[hzafj]
|
||||
lzfmdshb-okzrshb-fqzrr-cdoknxldms-573[olwsf]
|
||||
cqwdujys-sbqiiyvyut-uww-iuhlysui-426[cwfuy]
|
||||
yaxsnlcrun-ljwmh-bqryyrwp-901[rylnw]
|
||||
cebwrpgvyr-pelbtravp-enoovg-znantrzrag-455[raegn]
|
||||
nbhofujd-qmbtujd-hsbtt-efwfmpqnfou-389[fbtud]
|
||||
pynffvsvrq-pnaql-pbngvat-ynobengbel-507[nmyvz]
|
||||
ltpedcxots-gpqqxi-ldgzhwde-739[bkapm]
|
||||
nglmtuex-vahvhetmx-wxiehrfxgm-527[zwksp]
|
||||
kgjgrypw-epybc-aylbw-amyrgle-qyjcq-626[ygabc]
|
||||
yflexwxoalrp-avb-abmilvjbkq-445[siqmz]
|
||||
jshzzpmplk-kfl-klclsvwtlua-331[lkpsz]
|
||||
ujoon-eaphixr-vgphh-prfjxhxixdc-193[hyzjx]
|
||||
dfcxsqhwzs-qobrm-zcuwghwqg-168[qwcgh]
|
||||
bqvvu-ydkykhwpa-klanwpekjo-966[kapvw]
|
||||
aoubshwq-pibbm-kcfygvcd-740[wnucy]
|
||||
1
internal/data/2016/DayOne/input.txt
Normal file
1
internal/data/2016/DayOne/input.txt
Normal file
@@ -0,0 +1 @@
|
||||
L2, L3, L3, L4, R1, R2, L3, R3, R3, L1, L3, R2, R3, L3, R4, R3, R3, L1, L4, R4, L2, R5, R1, L5, R1, R3, L5, R2, L2, R2, R1, L1, L3, L3, R4, R5, R4, L1, L189, L2, R2, L5, R5, R45, L3, R4, R77, L1, R1, R194, R2, L5, L3, L2, L1, R5, L3, L3, L5, L5, L5, R2, L1, L2, L3, R2, R5, R4, L2, R3, R5, L2, L2, R3, L3, L2, L1, L3, R5, R4, R3, R2, L1, R2, L5, R4, L5, L4, R4, L2, R5, L3, L2, R4, L1, L2, R2, R3, L2, L5, R1, R1, R3, R4, R1, R2, R4, R5, L3, L5, L3, L3, R5, R4, R1, L3, R1, L3, R3, R3, R3, L1, R3, R4, L5, L3, L1, L5, L4, R4, R1, L4, R3, R3, R5, R4, R3, R3, L1, L2, R1, L4, L4, L3, L4, L3, L5, R2, R4, L2
|
||||
1599
internal/data/2016/DayThree/input.txt
Normal file
1599
internal/data/2016/DayThree/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
5
internal/data/2016/DayTwo/input.txt
Normal file
5
internal/data/2016/DayTwo/input.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
UDRLRRRUULUUDULRULUDRDRURLLDUUDURLUUUDRRRLUUDRUUDDDRRRLRURLLLDDDRDDRUDDULUULDDUDRUUUDLRLLRLDUDUUUUDLDULLLDRLRLRULDDDDDLULURUDURDDLLRDLUDRRULDURDDLUDLLRRUDRUDDDLLURULRDDDRDRRLLUUDDLLLLRLRUULRDRURRRLLLLDULDDLRRRRUDRDULLLDDRRRDLRLRRRLDRULDUDDLDLUULRDDULRDRURRURLDULRUUDUUURDRLDDDURLDURLDUDURRLLLLRDDLDRUURURRRRDRRDLUULLURRDLLLDLDUUUDRDRULULRULUUDDULDUURRLRLRRDULDULDRUUDLLUDLLLLUDDULDLLDLLURLLLRUDRDLRUDLULDLLLUDRLRLUDLDRDURDDULDURLLRRRDUUDLRDDRUUDLUURLDRRRRRLDDUUDRURUDLLLRRULLRLDRUURRRRRLRLLUDDRLUDRRDUDUUUDRUDULRRULRDRRRDDRLUUUDRLLURURRLLDUDRUURDLRURLLRDUDUUDLLLUULLRULRLDLRDDDU
|
||||
DRRRDRUDRLDUUDLLLRLULLLUURLLRLDRLURDRDRDRLDUUULDRDDLDDDURURUDRUUURDRDURLRLUDRRRDURDRRRDULLRDRRLUUUURLRUULRRDUDDDDUURLDULUDLLLRULUDUURRDUULRRDDURLURRUDRDRLDLRLLULULURLRDLRRRUUURDDUUURDRDRUURUDLULDRDDULLLLLRLRLLUDDLULLUDDLRLRDLDULURDUDULRDDRLUDUUDUDRLLDRRLLDULLRLDURUDRLRRRDULUUUULRRLUDDDLDUUDULLUUURDRLLULRLDLLUUDLLUULUULUDLRRDDRLUUULDDRULDRLURUURDLURDDRULLLLDUDULUDURRDRLDDRRLRURLLRLLLLDURDLUULDLDDLULLLRDRRRDLLLUUDDDLDRRLUUUUUULDRULLLDUDLDLURLDUDULRRRULDLRRDRUUUUUURRDRUURLDDURDUURURULULLURLLLLUURDUDRRLRRLRLRRRRRULLDLLLRURRDULLDLLULLRDUULDUDUDULDURLRDLDRUUURLLDLLUUDURURUD
|
||||
UDUUUUURUDLLLRRRDRDRUDDRLLDRRLDRLLUURRULUULULRLLRUDDRLDRLUURDUDLURUULLLULLRRRULRLURRDDULLULULRUDDDUURDRLUDUURRRRUUULLRULLLDLURUDLDDLLRRRULDLLUURDRRRDRDURURLRUDLDLURDDRLLLUUDRUULLDLLLLUUDRRURLDDUDULUDLDURDLURUURDUUUURDLLLRUUURDUUUDLDUDDLUDDUDUDUDLDUDUUULDULUURDDLRRRULLUDRRDLUDULDURUURULLLLUDDDLURURLRLRDLRULRLULURRLLRDUDUDRULLRULRUDLURUDLLDUDLRDRLRDURURRULLDDLRLDDRLRDRRDLRDDLLLLDUURRULLRLLDDLDLURLRLLDULRURRRRDULRLRURURRULULDUURRDLURRDDLDLLLRULRLLURLRLLDDLRUDDDULDLDLRLURRULRRLULUDLDUDUDDLLUURDDDLULURRULDRRDDDUUURLLDRDURUDRUDLLDRUD
|
||||
ULRDULURRDDLULLDDLDDDRLDUURDLLDRRRDLLURDRUDDLDURUDRULRULRULULUULLLLDRLRLDRLLLLLRLRRLRLRRRDDULRRLUDLURLLRLLURDDRRDRUUUDLDLDRRRUDLRUDDRURRDUUUDUUULRLDDRDRDRULRLLDLDDLLRLUDLLLLUURLDLRUDRLRDRDRLRULRDDURRLRUDLRLRLDRUDURLRDLDULLUUULDRLRDDRDUDLLRUDDUDURRRRDLDURRUURDUULLDLRDUDDLUDDDRRRULRLULDRLDDRUURURLRRRURDURDRULLUUDURUDRDRLDLURDDDUDDURUDLRULULURRUULDRLDULRRRRDUULLRRRRLUDLRDDRLRUDLURRRDRDRLLLULLUULRDULRDLDUURRDULLRULRLRRURDDLDLLRUUDLRLDLRUUDLDDLLULDLUURRRLRDULRLRLDRLDUDURRRLLRUUDLUURRDLDDULDLULUUUUDRRULLLLLLUULDRULDLRUDDDRDRDDURUURLURRDLDDRUURULLULUUUDDLRDULDDLULDUDRU
|
||||
LRLRLRLLLRRLUULDDUUUURDULLLRURLDLDRURRRUUDDDULURDRRDURLRLUDLLULDRULLRRRDUUDDRDRULLDDULLLUURDLRLRUURRRLRDLDUDLLRLLURLRLLLDDDULUDUDRDLRRLUDDLRDDURRDRDUUULLUURURLRRDUURLRDLLUDURLRDRLURUURDRLULLUUUURRDDULDDDRULURUULLUDDDDLRURDLLDRURDUDRRLRLDLRRDDRRDDRUDRDLUDDDLUDLUDLRUDDUDRUDLLRURDLRUULRUURULUURLRDULDLDLLRDRDUDDDULRLDDDRDUDDRRRLRRLLRRRUUURRLDLLDRRDLULUUURUDLULDULLLDLULRLRDLDDDDDDDLRDRDUDLDLRLUDRRDRRDRUURDUDLDDLUDDDDDDRUURURUURLURLDULUDDLDDLRUUUULRDRLUDLDDLLLRLLDRRULULRLRDURRRLDDRDDRLU
|
||||
1
internal/data/2018/DayFive/input.txt
Normal file
1
internal/data/2018/DayFive/input.txt
Normal file
File diff suppressed because one or more lines are too long
1098
internal/data/2018/DayFour/input.txt
Normal file
1098
internal/data/2018/DayFour/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
601
internal/data/2021/DayFour/input.txt
Normal file
601
internal/data/2021/DayFour/input.txt
Normal file
@@ -0,0 +1,601 @@
|
||||
10,80,6,69,22,99,63,92,30,67,28,93,0,50,65,87,38,7,91,60,57,40,84,51,27,12,44,88,64,35,39,74,61,55,31,48,81,89,62,37,94,43,29,14,95,8,78,49,90,97,66,70,25,68,75,45,42,23,9,96,56,72,59,32,85,3,71,79,18,24,33,19,15,20,82,26,21,13,4,98,83,34,86,5,2,73,17,54,1,77,52,58,76,36,16,46,41,47,11,53
|
||||
|
||||
3 82 18 50 90
|
||||
16 37 52 67 28
|
||||
30 54 80 11 10
|
||||
60 79 7 65 58
|
||||
76 83 38 51 1
|
||||
|
||||
83 63 60 88 98
|
||||
70 87 5 99 14
|
||||
85 3 11 16 33
|
||||
72 69 97 36 49
|
||||
26 17 58 13 2
|
||||
|
||||
30 80 64 53 69
|
||||
36 0 32 46 70
|
||||
13 31 22 95 15
|
||||
12 35 5 84 21
|
||||
39 60 68 83 47
|
||||
|
||||
77 93 26 62 88
|
||||
87 76 80 10 63
|
||||
32 7 28 82 44
|
||||
43 30 31 16 74
|
||||
33 86 42 45 47
|
||||
|
||||
95 86 93 45 67
|
||||
20 58 63 35 97
|
||||
84 79 10 54 49
|
||||
48 66 75 23 61
|
||||
5 30 6 56 71
|
||||
|
||||
75 8 85 12 98
|
||||
37 51 91 24 23
|
||||
50 54 81 53 33
|
||||
72 57 52 25 6
|
||||
56 40 95 87 22
|
||||
|
||||
52 19 53 9 32
|
||||
23 99 48 26 73
|
||||
10 8 54 20 79
|
||||
49 45 34 74 90
|
||||
27 72 30 13 57
|
||||
|
||||
1 60 72 85 64
|
||||
62 39 56 93 78
|
||||
90 17 87 48 7
|
||||
9 13 45 23 69
|
||||
44 80 86 55 21
|
||||
|
||||
86 57 25 98 18
|
||||
42 75 38 9 66
|
||||
54 19 99 87 49
|
||||
33 32 53 8 6
|
||||
17 68 24 58 95
|
||||
|
||||
2 5 80 10 61
|
||||
27 16 40 67 78
|
||||
66 13 24 42 75
|
||||
25 7 35 11 85
|
||||
93 38 4 31 77
|
||||
|
||||
52 81 68 88 95
|
||||
82 50 46 87 20
|
||||
3 54 59 75 51
|
||||
92 93 38 72 4
|
||||
8 77 61 31 56
|
||||
|
||||
45 16 8 44 62
|
||||
92 23 42 20 74
|
||||
73 83 65 9 84
|
||||
55 13 21 70 59
|
||||
34 2 98 47 37
|
||||
|
||||
3 54 85 79 76
|
||||
42 29 45 12 46
|
||||
60 59 24 67 80
|
||||
89 15 99 68 48
|
||||
40 7 95 44 70
|
||||
|
||||
75 31 99 16 32
|
||||
80 56 43 30 36
|
||||
66 73 35 20 61
|
||||
67 28 89 23 54
|
||||
47 26 69 70 50
|
||||
|
||||
35 91 81 13 15
|
||||
73 1 37 68 28
|
||||
98 29 9 22 56
|
||||
12 59 82 67 31
|
||||
77 47 32 79 52
|
||||
|
||||
22 73 39 14 46
|
||||
99 0 27 34 40
|
||||
4 5 38 23 18
|
||||
64 26 89 59 79
|
||||
71 76 53 49 62
|
||||
|
||||
14 37 27 67 94
|
||||
76 16 79 61 83
|
||||
8 43 36 28 75
|
||||
10 4 24 56 44
|
||||
26 1 88 9 86
|
||||
|
||||
14 78 43 10 30
|
||||
56 29 1 61 9
|
||||
7 95 39 35 25
|
||||
33 87 71 97 21
|
||||
72 0 4 2 24
|
||||
|
||||
88 0 72 42 6
|
||||
53 79 58 80 20
|
||||
57 84 15 21 64
|
||||
98 17 43 8 95
|
||||
2 22 59 63 78
|
||||
|
||||
78 21 33 57 72
|
||||
10 69 85 73 16
|
||||
92 60 87 39 63
|
||||
40 15 77 80 56
|
||||
6 62 99 50 3
|
||||
|
||||
38 72 34 41 74
|
||||
90 29 9 6 91
|
||||
94 39 56 71 67
|
||||
53 21 22 32 10
|
||||
73 48 79 47 85
|
||||
|
||||
5 49 73 24 8
|
||||
75 12 11 47 69
|
||||
66 70 89 62 48
|
||||
99 3 29 88 30
|
||||
10 40 32 33 43
|
||||
|
||||
61 93 2 58 84
|
||||
47 62 51 16 82
|
||||
80 22 50 31 65
|
||||
76 85 83 4 40
|
||||
86 59 68 14 69
|
||||
|
||||
52 5 74 9 72
|
||||
84 69 38 1 27
|
||||
78 90 46 97 95
|
||||
57 21 32 93 29
|
||||
11 66 20 51 48
|
||||
|
||||
2 3 58 18 53
|
||||
11 96 63 33 13
|
||||
55 47 30 9 46
|
||||
98 85 79 19 65
|
||||
87 94 77 27 75
|
||||
|
||||
54 97 46 33 90
|
||||
99 93 22 0 51
|
||||
83 53 34 29 38
|
||||
35 65 80 82 9
|
||||
56 30 19 49 15
|
||||
|
||||
43 40 51 67 37
|
||||
4 30 85 24 21
|
||||
83 94 69 91 99
|
||||
13 32 82 86 12
|
||||
66 9 60 65 97
|
||||
|
||||
71 96 55 92 6
|
||||
83 8 63 56 18
|
||||
4 0 74 70 34
|
||||
15 87 44 80 29
|
||||
68 33 99 14 47
|
||||
|
||||
76 86 46 6 8
|
||||
90 80 77 30 62
|
||||
97 66 55 59 36
|
||||
1 43 27 15 57
|
||||
54 70 38 21 89
|
||||
|
||||
75 96 97 54 29
|
||||
62 43 69 57 88
|
||||
36 46 73 84 28
|
||||
18 98 38 63 4
|
||||
59 35 99 90 58
|
||||
|
||||
66 29 60 25 95
|
||||
91 4 87 76 41
|
||||
26 19 45 96 74
|
||||
7 82 3 81 31
|
||||
17 64 51 93 71
|
||||
|
||||
41 51 14 70 26
|
||||
35 38 50 25 13
|
||||
95 60 88 36 24
|
||||
66 94 62 97 83
|
||||
21 10 37 1 96
|
||||
|
||||
38 90 81 96 14
|
||||
40 82 71 18 83
|
||||
78 17 65 46 84
|
||||
7 92 63 79 49
|
||||
55 21 89 95 72
|
||||
|
||||
60 35 26 67 42
|
||||
59 77 15 6 75
|
||||
18 16 21 55 4
|
||||
98 49 38 43 30
|
||||
0 85 69 96 19
|
||||
|
||||
93 22 87 66 94
|
||||
7 43 98 18 57
|
||||
29 20 91 60 21
|
||||
28 51 17 10 14
|
||||
96 12 15 25 37
|
||||
|
||||
12 69 27 41 36
|
||||
58 11 42 44 9
|
||||
8 56 33 7 30
|
||||
70 64 78 17 61
|
||||
22 28 94 0 99
|
||||
|
||||
16 64 88 22 48
|
||||
65 42 23 7 26
|
||||
97 12 63 57 45
|
||||
29 94 91 21 54
|
||||
95 43 0 85 46
|
||||
|
||||
9 50 54 98 35
|
||||
45 37 84 87 5
|
||||
40 23 14 17 18
|
||||
73 43 86 41 59
|
||||
69 77 78 15 60
|
||||
|
||||
79 9 45 59 85
|
||||
38 56 64 95 60
|
||||
39 22 14 57 66
|
||||
98 53 83 76 16
|
||||
62 94 72 54 82
|
||||
|
||||
77 44 6 66 46
|
||||
9 89 11 84 63
|
||||
81 94 87 83 21
|
||||
22 90 1 93 92
|
||||
24 65 34 45 99
|
||||
|
||||
36 93 59 5 43
|
||||
76 49 51 0 68
|
||||
71 34 55 7 73
|
||||
14 10 45 63 95
|
||||
30 94 79 67 11
|
||||
|
||||
93 98 82 96 91
|
||||
3 79 55 70 24
|
||||
68 56 87 12 76
|
||||
19 31 67 1 54
|
||||
49 62 23 15 10
|
||||
|
||||
10 74 98 15 6
|
||||
14 31 66 38 86
|
||||
68 84 60 80 26
|
||||
34 72 87 92 61
|
||||
81 56 73 12 53
|
||||
|
||||
11 69 4 6 23
|
||||
38 47 16 99 96
|
||||
7 13 40 41 78
|
||||
12 5 1 18 88
|
||||
20 42 10 82 73
|
||||
|
||||
66 97 72 55 99
|
||||
26 59 6 79 53
|
||||
74 80 98 28 69
|
||||
25 95 17 29 34
|
||||
85 64 84 90 42
|
||||
|
||||
95 50 58 51 66
|
||||
48 27 81 94 0
|
||||
35 82 57 71 16
|
||||
32 93 70 40 25
|
||||
31 73 46 12 90
|
||||
|
||||
39 94 52 9 88
|
||||
3 23 59 77 29
|
||||
2 40 93 85 38
|
||||
74 97 12 50 1
|
||||
22 36 68 65 37
|
||||
|
||||
70 15 44 90 55
|
||||
42 20 82 0 78
|
||||
10 49 62 3 22
|
||||
91 73 84 40 28
|
||||
72 13 11 60 19
|
||||
|
||||
58 95 66 36 22
|
||||
91 99 77 94 44
|
||||
70 14 85 13 52
|
||||
49 6 2 50 35
|
||||
47 42 15 98 63
|
||||
|
||||
35 1 99 21 68
|
||||
93 32 30 76 5
|
||||
79 96 10 85 16
|
||||
19 69 81 78 70
|
||||
66 36 26 94 39
|
||||
|
||||
78 51 55 4 97
|
||||
21 36 53 1 26
|
||||
77 42 20 12 65
|
||||
17 52 6 40 16
|
||||
19 85 2 24 23
|
||||
|
||||
95 68 76 14 30
|
||||
19 11 64 99 60
|
||||
63 55 8 40 65
|
||||
41 75 62 53 83
|
||||
26 34 46 72 79
|
||||
|
||||
68 6 35 62 77
|
||||
43 14 88 7 11
|
||||
40 45 98 86 64
|
||||
3 53 56 87 30
|
||||
28 37 48 10 72
|
||||
|
||||
13 69 72 93 17
|
||||
1 46 8 56 37
|
||||
78 27 49 64 59
|
||||
81 99 33 76 79
|
||||
84 98 51 82 31
|
||||
|
||||
57 41 45 15 10
|
||||
65 72 79 17 29
|
||||
67 0 33 32 69
|
||||
56 96 92 46 53
|
||||
88 3 18 87 51
|
||||
|
||||
97 52 58 67 17
|
||||
51 69 43 20 63
|
||||
1 26 27 47 99
|
||||
53 23 14 90 86
|
||||
4 56 13 36 11
|
||||
|
||||
88 11 57 73 89
|
||||
43 34 91 15 58
|
||||
9 39 18 12 14
|
||||
1 98 29 77 52
|
||||
84 97 96 68 10
|
||||
|
||||
99 5 69 53 45
|
||||
10 43 24 60 55
|
||||
64 57 30 3 0
|
||||
22 65 68 32 83
|
||||
52 38 74 97 20
|
||||
|
||||
27 25 33 41 67
|
||||
54 42 3 1 55
|
||||
66 92 44 98 35
|
||||
14 82 5 10 39
|
||||
52 79 69 76 48
|
||||
|
||||
64 58 60 91 42
|
||||
45 55 35 9 72
|
||||
36 74 99 33 26
|
||||
67 4 25 50 14
|
||||
15 2 96 82 11
|
||||
|
||||
34 84 90 95 26
|
||||
8 66 52 43 63
|
||||
79 98 36 85 41
|
||||
47 24 33 88 71
|
||||
86 91 83 40 18
|
||||
|
||||
79 68 49 64 35
|
||||
23 57 27 77 71
|
||||
95 39 43 19 98
|
||||
78 62 65 58 60
|
||||
52 73 82 4 32
|
||||
|
||||
22 54 57 45 3
|
||||
43 85 30 60 94
|
||||
35 46 28 55 6
|
||||
82 42 13 83 59
|
||||
76 70 41 61 1
|
||||
|
||||
76 89 34 96 1
|
||||
95 60 55 23 88
|
||||
37 13 61 92 62
|
||||
98 77 32 82 31
|
||||
33 74 71 58 86
|
||||
|
||||
73 91 92 49 44
|
||||
53 6 29 8 95
|
||||
4 31 54 20 97
|
||||
98 57 2 65 75
|
||||
43 88 1 58 0
|
||||
|
||||
49 91 70 1 79
|
||||
17 90 33 65 54
|
||||
56 47 63 83 52
|
||||
8 45 72 84 39
|
||||
43 37 71 97 59
|
||||
|
||||
90 93 20 31 96
|
||||
98 84 2 87 73
|
||||
97 16 19 24 38
|
||||
14 11 94 92 36
|
||||
4 10 27 44 30
|
||||
|
||||
20 77 81 80 28
|
||||
35 51 93 24 62
|
||||
54 56 41 68 79
|
||||
29 67 89 60 12
|
||||
63 91 18 90 99
|
||||
|
||||
28 48 94 50 73
|
||||
20 27 34 59 43
|
||||
66 55 35 98 57
|
||||
40 53 21 99 4
|
||||
17 74 80 5 12
|
||||
|
||||
76 22 6 61 23
|
||||
70 67 69 33 9
|
||||
87 2 12 68 27
|
||||
13 52 82 15 84
|
||||
24 51 89 53 38
|
||||
|
||||
96 23 91 97 10
|
||||
50 8 68 67 0
|
||||
65 3 92 4 70
|
||||
53 77 59 86 66
|
||||
41 78 44 52 71
|
||||
|
||||
62 19 17 63 75
|
||||
43 88 15 84 13
|
||||
41 7 47 16 23
|
||||
12 71 8 83 50
|
||||
36 31 22 5 79
|
||||
|
||||
71 95 17 90 63
|
||||
64 52 32 3 93
|
||||
70 13 99 40 5
|
||||
22 18 83 11 55
|
||||
47 59 78 45 29
|
||||
|
||||
9 98 73 46 79
|
||||
5 51 84 26 40
|
||||
64 62 0 66 18
|
||||
33 83 47 1 63
|
||||
89 31 99 54 36
|
||||
|
||||
98 15 86 9 50
|
||||
67 7 75 85 17
|
||||
96 27 64 81 19
|
||||
80 30 29 54 52
|
||||
49 25 36 5 90
|
||||
|
||||
39 29 40 16 69
|
||||
38 55 67 71 59
|
||||
42 72 51 10 45
|
||||
94 75 21 27 0
|
||||
84 6 22 33 30
|
||||
|
||||
33 64 82 97 39
|
||||
79 7 62 49 99
|
||||
26 3 13 66 10
|
||||
37 98 15 80 47
|
||||
1 35 30 50 43
|
||||
|
||||
56 92 41 82 34
|
||||
68 79 11 0 65
|
||||
70 84 26 76 96
|
||||
1 72 31 80 8
|
||||
9 38 98 17 7
|
||||
|
||||
12 19 6 29 89
|
||||
96 87 70 75 77
|
||||
84 74 64 54 13
|
||||
16 68 44 79 43
|
||||
61 47 69 26 50
|
||||
|
||||
43 20 45 21 87
|
||||
80 50 83 26 49
|
||||
64 99 71 75 9
|
||||
18 96 6 94 88
|
||||
76 97 51 11 74
|
||||
|
||||
85 47 25 72 93
|
||||
96 36 81 55 27
|
||||
63 18 57 1 29
|
||||
9 35 83 88 98
|
||||
90 21 3 67 82
|
||||
|
||||
58 94 55 10 98
|
||||
2 24 71 93 57
|
||||
74 34 21 35 73
|
||||
89 88 6 16 8
|
||||
76 81 38 28 83
|
||||
|
||||
36 53 63 67 18
|
||||
51 74 60 69 85
|
||||
32 22 80 58 98
|
||||
34 92 13 12 26
|
||||
46 61 31 96 47
|
||||
|
||||
90 1 5 10 48
|
||||
12 76 95 83 17
|
||||
24 84 65 44 28
|
||||
81 80 41 79 15
|
||||
29 61 75 94 40
|
||||
|
||||
65 22 40 75 86
|
||||
93 77 46 35 87
|
||||
88 5 91 48 74
|
||||
92 28 66 47 30
|
||||
69 2 29 67 94
|
||||
|
||||
78 38 1 53 68
|
||||
84 70 26 7 72
|
||||
92 87 55 47 6
|
||||
51 82 36 73 28
|
||||
75 58 35 49 56
|
||||
|
||||
61 85 60 19 24
|
||||
16 23 71 74 33
|
||||
42 7 57 82 70
|
||||
14 97 59 99 49
|
||||
46 30 89 79 41
|
||||
|
||||
5 24 92 19 65
|
||||
0 80 33 78 23
|
||||
4 37 31 16 41
|
||||
79 73 88 36 67
|
||||
86 29 62 61 71
|
||||
|
||||
40 51 27 57 85
|
||||
53 68 31 60 83
|
||||
48 69 24 17 96
|
||||
54 89 22 77 64
|
||||
95 26 21 65 41
|
||||
|
||||
48 7 20 68 21
|
||||
31 22 1 99 96
|
||||
82 63 78 2 70
|
||||
18 83 58 92 51
|
||||
81 64 98 44 89
|
||||
|
||||
23 74 99 75 6
|
||||
81 14 37 8 85
|
||||
12 36 55 20 47
|
||||
88 7 90 87 43
|
||||
3 44 83 15 2
|
||||
|
||||
97 15 69 76 95
|
||||
13 44 31 10 14
|
||||
40 83 49 11 65
|
||||
43 98 55 92 89
|
||||
90 33 73 32 53
|
||||
|
||||
25 79 77 83 68
|
||||
5 10 23 15 19
|
||||
18 4 92 51 76
|
||||
17 90 70 49 39
|
||||
74 63 75 42 67
|
||||
|
||||
46 66 18 17 28
|
||||
75 76 78 72 44
|
||||
57 39 97 27 99
|
||||
36 58 62 90 82
|
||||
14 45 48 64 1
|
||||
|
||||
51 90 58 6 37
|
||||
28 30 57 54 10
|
||||
45 80 39 4 0
|
||||
29 17 66 18 55
|
||||
96 44 36 76 34
|
||||
|
||||
94 50 0 71 99
|
||||
11 67 96 87 64
|
||||
48 30 31 68 40
|
||||
89 55 23 92 42
|
||||
16 62 37 83 33
|
||||
|
||||
66 42 91 70 72
|
||||
28 69 96 17 71
|
||||
99 5 2 26 19
|
||||
60 87 51 83 76
|
||||
77 33 64 61 54
|
||||
|
||||
61 93 90 82 88
|
||||
80 11 25 40 28
|
||||
60 29 34 39 21
|
||||
24 13 72 77 2
|
||||
19 95 47 17 0
|
||||
|
||||
86 97 50 42 87
|
||||
7 18 80 23 30
|
||||
41 6 96 92 98
|
||||
36 45 77 71 38
|
||||
19 40 47 39 53
|
||||
|
||||
83 7 80 86 65
|
||||
37 22 19 84 92
|
||||
29 17 76 4 33
|
||||
97 50 1 12 21
|
||||
15 58 39 38 74
|
||||
1000
internal/data/2022/DayFour/input.txt
Normal file
1000
internal/data/2022/DayFour/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
300
internal/data/2022/DayThree/input.txt
Normal file
300
internal/data/2022/DayThree/input.txt
Normal file
@@ -0,0 +1,300 @@
|
||||
hqBqJsqHhHvhHHqlBvlfpHQQwLVzVwtVzjzttjQVSjMjwL
|
||||
gRTRnCRsFNGbTzLjwcSTMmSz
|
||||
dGgsRWPGdWgZJqBBqhfpPq
|
||||
HNCNJHCWJRRLqNJWlfrrrwsmlwGmmf
|
||||
dddvLdLjdDvjvswlmGwlZQtjrt
|
||||
dvcpbLVcvNJJHNPHSp
|
||||
QDprSpLQRLQrQDmQcQFZjbbhZwdRsRFbbBss
|
||||
gWGGPgNvJlgJzDlNGHCGPNZZgFBbsjbFFBwZwfhdZbZB
|
||||
lHTlGMHlGCPNvClzGzJHvGcrMcVtLqMLcrrQVcVDrqrm
|
||||
SrBpJFfldlFNslFJBZwsmwgVGGsCCVmZZD
|
||||
jLtjvzLQMtWjbbQvDZZwGRJGgwggGZgv
|
||||
MzqqjznQPqnnjznnctnFlSddPfHflhfBJFNdHd
|
||||
mPNNGVCRngnSbgNw
|
||||
WqsqlTssgvqvZWZzhsTzWhScdHtfJJnfbtSJwfczdtSS
|
||||
sqTvhpqQvWZQLmDpDGMDGrgL
|
||||
DQRcLQVLbbcbrFPcRtTBBBJnTZrrnmZTrMgJ
|
||||
slGjjjdlhMfvdMQTvg
|
||||
jlzNhWHhhWjHlwwwGLDSDtPQVtRzRbSzpp
|
||||
DzDgfvzfDczfHCHSlgHLCmWG
|
||||
PrpNPJtpPMBssmmVdmSVVr
|
||||
PSRMwPnMpBNtNBTnnZwDqzQFfwhjZZqfhh
|
||||
fzfBwhBJFbCwbwwg
|
||||
strtgtrPgmPgFRsMdRnZRMFn
|
||||
mrmLPDvGmmtSLDgmSqvHchhcHQzcQQJHBfBh
|
||||
NsgwPPDgsPHqsTqqmLbLrDRhmrRVrbVW
|
||||
lFpGFtfFlvSFplGFzptSGSSlhZbhjhfrmWbhLhmLbCZVZjWr
|
||||
ccplJQSGcSSpVFvNqqsqPNqPQPTwqd
|
||||
HFhPNNZGqSZrCDBVZBCB
|
||||
RJTtwczTzCRVQrRHpR
|
||||
mfgblfltwgwwmlJgcHNnGhSbFNnFsFjFqG
|
||||
tSRqNRHpHnMSTqpcmrWWfqfmrCQCrW
|
||||
lhGDtbgVVgDsDbhfldfwrzrfcdzwcr
|
||||
vtDDhsgFBTNZFBHS
|
||||
LcNpLLBNgdmHGmsBCrRBQDDwnwRj
|
||||
hSWfZVhfPJJhfVWbhzbnQqQnRRRqPvCCrjvjwj
|
||||
ztJSSJhzzSTJrZSbzzJTfzbZmLmggdmNMFNpmtmMGFFGNpmt
|
||||
TRdFfLbTnLvZVlZvznQV
|
||||
pgJGprJNhghhNjjPgPNrhNqqlVVlQVVQqQjfzBfQvZzB
|
||||
rmGmSwJPwJprrNDbsfMRsdTDcDWHfM
|
||||
QMpZZTtwMBttJMMbVqPpqLqbVlbqqN
|
||||
rjCFGrdGRwdDHSnqflPVLqqVNllrfl
|
||||
DHGDRvhvwTZhJWBQ
|
||||
LcQCCpLQVhrdcFQCJrmmmwDwvDtJJnnw
|
||||
TsZqqTzMRqZjfsjTTDjsNJnmnStRSHnnSJmnJSNH
|
||||
sMMZZbDjZFdbVCFphV
|
||||
FCcdFFGBsdDrbMNSmSdmQR
|
||||
tVttHVLhvVgfTTtffNSMQRMZSRmMQNmHSb
|
||||
gngvvwJtVVTvVvvvfwvJThhCzGcnsCjmCDmscPcGCsGsmz
|
||||
fsnzRNZswZszPRZSLflPpDhlhvgWHmjWvJjh
|
||||
bVcCqjbdjbcMdBrddrQphvHHmHWlggpWpppqJJ
|
||||
FBTdFQGrTjLNsNtL
|
||||
MSWWgMdgdbWbbfdgsPmddgCmSLZvSFvLQvnLrFNZvZFLlLLl
|
||||
hjpJjGthjRNRptwJJqVBllnvrrlTTQFZqnTZnn
|
||||
tjDGHwhHHjwjjJGpwjwjjJpwsdgffmbgMsmbDNcMcdmCPdsm
|
||||
MlDrrgnTDLlCCmCRFgRSCR
|
||||
HHhbbNQMccQFSNBmmpJNSJ
|
||||
MwbMbshsswVbHQsbcVMcrtDllTlLqfTGVzLGrTlT
|
||||
gSFzqQTpmVpQVpLFLrzJJRthlsQBlPsZsBhZst
|
||||
rwrNDdbHdBhRhZbsjB
|
||||
vvvMHwHcwGCwwNfMVSrqffWpSfSFzLmT
|
||||
RNgMgRCCgCfPNfvNgVQmhPVWWjWjLLdLBj
|
||||
JhJqqqwGDchsBVbdjldmBLmG
|
||||
schZzDwTJzFTsctHFMtfftgMttpM
|
||||
GHHWqWFWfWHqbRWsFZFmqZbhNjNDNppNjrjDcQdbpddhjr
|
||||
wCLCVPfwgVSnPNrQhnDcjcNpDD
|
||||
TPgLlggJLVwPVVPPwgTwvtSCFmzGGqzGZsGRqWBGfFRFJFRB
|
||||
LfFLmGTPHBfpHmzBLdZfBfZTbWWttWSDJtWVDJDtSWJzVCCV
|
||||
RssRRRhrRwQqMQQwnPngQrwvVSjttjJSjSVtWWCWjbVb
|
||||
hQPnnRnQgNcQqqQQcsZTNTLpdZZfpZFHNpBp
|
||||
VTCVVnwfFTvFmTCvWwJHdlhHWBJhJBRWNHgh
|
||||
ZbSMZbctGtScQSZsSpZpPpplhBhtdJDRDJjhdtlRJRjNRj
|
||||
rLsbBQSMBGspPGcMPQvnqmwzwmCVLmqVmwTF
|
||||
GVrrQVHHHQGTllQjPHGrlCQpZZpJFWZFzzjBssDJghzhFZ
|
||||
NSMmWmtqMWqSNbcctdLcdghpgpppssZgbgzpFzJJFs
|
||||
cfLqLwMRdtNLMlQrvflWTQPffQ
|
||||
FjtGflGsbNqjsmjGGGbmqQQQBQBTjdpTpJTWvJBddj
|
||||
CPrVRMnvvLSRHLnBpwdWTRBQwQzBzR
|
||||
SnZMZPcHMlqchsvGGb
|
||||
nnJnswzPCtmZDCpmhphD
|
||||
rSVVLQQQGQjwpdmdNmpS
|
||||
VvBcQvGcQgGLBgWrwznfJsncltJsJnssPM
|
||||
dhbwLStzSGmmmzJJvFgJNvnrgvhv
|
||||
VTsTsRscRsVBMRVTTsjZVPCnDNvfrPfDvNCfBrPNDJ
|
||||
scHHQTpJZjHwzLSHHtqHSt
|
||||
MHmFsBDmGpGTBfmCfWCffhzgvf
|
||||
wcjwnRLPZRVbtCjtNttGCh
|
||||
ZLGVJRrnPPPwQwPppqDHFpBFTpqFDr
|
||||
GzMgVfGRdRVngDjhqcjctrtrzzzs
|
||||
QbQSHwHSLbWwJJFwJPLPSWTQjrhqtjflThccsclCcscCCmmj
|
||||
JFbNSbLvHHLQFLvwQJFWSBVgMNGdBBnBMVfddpGngB
|
||||
sZHNJwMsvHswwvMWqBzhChWPMBzd
|
||||
bHQQQRDHRcRcDljttBldlPBdggBCqB
|
||||
QjnDbDjjjncRjbQnfZpvssZNHnppFNpvvp
|
||||
NdmfPNMHMdNMHcffHBCwwsvsRRllvwlcqjwscw
|
||||
VLhVGLpLShgvrjwFhjqfls
|
||||
pppnnQtVpGZVWtzGgVzgSSfnCCDmdPBMDbmmDMmdNMBmWNmm
|
||||
rrfgCrrMllfnBhBrdCFfWLFmmVFVWQvWwtwV
|
||||
TmSGSqNzvwwTFVvj
|
||||
NSGSmNbDzpmSpbHmSJqqlMgdMndcgdccdpgllRRh
|
||||
bbPtLnLcLJzTjcJbbTcttLcSgwmvWfVvfVvBgfmWVJMJMJMW
|
||||
ZsDNNGDRsrHzpNRwMlgRlgmMWvffWM
|
||||
FGzQpZGGLFjnSFbF
|
||||
DQZVDdWWNBtgWnJCnL
|
||||
SSHSmbHRFqGrmqJrbbGzjmzCwrvgvwnBwnCvprwvpwwPvv
|
||||
qFFFSmsRRzzFjcFsSsjmzJzflhlZTTThdhVflZlVDDhMcN
|
||||
cdvrFddqDtDvqgCDtFtrvvvFSmShPShJVJmMJSJbVBgTlmbM
|
||||
GzjpHzGHHfQNfJSlPQbJBSTJBM
|
||||
HWpspsWjNsGRHfpwNszzLfGqnCnZtdvvcZvwqFCcZqMZCv
|
||||
rhHhDhhDrRNwDRhNRLRqNPHjHSpVpVlljSSMnlHnjS
|
||||
sVVBsFBJBtBSPSjtjPPZZS
|
||||
JmddVTzsffcGNwzCqNqR
|
||||
nQfqFtZWFZnFJWfpGqhDsGLLPLVbrPhr
|
||||
CzjwMTgBgTNSGLVVDPbjbS
|
||||
wMCmgNNdgvzGdRQcFGFdfJ
|
||||
CbqCDnwFpDpCVfBPmPffPfRfpB
|
||||
svcsjlGJGnlnvjvzgQQgGzsZPhBRcRPhWfBZBhPhWRRhPN
|
||||
sJngnjSGGTGzgJGrrbCqLHrCLwSFqV
|
||||
hnRnJrwMHnQRRRwMhRrnJRBLZtBPdPSdtZZjjstsLHBP
|
||||
pBBzzcbTbzCcFzTvlSCZLCtSvvttdZ
|
||||
FWmNzBFNDnRqNRDM
|
||||
lvzlSPRDSpDJmNwNGgFpfsFN
|
||||
WBHrtrLBbhWHtdrFwFFsjzwfFjsdsF
|
||||
HWnrHnTWhWTCTzTBnRZqDDDCqZcclRvSJR
|
||||
qcdVbpcMFQcdMGcMFjjpbCnCGmCnJHDHDGJChzCJCJ
|
||||
wWwlSfBRgRNBDPJnCgCrgzms
|
||||
tBTfTRwlwRLNwTRmWtNwQFZtqcjcdcqpbdQMqMdd
|
||||
jJRzwDdwFdJddcjjFCFvQLvNlBhSBhCC
|
||||
gMMpbHpmnHpWfnlCSBQCPmPllQSs
|
||||
nHWHVfTGdTSjZzDT
|
||||
sCVTsBPltgDSbLvRMMDT
|
||||
WNrjNmWZwmZwfVLvLRbRNvMp
|
||||
mrHGrmnjqVzjGqdmCltlhFFllgsHBPCg
|
||||
wbglgTFRblnMRltJBNrDDWQbtdbN
|
||||
dqCpcjPLGfHZQBJNGGvQDZ
|
||||
SPssjVSqPCLpScfCgFRVmTlRwndlRwTR
|
||||
hWMWMhTTDgWMzGMszQShGWJPCQmPVCNPffPfVJftqNQC
|
||||
nbnHHwLrnswwPVCPZV
|
||||
nsRvFHLsvplvrcsSWDDDddjjDlMTjT
|
||||
HRCnhWZhCddgwRcwhdWZHHQLJzSLsSzjJwSjztsmtzsmLF
|
||||
VlVVNNVqTlMVbTVVMqvqvrDTjQfFtjstJmzftfzsSbtStJQb
|
||||
pQvvPpBqNBccPWWhcWWc
|
||||
glJTndVWCTDDVFvnVndVlCvwmBmqBBwQmwPwmMPggGsPGm
|
||||
NhcSrhNZHhZzRtHcNRrSMSMSFBMGmsQQGLMPPF
|
||||
hcpRzbcHjRhRbZRzZRztzRpJVdCdnfCnlFvdDTnJCVDjWd
|
||||
dqWvjjBdWWqMjdvvMJjWWjMGgcfchhzrhwbrwShwgzSqNb
|
||||
mmmmsVTlVlsLQmnpsNcfgfwNLgczhcGhzw
|
||||
RslpsnGGGlWdCZFMMRWR
|
||||
pfSpZSrdSMVDVVLMMDDZpdgRWMPGqqPGqmqqGGhGHNRN
|
||||
wwQBwtjvvJlvsnbTbvBRHgPmlqhlqWWHqZZgNm
|
||||
JnQwJvjTtzTZwJnbzzfCrfLCfdfdddfD
|
||||
PZcnljZFTVmQdlQh
|
||||
JCLLqBBCSNCCqzJNzStBpStBmsdhVTdmVWsWmdhfLhWVdfrR
|
||||
BpMzzqSzppMMqpJqqgzPFcjZjnTjgcjbPjPDPZ
|
||||
HLHWmqBHHqWbMHFtbgWcdhspPcPchndPpn
|
||||
ZRVSQZRfVZGRgnfsdhLgLndL
|
||||
jzJRwJRSJJvSlZQGRVwlSGZDMqmmCCCmtNbCmtCMzFNLbF
|
||||
fDhlBhhZmQRRfHwLdjHFFWQQjQ
|
||||
ZMTssVVzvbCqJddsLwwH
|
||||
TzgTbgGGzztMbbvzvVbGvSPBrlShRrfnNrnBDlNcRDZRZB
|
||||
bjfqGfvFfcHvRwGFRHjbgQtddlQljWpWnQgdWWll
|
||||
TSPVVSVwSzSDTDlntDndnlWddt
|
||||
hTrrNCBCVrCrrVshThHHbZvFGscwbfFGRJcZ
|
||||
jNhMjcgvMNgWggvttcFtchvPFFzdPPrQrrGGQQszRPQrRG
|
||||
wSCqCmmppbTwPnGHrQdrGCCD
|
||||
LlqwGmGScLcVthVt
|
||||
dGGrWWDqmCnwCCQMQrMbFHbMHsPFgPVZbgFPgg
|
||||
tLRTBwfvTBJcZFNFZRHSHPVN
|
||||
zjJLTvjcwDzqqhGD
|
||||
DzrWszFFrtBBhnhNCClHlnHbSbmlSn
|
||||
ZLwLcVVZcLVpvRwLgMLpLJgPmmQSNSTNbtTvQmCHQCClCHCt
|
||||
cfgZJwwVLJZPPVpRwzhzrrfGGBrGtDrBsf
|
||||
BTsdCQsQnwwdcCqqdCnsFvGFpFBvGzrLLmmzpvfG
|
||||
pjZjgPVlJVMVtgJSWLPvfFFFbNNmNbvbmL
|
||||
ggVplgJtHSSggdCHsscChhdnnR
|
||||
JddZcSlvvGFJNWVWFgQgVtFWhg
|
||||
nDqsHqCszwjCCPMnfhfBhtdWggfg
|
||||
bqppHqqHHbPLjLCppbwDdRNvdmcTmlNZGGbTTcNv
|
||||
lcZDSvztcHHcMSZVHVvMZBqBNNFNhBNTTmssBqBcFB
|
||||
bbGJQdQPpGfQJQdJfLFhmznhzLLNTFhNhf
|
||||
JGpWpPJddbPpPwpjbtZSzltDgWDSgvtrVv
|
||||
lJcNlNjPcmtFzHtHBJFg
|
||||
VPZdwGGWVrsdPWhWwhzzCzzFppDFMBtttFCr
|
||||
wshsLVfWTnGswdhwcmRjRmScqTcjlPNq
|
||||
BsBshRZQQsVdsZQZSdsPDwJDHNNHBztNNFMGGwMF
|
||||
nSTpLjcvHppzwwNt
|
||||
jcqncjjvfmgrCfvqrnZbmdmSsdbVWlsmhRdW
|
||||
FjjqRZjZFZWFqPvNvvPQpmbPDCmt
|
||||
GSnHSnrScncHhrtncGshVbmTmbpVvppCmpCTmTCmCC
|
||||
rHfnddwdfctlzFFgwqlj
|
||||
wBwlBmmhwRVThVBmFHnvHMnfsmFfHq
|
||||
jzwGSGJNZCCssHfsCPfv
|
||||
GJbzbZdbwJdtdQphRVWQ
|
||||
ztFZccVHFWHHLSDBpSBPhhZw
|
||||
fmjsCmqnNTJnvbTvLRPDlCpBSPBpRShl
|
||||
JqsGTSNJGqvqvNvttGQQGdFrQctrrF
|
||||
mNZqjTFrZqrTNTTGSSSbrhrhRFRHcnLCzcCdHcLBdccHLzRC
|
||||
JDDfJswJDWsvgVgwpWnRBlBzGCnlCLBlcCDl
|
||||
vVGpfQWJpsPQMVgvppVwgWPJrqSZTrZqhTQTrhjbjqSSjZqt
|
||||
fMSDzDHzpDDVsStdDgwwFZFrrMPCNngCZP
|
||||
WmLnbWmvvWTTLWWQWRGQvLvrPFZJcgJFCZNrCgGCFCPNPF
|
||||
QLhlqhljWvRQbbqlqnfStnHdBqVVfzpq
|
||||
qWZtSQTSvJJvBfJVBBVFNDNHbbdRVPdpNFRF
|
||||
fGcwwmCgsLhgwLchbpHdrrrphdPRPh
|
||||
gMjllmcjwsLMgcwlMnSWzSqjSZJqZqZfjQWv
|
||||
cdRHPjRFRdFVHGcFfFTHQTHVLSQBsbsqSCLqllBJqqbSqLJC
|
||||
WwWppWgtNrnzzWDmrrmNvWJClJSSbqLJJCGbsCgJbLLg
|
||||
MnvWpmwvWnvtGPjVRcHRRHMj
|
||||
dLMDhdHGrcLTvvvstB
|
||||
nPqgGGNPqRgRSjgmlWjbbTTPPBvpvpTcswwsTF
|
||||
NRGmgjRnWgnZJqllmSqjnqSDhQzVrdQHDfDrDJQDMHDJzM
|
||||
RgmcPmGNQwwNmSRwPPgfmrBlCDlGbvFFvtrCsvlrBB
|
||||
nfdVnjHdMWnTqflFtbjrllrlsCDl
|
||||
TZJVMhnfMnVMHnpRRNRzgJRzSzgwPR
|
||||
nTbsblzlnGllmsNnbDwbcWQWwWBFJBQcWQvPWFJM
|
||||
HRZRdSRdCdLdRftrHHZfSQBMWJMgMzQPFWMJCFWgvQ
|
||||
HVzrLrrjRjLGnlTnlDlsjj
|
||||
RQdTdZhWqlZhTdWTqblhNmTMVnnrQsnnpvgMVMHMgHMrgP
|
||||
fjSSfjcCzGNBjCjsnpMVpnpzvpzsHp
|
||||
GGwLGSccwjwLwBcGLGSqZWmmdLZLWThmRNZmWR
|
||||
ncmBrmfdfcVcfGnQdVWRBRvgqNvDvWqzLRqg
|
||||
PlpPbSbLFPLpFstsbqRqZMqWZqMWSDRzvq
|
||||
sjtjHCwJwlHfdfjccmmLLQ
|
||||
tGMtLHQGWzLHFVQtVfQtMWtbgrZNbdfSbccggrcTjTrfbm
|
||||
swRChnwqhBCCCmSjcNSdcd
|
||||
vnlnqDRlsRnJJqswJvGMFVMMdWtpVJFMQQFL
|
||||
ffcHLzGmfvqqfWfF
|
||||
rJrrRSPCPMCrPRQMNNWJQjJCnqFVVVTStqVnSBdqppBVtpqd
|
||||
jNQQPjQMCRQwwQbRQbjMgwbNhwWZHHmzmlchlHHHDcLmWzhD
|
||||
JzvrRHHJvCRZFPFnPgsQVVQNzQTQDttVsB
|
||||
GSMjpqdbGNppBtDhPN
|
||||
MbmqMwGbZPmPHJmv
|
||||
ggVSVWzCNbbNCbRM
|
||||
DfVhVsVQcQDmpmQTTQLjPjMjbDGNlbRMlNGG
|
||||
sftTFJJccnphcfncTsfBvwZvrzgzZzZvBrVnzq
|
||||
qqlClBNSCNSRQMvdrwFvnBrr
|
||||
GDfhDtszhhsThpTDzsfpprMrFvQvrnnfvQrwHFbfFH
|
||||
VtggWhpsmGVTGJWMjWjNjPWjLL
|
||||
NSnShnjsswSsRPNsrnwcwMHfFwGqbvqCbFfg
|
||||
LDJtzzmgVVlvqGbzvFfzff
|
||||
mlJmQQpmJpZpBJJdjBNhrnnRdTTgNN
|
||||
RtRRvbhDFPHHlhtPhRvPRtqjmzqzzwLjHQHLLLQVmVjq
|
||||
WNNBBZfgfWnqVQwNqzmQcm
|
||||
MZGfzSrTTnWrrWsTWnfSGbGllPCbGlJRvlPllCtt
|
||||
phgcNfqgfpZsjjpdsS
|
||||
brHHnWPbDPDbTPlDJJvJJPrMVVzRSdFzwdZZzFnsdzzVdVZs
|
||||
SbStvJMDQgNmmtgg
|
||||
lzDMDhfFRlfMFTfMGPMbFTlMpBHrmpjjCFjmBmrqBjtCmjjq
|
||||
VvVswLLHZnJJwdndNsSSNBpCpjqjmNgrmCNtmmqm
|
||||
nHcZWcSVsScTDlPPlTPb
|
||||
DFMQSlMDpSpFDtDFccHvmqzvbHZjJmvzmmQH
|
||||
CSgffrPssdgqRbqzzRqZ
|
||||
dsdsfGsrBPsTVcMctMVNNhtStW
|
||||
MDWRDWpgDvWpNptvNMnJCHJHMwHCndJfZn
|
||||
blcrqTFmmcbhLTTTmlBZbjBJdBfBnCbQBdfn
|
||||
TzlnhcnzTmhLRvSDsRzDPzWR
|
||||
nwmmPnnPDjclhhjfFzzzwqbFFNHwVqVq
|
||||
vSQrbpWCvMWQQWQMLgFJVHqzBzJVNqzBFL
|
||||
CvCvQtWWQmcbtntPcb
|
||||
qzvtzCCtLsLLzmQCHqpSsHSmfrnNrTrNWWMNGnWZTMZGBvWn
|
||||
PglVFJwPhbcghVTBpBnWWhWnTMhB
|
||||
FgjcJccVpwDcwFgVDsqzddqLqSDSCQQL
|
||||
PLHsSVGGPvSLTffjMJWJJBjfBL
|
||||
gNhwgTqDcqwpDqNhFpDFhFWfnndjcMJjMWzzBtntJBnW
|
||||
DFhhQRRwbCbwRQChppmTHCVGTlslrsvrrSVZ
|
||||
hHnRfSMmsSVrFvQqrmDPgr
|
||||
jjcBzjZLpWccJLczBjZjWGwCnNzDvrgPCgQvFggvqrQFnr
|
||||
jtZGpLwjWBpBWcfMTttfbHRnHTbT
|
||||
swSHffFTVrJlHFSWrTpMZMPhMNBqBhTvhhqZ
|
||||
bQbLQGGjQLdRCcQjGZBzpzBZqMBBBVdBqh
|
||||
RjQDQGmgmVVbVcjjmjgcnWtJfrwsfrtHlwswnfHSFw
|
||||
bVHbbMFDcbDbcmbbHVRbMRFgzSmdzSSTBtTjBdQTzlSldQjT
|
||||
nqpqCMwJffqQSzTBQlqd
|
||||
wvJhnnfrfsJrCNffvspRrPPFMbPMRRPPMZgZHR
|
||||
FnJZnssHvMdJWJpW
|
||||
mlDlllGrSGmttwlGvZgrzZNWgggzTzdT
|
||||
bCltZCthtRcbcFbjFL
|
||||
JGmHrJwGzzpllRZdzZLRcW
|
||||
htbPSbVtFbbgjhffgPSfTVSDcHDDDLWscRdsZjdZcRssWc
|
||||
vhfFbFvVHbtTVgFPhmJBCvBNrqBBrGCqQB
|
||||
BcNQcvcBchSQNccLLvhTqbJZTrHrrrzzqTZMZMFZ
|
||||
tpHDsnDRslllCCHtwnpsfjRgrJrVMfMmMrFrzVJFzrVZbZrr
|
||||
tnDpjCwPLNSPdhPH
|
||||
qnjvvBwBhSSFPgDQLVVDqgLr
|
||||
WbszTbHTbsbHJWHLLMVZmJPQDrvmZL
|
||||
ctlRbtCWWtvlSfjljjhBnBNB
|
||||
TsnvssDDQlRbzMzjDMqHwq
|
||||
tSGjZCfFZtCFLtVGWGZFbcqwHbhWdbzbwHbdwbdw
|
||||
ZGBFJFZVBLjStZPBBZLRvlmsPTvsgrrnrTllvs
|
||||
PgQdNsQFsdNwWqQBsQrTrTLpbrnTpGngnbTG
|
||||
hCzzMJVDmfzmBDMCfSfhTMGcnpnTcjGrpjbMGjbL
|
||||
CVVfvCflSHNHvPdBHW
|
||||
DwlMjMNjStgmthMghg
|
||||
PTlpHnJJTcZvTTbHZWZTvpqdHhmLgrgdfrhLLsmshmsLts
|
||||
vncqTbPqcpCnbCPvccZbDBCGzzNBwjDlVVGFjjVR
|
||||
QsdGGCztZVRddPgndf
|
||||
DrNNBbwNHNwlbjFbbCNjNwDWWDPPVfDMgfmVMfnMWmmP
|
||||
rvJBbbBNcLCtJZQL
|
||||
NfLlqLhbNPddLPqLhpgHwFFwFHHTwRHWwPFTrT
|
||||
MSMSCnjBnBjCscjVDVljTvHmmWnrwTrwFTrvTWTT
|
||||
JCMMBzDMJcZZCjDzSBDNJgdfdQlqlLNdhgGLhp
|
||||
1000
internal/data/2025/DayEight/input.txt
Normal file
1000
internal/data/2025/DayEight/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
1178
internal/data/2025/DayFive/input.txt
Normal file
1178
internal/data/2025/DayFive/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
139
internal/data/2025/DayFour/input.txt
Normal file
139
internal/data/2025/DayFour/input.txt
Normal file
@@ -0,0 +1,139 @@
|
||||
@@@@@@@@@@.@@@@@@@@@.@@..@..@.@.@@@@@@@@.....@@@@@@@@.@@@@..@@@@@@@@@@@@@@@.@...@.@....@@@..@..@@.@.@@@..@@@@@@@@@.@@@..@.@@....@@@@@@.@@.@
|
||||
..@@.@..@@@@@@@@...@@@.@@.@@@..@....@.@...@.@..@.@@.@.@@...@@@@@@....@@@.@@@@@.@@.@@@.@@.@@@.@@@@.@..@.@@@@@@....@@.@@@.@.@@...@@@..@@@.@.@
|
||||
@...@.@.@@.@@......@@@@@...@@@..@@.@@@.@@..@..@@@.@@@@.@.@.@@@..@@@@@.@@@@@@@...@.@@.@.@.@@.@@.@@@@.@@@@@..@@.@@@@@.@@.@@@.@@.@@@.@@@@@....
|
||||
@.@.@..@@..@.@@@@@.@@@@@@@@.@.@@..@@.@@@..@..@.@...@@@.@@..@.@@@@..@@@@@@@.@@@@@.@@...@@@..@@@@@@..@.@..@@@@.@@.@@.@....@@@.@....@.@@.@.@.@
|
||||
@.@.@.@@@@@@@.@@.@@@@@@@@.@..@@@@@.@@@@@@@@@.@@@@@@@@.@@@@@@@@@@@@@@@@@@@.@@@@@@.@@@.@@@.@@@@@@@@.@@@.@.@@@@@@@@@@@.@..@@@..@.@@..@@@@..@@.
|
||||
.@.@.@.@@@.@.@@@.@@@@@@.@.@@@@@@.@...@@@..@@@@@.@@@.@@@@@@.@@@@@@.@@@@.@@.@.@@@.@@@@.@..@@..@@.@@@..@..@@.@@.@.@@@@.@@...@..@@..@@@@@@.@@.@
|
||||
@@.@@.@@...@@@..@@@.@@@@.@@@.@@@@@.@.@@@@@.@@....@@@.@@@@@.@..@..@@..@...@.@@@@@.@@@@.@@.@.@.@..@.@.@@@@.@@@.@.@@@@.....@@@@@@.@@@.@.@@@@@.
|
||||
@@.@@@..@@...@...@..@.@.@@@..@@@@@......@@@@@@@@@.@@@@@@.@@@..@@@@.@@@..@@@@@@@@..@@@@.@@@.@....@..@@@..@...@.@.@@@.@@@...@@@.@.@@@@@..@@@@
|
||||
......@@@.@@@@.@@@.@@@.@.@@@@@@.@@@.@...@@@@@..@@@@.@@@@@.@.@@@..@@@@@..@@.@@..@..@@.@@@.@@@@@@..@@...@@@@@.@@@..@@@.@.@.@.@..@@@@@.@.@.@@.
|
||||
@@@@@.@@@.@@@.@@..@@@.@..@@@@@@.@@.@..@@@@@@@@@@@@.@@@..@@@@..@@@@...@@@@@@@@@@@@.@@@@.@@@@...@...@@@@@@.@.@@@@@.@@...@.@@@.@@.@@.@..@@@@@.
|
||||
@@@@@@@..@@@.@.@@@@.@@@@@@@.@@.@.@@@@@..@.@@@..@@@@@.@.@@@@@@@..@@.@@@@@@@@.@@@@..@.@@.@@@@.@@@.@@@@.@.@.@@.@@@@@..@@@.@@@@@@.@@@@..@..@.@.
|
||||
@...@.@..@.@@..@..@@@@@@.@@@@.@@.@...@..@@...@..@@@..@.@@@@.@.@@..@@@...@@@.@@.@@@@@@@..@@....@@...@@@@@@@@@.@.@@@@@@@@.@@..@@@@@..@@.@...@
|
||||
@@@@@@@.@@@@@@@.@..@@@..@.@.@@@@.....@@@.@@@@@.@@@@@..@@@.@@.@..@.....@@@...@@.@@@.@@@@@.@@...@@@@@@...@.@@@@@.@@@@@@@@@@@@@.....@.@@@..@.@
|
||||
@@..@.@@.@@..@@@@...@.@@.@.@@@@..@@@@@@@.@.@@@@@@@@@.@@@@@..@..@@.@.@@@.@@@.@.@.@.@@@@.@@.@@.@@@@@.@.@@...@@.@.@@@@@@@@@.@@@...@.@@@.@@@@.@
|
||||
@.@@.@.@.@.@@@@....@@@.@@@@@.@@.@.@..@@@@.@@@@@@@@@@.@@.@.@.@@@@@..@@.@@@.....@..@@@@...@@.....@@..@@@.@.@@@@..@..@.@.@@@.@@@@..@..@@.....@
|
||||
@.@@@..@.@@..@.@..@@@..@...@@@.@@@.@@@.@.@@@.@@@.@.@@.@@.@.@@.@.@.@.@@@@@@@@@...@@@.@.@.@@@@@.@..@@@@@@.@@@@@@@@@.@@@..@..@.@.@@...@@@@@.@@
|
||||
@.@.@@@.@.@.@...@@..@.@@@.@@@@@@.@.@@..@@@.@@.@..@@@@@@@@@@@@@@.@.@@..@.@.@@@@@.@@.@@@@@.@@@.@@@...@@@@..@@@@...@@..@@.@.@@@@.@.@@.@.@@..@@
|
||||
@@@@@.@@@@@@.@.@@@.@.@@@@.@@@..@.@@@@@.@.@@@..@@@@@@@.@@@@@@@@@....@@@@@@@.@@.@@@@@@.@.@.....@.@@@@...@@...@.@@.@@...@@@@@@.@@@@@@@@...@.@@
|
||||
.@@@@@@..@@@@...@...@@@...@@@@@@@@.@@@@@.@@@@.@@@@@.@@@@@.@@@@@@@.@@.@@@@@@@@.@..@..@..@@.@@@@@@..@.......@@.@@@...@..@@.@...@@@@@@@.@.@@@@
|
||||
.@.@@@@@..@@@@@@.....@@.@@@@...@@@..@@@@@@..@@..@@@@@@@@..@@.@@.@@.@.@.@@@@...@..@@@@@@....@@@@.@@@@@@.@.@@@@@..@@.@@..@@...@.@...@@@@.@@@@
|
||||
@@@.@@@....@@..@..@@@@.@.@@@@.@.@@@@@@@@..@@@@..@@@@@.@@@@.@.@@@@@@@@@..@@@..@@...@@.@.@.....@@.@@..@@@@@..@@@.@@.@.@@.@..@@@@.@@@@@.@@.@.@
|
||||
.@@@@@..@.@@.@..@...@@.@..@@@..@@...@@@..@@@@@.@@@....@@@@@@..@@.@@@..@.@@@@.@@@...@@@@@@@.@@@@@..@@.@@@@.@.@@.@@.@.@@.@@@.@@@....@.@@.@...
|
||||
@@@@...@.@@@@@.@..@...@.@@.@@@.@@@@.@.@@....@.@.@@@@@.@@@@@.@@@...@@@@@@@...@.@@@@..@@@@@.@@@@@@.@@@@@..@.@@@.@@@@.@@@@.@@.@@.@@@@@@@..@@@.
|
||||
@@..@@@@@@@..@.@.@.....@@@@@@@@@@@@@@@@..@@@@.@..@..@@@@@...@@@@@@@.@@@@@@@.@@@@.@.@@@@@@@...@@.@@@@@@@@@@@.@..@@@@@@.@.@..@.@..@@..@@.@@.@
|
||||
@.@.@@.@@@@..@.@.@@@.@@@.@@@@@@@@.@@.@..@...@@....@@.@@.@.@@.@.@..@@.@.@@@.@@@.@.@...@@@@@.@@..@@@@@.@.@@@.@.@....@..@.@.@@.@..@...@@.@@@@@
|
||||
@..@.@.@@@.@@@@.@@@.@@@@.@.@.@.@@@@@@..@@.@@..@@.@..@.@@@@..@@@.@@@@@.@@@@.@@@@@@.@.@@@.@@..@@.@@@@......@@@@@@@@..@@.@...@@@@..@@@.@@@@@@@
|
||||
.@@......@...@...@.@@@@@.@@@.@@@@@.@.@.@@@.@@..@@...@@@.@...@.@@..@@.@@@...@@@@@@@@@@@.@...@@@@@..@@@@.@@@.@@@@@@@@@@.@@@.@..@.@@@@.@..@@@@
|
||||
..@@..@@.@@.@..@@@.@@@..@@@@@@@@@@@@@@@.@@.@@@@.@.@@.@@@@@@.@@@@.@@.@@@@@@@.@@@@.@@@@@.@@@@@@.@@@@@@.@@.@..@.@@@@...@.@.@@@@@.@@@.@@@@@@..@
|
||||
.@.@@@@@@@.@@@@@....@@.@@@.@..@..@@.@...@@@@.@@@@.@.@.@.@@.@@.@..@@.@@.@...@@..@@@.@....@@..@@@@@@@.@.@@@@@.@.@@@@.@@@.@.@@@@@@@@@..@@@.@@@
|
||||
@.@@@.@@@.@@@...@..@.@.@..@@@@@.@@..@@@@@.@@.@@.@@..@..@@@@@.@@.@@@@.@..@.@@@@@@.@@@@@@..@.@@@@@@.@@@@.....@.@@@.@.@.@@@@@@.@@@@@.@@.@@@..@
|
||||
@@@@@@@.@@@.@@@@@..@.@.@@@@.@@...@@@..@@@@@@@@@.@@.@@@@@@.@@@..@@.@.@.@....@@.@@@.@@@.@@@@@.....@.@.@@..@.@.@.@...@@@@@.@..@@@.@.@..@.@@@@.
|
||||
@.@@.@@@@@@@@@.@@@@@.@@..@@@@@.@...@...@@@@.@@@@@.@@@@@.@.@@.@..@@@@@@@@.@@.@@@@@@.@.@@@...@@@@.@@.@@.@@...@@@@@@..@@@.@@@.@@@@.@..@@@@@@@.
|
||||
.@@@@.@@.@..@@.@...@@..@@.@.......@.@@@..@..@.@@.@@...@..@@...@.@@@@@@@@..@@...@.@.@.@@@@@.@@@@.@@.@@@@.@.@@@@@.@@.@@@@..@@@@.@@@@.@@..@@@@
|
||||
@.@@..@..@@..@@@@.@.@@@@@@.@@@@@@@..@@.@@.@@.@@...@@..@@@@@@.@@.@.@.@.@.@@@@@..@.@@..@@....@.@@@...@@@.@@.@@.@@.@..@.....@@@@@.@.@..@.@@@@@
|
||||
@@@.@@..@@@.@@@.@..@....@....@@@.@@.@@@.@@@@@@.@@.@.@@@..@...@.@@@.@..@.@@@@@..@.@@@.@.@.@@.@.@@@@..@@..@@@@..@@@@.@.@@@....@.@@@@.@.@...@@
|
||||
@.@@...@.@.@@@@...@@.@..@.@@@@@@@@..@@@.@@...@..@@@@@@@@@@@.@.@..@@.@@.@.@@..@@..@@@@@.@@@...@@@@@.@...@@@@@@@@.@@@@.@@.@@@.@.@.@.@.@@.@..@
|
||||
.@@.@.@.@@@.@@@@.@@@@@..@@@...@@@..@@@.@.@@@@@.@@@@@...@@.@@@@@@@.@@......@.@@@@.@.@@.@..@@@@@@@@..@.@@@@@@@@@@..@@@@@@.@@.@@@@.@..@.@@..@@
|
||||
..@@.@..@.@@...@@@@@...@@@....@...@.@@@@@..@@@@@@.@...@..@@@@@@.@@@@@.@@.@.@@@@..@@@.@@@@....@@@.@.@...@@@@.@...@@@@@@...@.@@@@@@@@@@@@.@@.
|
||||
.@@@@@@...@@@@@@.@@.@..@@@@@@.@@..@@@.@@@@@....@@@@.@@.@@.@.@@@@@.@.@@.@.@..@@.@@@@.@@@@@..@.@@.@.@@@@.@@@.@@@@@..@@..@@@@..@.@@.@@.@@@..@.
|
||||
@@@.@..@@@.@...@.@.@.@.@@..@@.@..@@@@@@..@@.@@@..@@@.@@@@.@.@..@@@..@@@.@@@.@@.@..@.@@..@..@@@.@@@..@.@@@@.@@@..@..@@@@.@.....@.@@.@.@@@@@.
|
||||
.@@@@@.@@.@.@.@@@.@@@.@@@@@...@@@@..@@.@...@@@@@.@@.@.@@@@@.@.@.@.@..@@.@@@@........@@.@@..@@@@.@.@.@..@.@@@@@@@@.@@@@@@....@@@@@@.@.@@.@@@
|
||||
@@@.@.@..@@@..@@@@...@@@@.@@@.@@@@.@.@@..@..@@.@@...@@@@@@@.@.@@.@@@.@.@@...@.@@@@.@.@.@..@.@.@@@@@@@@...@..@.@.@.@@.@@.@.@.@@.@@.@.@..@@@.
|
||||
@@.@.@@..@.@@.@@..@@@.@.....@@.@@@.@@@@.@@.@..@..@.@.@@@@.@@.@..@@.@@@@@.@@@..@@@@@.@@@@@@@@@@@@@@@.@@@@.@.@@..@....@@@.@@@@@@...@.@@@@@@@.
|
||||
.@.@...@@@.@@..@.@.@@@....@@@@@@@@@@.@@@..@..@@...@@.@@@@@@@@..@@.@@@@@@.@@@@...@@..@.@.@@......@@@@@.@...@@@@.@@.@@..@.@.@.@@@..@..@.@.@@.
|
||||
@..@...@..@@@.@@@@@.@@@.@..@@.@@@@@@.@.@@@.@.@@@.@@.@@@@@.@.@.@@@..@.@.@@@@.@.@@.@@@.@.@..@.@@...@@.@.@.@.@@@.@@..@@@@.@..@...@@@@....@@@.@
|
||||
@@@@@@.@@@.@.@@@@@..@@@...@.@@@@.@@.@.@@.@@@@...@.@.@@@@.@.@@@@..@@@@.@@@@.@...@@@@@@.@@@@@@@@@@.@@@@@.@.@...@@.@@@@..@..@.@@.@.@.@@.@..@@@
|
||||
@@@..@@.@@..@@@..@..@@@@@@@@@@@.@.@@@@@@..@@@@@@.@.@@.@@@@..@@@@@@.@@@@@.@.@..@.@@.@.@.@..@@..@.@..@.@..@...@@.@@.@.@.@.@@@.@@@@@@@@@@..@@@
|
||||
.@@...@@.@@@.@@@@@@.@..@.@..@@.@@@@@@@.@@@@@..@@@@.@@..@.@@@@@@.@@.@.@@@@@@.@.@@@@@@@..@@@..@@@@@@@.@@.@@@.@.@@.@.@@.@.@.@@@@.@.@@..@@.@@..
|
||||
.@@@@.@@@.@..@@@@.....@@@@.........@..@.@@@@@@@@@.@@.@@@@..@...@..@@..@@@@.@.@@.@@@@@@..@..@@.@@@@@.@@@@@@@@@@.@.@@@@....@@@@@..@@@@.@@@.@@
|
||||
@..@@@@@@...@@@@@@@.@.@.@.@@.@@@.@.@@......@@.@.@@.@.@.@@@.@@@@.@..@@@..@@@.@..@@.@.@.@...@@.@@@@.@..@@.@..@.@@.@@.@@@.@@@.@@@@...@@@@.@.@.
|
||||
@@@@@@@@...@@.@.@@@@@..@@@.@@@.@.@@@.@@@.@.@@@@@@..@.@@@@@.@@..@..@..@@@@.@@@.@@..@...@@.@@...@@.@@@...@@@@@.@..@.@.@.@.@@.@.@@@@@.@@@@@@@@
|
||||
@@@@@.@.@@@@.@.@@@@@@.@@@..@@@@@.@@@.@@....@...@@@@@@...@...@@@@@.@@@@.@@@@@@@.@.@@@@.@...@@@@....@@.@@.@@@@.@@.@.@@@@@@@.@@..@@@..@.@@.@..
|
||||
@.@@..@@.@@..@@@@@@@@@@.@..@..@@@.@@@@.@@@@.@.@@@@..@@..@@.@...@.@.@.@@@.@...@@@@@@@.@.@@.@@@...@@@@.@.@.@@@@@.@@@@@@@.@.@@@.@..@@.@..@@@@@
|
||||
@.@@@@@@.....@@.@.@.@@..@@@@@...@.@.@.@@@@.@@.@.@.@@@@.@@.@@.@@.@@.@@@.@@@@@.@@@@@.@@@@.@..@...@@.@...@.@.@@@@@@@@@@...@@@@.@..@..@@.@@@..@
|
||||
@@.@@.@@.@.@@@@@@.@@@.@@@@..@..@.@@@@.@.@@@..@@@@....@.@.@@@@@.@@@.@@@@@....@@.@@@@.@.@.....@.@..@@.@@.@..@.@@@@...@@@@@.@.@@@@@@.@.@.@@@@.
|
||||
@...@@@.@.@..@@@@@.@@@@@@@.@@@.@@@...@.@@@@@@@@@.@@@@..@@..@@.@.@.@@.@@@@.@@.@@..@..@@@.@@@..@@@@@.@.....@@...@.@@.@@@@@@@@@@@@@@.@@@@@...@
|
||||
@@@......@.@@.@@@@@..@@.@@..@@..@@@.@.@.@...@...@@.@@.@.@.@..@.@@@@.@@@@@.@@@@@@..@@@@....@..@.@@@...@@@.@@@@@.@@@@@.@@@....@.@..@@@@..@@.@
|
||||
@@@.@..@@@@@@@@@@...@@...@@.@.@@.@.@@@.@@@@@@@@@@@@@@..@@@@@.@.@@.@.@@@.@@@..@..@@..@@.....@@@@.@@.@@.@@@@@@.@@....@@@@@@.@@@@...@@@@@.@..@
|
||||
@@@@@@@@@@@@@.@@@.@.@@@@@..@@.@..@@@@@@@@.@@@.@@@@@@@.@@.@...@@@...@@@@@.@@@.@.@@@@@....@.@.@@.@...@...@@...@@@@.@@@@..@@@@@@@.@@...@@@@@@.
|
||||
@@@@.@.@@@@@.@@@@.@@.@...@@@..@@@.@@@.@.@..@.@@@@@.@@@@.@@.@.@.@@@.@.@@..@@@@.@@..@@@..@..@@@.@@@@.@.@@@@@@@@.@@@@.@@@....@@.@...@.@.@.@@@.
|
||||
@@.@@@@@..@@@@@@@@..@@.@@@.@....@..@@@@.@..@@..@.@@.@@@.@@@@@@@.@@@@@...@.@.@..@.@@@.@@@@@@@@.@@@@..@@...@@@@@@@@@.@@.@.@@.@..@..@.@@.@..@@
|
||||
@@@@@@.@@@@..@@@@@@.@@.@@....@@@@.@.@@@@@@.@@@@@@@@.@@.@@@@@@@@@@@@@...@@@..@@@@@@@.@.@.@..@.@..@.@@.@@@@@@@@@....@@.@@@@...@.@@@@.@@@...@.
|
||||
..@@@@@@@@@@@@...@@@.@@.@@..@@..@..@.@.@@.@@@..@.@..@.@@@@..@@.@.@@@@@...@@@@...@@@@@@.@@..@@@@@@@@..@@@@.@..@@.@@@@.@...@..@.@.@@@.@...@@.
|
||||
@@.@@@@@@@.@@..@@@.@...@@@.@@@@@@@@@.@.@@@@@@@.@.@.@.@@@@@@@@@@...@.@@@.@.@.@@@...@@@.@@@.@@@@@@.@@@@.@..@.@.@@@..@@@.@@@@@.@@@@.@@@@.@@.@.
|
||||
@.@..@@.@@@@@..@@@.@@@@@.@@.@@@.@@...@@@@@..@@..@@.@.@@.@@@.@@@@..@@..@@@..@...@@.@@.@..@@.@.@@@@@@..@@@..@@@.@@@@......@..@@.@@@.@@@.@@@..
|
||||
@.@@@@..@@@@@..@.@@.@.@@.@@@@@.@@@@@@@@.@.@...@@.@@@@.@.@.@.@@@@@@.@.@.@@@@.@.@@..@..@@.@.@@@.@..@@@...@@.@.@...@@@@@.@..@@...@.@.@@@@@@@@.
|
||||
@@.@.@@@@@@@..@.......@@..@@.@@@.@@@@.@..@@..@@@@@@@@.@@@@.@@@.@.@@@@@@@....@@@@@.@@@@@@.@.@@.@@@.@@@@@..@@@@.@.@@@@@.@.@@@@@.@@.@@@@@.@..@
|
||||
@.@@.@@.@@@@@@..@..@@@.@@@....@@@.@@....@.@.@@@..@@.@..@@@@@.@@@@@@@@@@@@.@..@@@@..@@@@@@.@..@@@@.@.@.@@@@@@@@@@.@..@@@@.@@@@@.@.@...@.@@@@
|
||||
@..@.@...@@.@@@@.@@.@@@..@@@.@@...@@@@..@@..@@.@@@@@.@...@@@.@@@@..@@@@@.@.@@@@.@@.@@.@.@..@.@.@@@.@.@...@@.@@@...@@@..@@@@@@@@@@.@@@.@.@.@
|
||||
@@.@.@@@.@..@@@.@..@@@@.@@@..@.@@.@..@@@....@@@@..@.@.@..@@@@..@.@@@..@@.@....@@@.@@@.@...@.@@.@@@@@.@@.@@@@@.@.@...@@@@@@@@@@.@.@@@@@@@@..
|
||||
@@.@@.@..@@@@@@.@@@.@.@..@@.@.@.@..@..@@@@@..@...@.@@@@@@@@@@@.@..@.@@.@.@@@@@@@.@.@@..@..@@.@@@.@@.@@@@@.@@@@.@@@@@@.@@@.@.@@..@..@@......
|
||||
.@@....@@@@@@...@@@.@.@@@@@@@.@@@.@@@@@@@.@@@@....@@@@@@@@.@@@@@.@..@@@@.@.@.@@...@@@@@@.@@@.@@@@@@@@.@.@@@@@@@.@@@@@.@.@@@.@..@@@..@@@@@@@
|
||||
@.@@@.@@@@@@.@@.@@@@.@@.@....@@@@@.@@.@@.....@@...@@@@.@@@.@.@..@.@..@@....@@@@...@.@.@@@@...@@@.@...@@.@@.@@@@..@.@@.@@....@@@@@@@@@@@@.@@
|
||||
@.@@.....@@.@..@@......@@@@@@@@@.@@@@@@@@@@.@..@@.@@..@@.@@@.@.@@..@.@..@..@@..@...@@@.@@@.@@@@@@@@@.@@@.@@.@@@@.@@@@@@.@...@@..@@.@.@@@@@.
|
||||
@@@@@.@@.@@@@@@.@.@@@.@@.@@@@.@.@@@@..@@@@@@.@@.@.@@@@...@..@@.@@@@@.@.@..@@..@@@...@@@@.@.@@@@@@@@.@...@.@.@@.@@@@..@@@@@@.@@.@@@@@@@@@.@@
|
||||
@.@@.@.@@@@..@..@.@@.@@@@..@.@@.@@@@@@.@@@@@@@@@@@@..@@@@@@...@.@..@@.@.@@.@.@@@@@..@@@@...@.@...@@.@@@@.@@@.@@..@@..@.@@..@@.@.@@..@@@@..@
|
||||
@@@..@.@@.@@.@@.@@@@@..@..@@..@.@@@.@@@.@.@..@.@.@.@@@..@@@@@@..@@@@@@@@..@.@.@.@@@@@@.@@@@@@@.@@@.@@@@..@...@@.@@@@@@.@.@@@@.@..@....@@...
|
||||
@@....@@....@@@@@.@.@@@@..@...@..@@@.@...@@@.@@@@@.@@..@@@@@..@@@@@@@@.@..@..@.@..@...@@@@@@.@@@@@@.@..@.@@.@@..@.@@@@@@.@@@@..@@..@@@.@@@@
|
||||
@@.@@@@.@@@@@@@@@.@@...@.@@@@@.@@@@@@@@.@.@.@.@@...@@@@@.@..@@@@..@..@.@@@@@@@@..@.@@@.@@.@@@@.@.@.@...@@.@...@@.@@.@@.@@@..@@.@@@.@@@@@@@.
|
||||
@.@.@.@@.@.@@@@@.@@@@..@@@...@@.@@@..@@@@@@..@..@@.@.@@.@@@@.@@....@.@@@@@@@@@.@@@.@.@@.@@@@.@.@@@@@@@.@.@@.@@.@.@..@.@@@..@@..@@@@.@@@..@@
|
||||
@@..@.@@@@@@@@@..@@@..@..@@@@..@.@@@@...@@@.@@@@@@..@@@...@.@.@@@@@@@...@..@@@.@@@@@@@.@@@.@@..@.@...@@@.@@@...@.@@.@@@.@@@@@.@.@@@@.@@@@@@
|
||||
..@.@@...@@.@..@..@.@.@@..@.@..@.@@@@@@@.@@@@..@.@.....@..@@@.@@@...@@@....@.@@..@@.@@@.@....@@..@@@.@@.@....@.@@..@@@@.@@@.@.@@..@@@...@@.
|
||||
@..@@@.@.@@@@@@...@@.@..@.@@@@@@.@..@....@.@...@@....@@@@.@@@.@.@..@@.@@@@.@..@@@.@@@..@@@@@@@.@@.@@@....@.@@@@@@@@@@...@@..@@@.@@@@@.@.@@.
|
||||
@.@@..@....@@..@@@@.@@@@@@.@@.@@..@....@@@@@@@.@.@@@...@@@@.@.@@@.@.@@@@@.@@@@...@@@@@..@.@....@@@.@@@@@@@.@@@..@@@@@@@..@@@.@.@.@@.@.@.@@@
|
||||
@@@@@@@@.@.@@@@..@@@@@.@@@@@.@@.@@@...@@.@@@@@@@.@@@@@@@@.@@.@@@.@.@@.@..@@@.@.@@@@@@@..@@@@@@...@.@@..@..@...@@@@...@@@@@.@.@.@@.@@.@.@@@@
|
||||
@.@.@@@.@@@.@@@.@.@@.@@@@@@.@..@..@.@@.@@@.@...@@@@.@@@....@..@...@@@@.@@@@@..@..@....@@@@.@@@@..@@@.@@@@@.@@@@@.@...@@@@..@@@@@.@..@@.@.@@
|
||||
@@@@@@.@@@.@@.@@@.@.@@@.@@..@.@.@@@@@.@@@..@@@@.@@.@..@.@@..@@@@@@.@@@@@..@@@..@@@@@.@@@.@@@@@.@@@@@..@@@@@.....@@@..@@.@@@@@..@@@@@.@@@@.@
|
||||
@@.@@@@@@@@@@@..@@.@@.@.@..@@...@.@@.@@@@.@@..@@@@@.@.@..@@.@...@@@@.@@..@...@@@.@@..@@...@@..@@@..@.@..@@@@@@@@...@..@@@...@..@@...@.@..@.
|
||||
@@@@.@.@@@.@.@@@.@.@@@@@@@@@.@.@.@.@@@@@...@@@.@.@@@@@@@@@@.@.....@..@..@@@.@.@@.@@.@@.@@.@.@@@...@@..@@@@@@@@@@@@@@@@..@@.@@@.@@.....@.@@@
|
||||
@@@@..@@.@..@@@@@.@.@.@@.@@@@@@@@@@@@@@.@@@@@@.@...@@.@@@@@.@.@@@@.@.@...@@@@@.@@.@@@..@@.@@@...@@@.@.@@@..@.@@.@@@@@@.@.@@..@@@@@@@@.@..@@
|
||||
..@@.@@.@@@..@@@@@@@@@@@.@.@@..@@.@@.@.@@@.@..@@.@.@@@@@@.@..@.@@.@.@@@@@.....@@.@..@@@@@@..@@@.@..@.@@@@.@.@.@..@@@@@.@@@@@.@@@.@@@@.@@@.@
|
||||
@.@@.@@@@@@..@@@@@@@@@@@@@@...@.@@.@..@@@@@..@@.@..@.@..@@@.@.@@@.@....@@@@@@@@@.@..@@...@@..@.@.@@.@.@@.@.@@@.@.@......@@.@...@@@..@@.@@@@
|
||||
@@@@..@@@.@@@@@@.@@..@.@.@@@@@@@@@@@.@.@@@@@.@@@@@@@.@.@@@...@.@.@@@..@@.@@@@@...@@@.@@@@.@@.@@@@@@.@@@@@@.@@@@@..@...@@.@...@@@@@@@..@@@.@
|
||||
@@@@@.@@@@@..@@.@@@@@@.@.@@@@@.@..@@@@@.@@.@@@..@@...@...@@@.@.@@.@.@.@..@..@.@@@..@@@@@@@.@@..@....@@@.@@@@@@@.@@@@@@.@@..@@@@.@@@.@.@..@.
|
||||
@@@@.@@@@@@...@.@@@@.@@@.@@..@.@..@@@@@@@...@.@.@.@@@......@.@..@..@@.@..@.@@@@@@@@@.@.@.@@@.@.@.@.@@.@@.@@@@@.@.....@..@@@@..@.@@.@.@@@@.@
|
||||
@@@@@@@...@@@@@@@@..@@@@@..@@@@@@..@@.@.@.@@@...@@@@@@@@@@@@@@@@@@@.@@@.@@@@@@@.@@..@.@.@@.@@.@@@.@@@.@@@.@.@@@@@@.@.@..@@@@.@@.@@@..@@@@@@
|
||||
@.@@@@@@@@..@@@@@.@.@@..@@.@.@.@@.@@@.@.@@@.@.@.@@@@...@@..@@@@@.@@@..@@@@@@@@.@...@.@@@@..@@@...@@@@..@.@.@.@@@@@@.@@.@@..@.@...@@@.@@@@..
|
||||
.@@@@.@.@@@@..@@@@..@@@@@@@@@@.@@.@@@@@@@@@.@@@.@.@.@@@@@.@.@@....@@@@@@@...@@@@.@@..@@@@@@@@@..@@.@@@.@@@..@..@.@@.@@.@.@@@.@.@.@@@.@.@@.@
|
||||
.@...@@@@@@.@.@.@@.@@@@@@@..@@.....@@..@.@@@.@@@@@.@@@...@@@@.@@.@@.@@@...@.@@...@@@..@@@@@@.@@...@.@.@@.@.@@@.@@@@@@@..@@...@.@.@@.@@@@@.@
|
||||
@@@.@@@.@@@@.@@@@@.@.@@@@@....@@@.@@@@@.....@@.@..@...@@@@...@@@@.@.@.@.@@@.@.@.@@@.@...@@..@@.@..@@..@@..@@.@...@.@@@..@.@@@..@...@@.@@@@.
|
||||
@@@@@.@@@@@@@@@.@.@@@@@@@@..@@.@.@@.@@@..@@@.@.@.@@.@@@..@@@@@..@.@.@@@@.@@.@@@@@.@.@@@@.@@..@@@.@@.@@@.@@@.@.@@.@@@@..@.@@@..@@.@@@@.@@..@
|
||||
@@@.@@@@@@@@.@@.@.@.@...@@..@@..@@@@@.@@@@@@@@@@@.@.@@@@.@@.@.@.@@@...@@@.@@@@@@.@@.@@...@@@...@@@@@@@.@@.@@.@.@@@.@@@.@@@..@.@@.@@@@@@.@@.
|
||||
@@.@@@@@@@@@@@@@.@.@@@@.@.@.@@@@.@@@.@.@....@@@@.@@.@@@.@@...@.@@@@@@.@.@@@@@@.@@...@@@@@@.@..@.@@@..@.@@.@@@@@@@@..@@@@@@@@.@@@@@@@@..@@@@
|
||||
@@@@.@.@@...@@@.@.@..@@..@.@@@@@..@@@@.@.@@@@@@@@.@@.@.@@.@..@..@@@.@.@@@@.@..@@@.@@@@@@@.@@.@...@@.@@@@@.@@@@@.@@@.@@@@@.@@@@@@.@@..@..@@@
|
||||
@@...@@@@@@.@@....@@.@..@@@@@@@@.@.@@@..@@..@@.@..@@.@..@.@@@@..@..@@.@@@.@@@@.@.@......@..@@.@@@@...@...@@...@@@.@@@.@@.@@..@.@@@@@@.@@@@@
|
||||
.@.@......@@.@@.@..@@.@@..@@.@@.@@.@.@.@@@@@@.@.@@@@@.@@.@.@@@.@@@@..@@..@@@.@@.@..@.@@..@@@@@...@@@.@@..@@@@@@@@@@@@@@.@.@@.@.@.@@@@.@@.@.
|
||||
@@@@@.@@@@@.@@@.@...@@.@.@@@@@@.@@@@@.@@@.@@@.@@...@@@.@@@@.@@.@.@@..@....@@...@@@.@@@@@.@.@.@@@@@@@.@@@@@@.@@@@..@.@@..@@...@@@..@@@@.@@@.
|
||||
@@@.@@.@.@@@@@@@@..@...@@@@.@@@.@@.@..@.@@@...@@@@@.@.@..@..@....@@@..@@@.@.@.@@@@@.@.@@@@.@.@@@.@.@@..@@@@..@@.@@.@@@@@@@@@@@@@@@@.@@@@@@@
|
||||
@@@@@@@.@@@@..@....@@@@@.@@@@.@.@@.@@@@@..@@@.@.@.@@..@.@@@@@@..@@..@.@...@@@@@@....@@@@.@@@@..@@.@@@.@@@...@@.@.@@@.@.@@@@@@@@@..@@@@...@@
|
||||
@@@@@@.@@@@@@.@@@..@@@@@.@@@@....@...@@@@.@@@@.@...@@@@.@@.@.@@@@@.@@.@.@@.@@....@@.@@.@@@.@.@@@@@@@@@@..@@@@@@@@..@.@@..@@@@@@@...@@@@.@@@
|
||||
@@@@@.@@@.@@....@@@.@@.@.@@@..@@..@@@@....@@.@.@@@@@@...@..@@@@@@@@@@.@...@.@@@.@@@@.@@@.@@..@@@.@..@@.@.@@@@.@@@@.@@@.@@..@.@@@.@..@@..@.@
|
||||
@@.@..@.@...@@@@@..@.@@@@...@@@@.@.@.@@@@@@@@@@@@@@@@.@@.@@@@..@@@@@.@@.@@..@.@@@.@.@@@.@.@@.@@@@..@.@@@@@@@..@@@....@.@@@@.@..@@@@@.@@@@.@
|
||||
.@@.@@@@@...@@@.@@..@@@@@@@@.@.@..@@@@.@@@@@@.@@.@.@@.@@@@@@.@@@.@@@...@@@@@@@..@..@@..@@@@@.@.@.@@..@@@..@@.@@..@@@@@@..@@.@@@@@@...@@@@@.
|
||||
@@@.@.@@@@@..@.@@@@@.@@@.@@@@.@..@.@.@@@@.@.@@.@@@@@@@@@@@@.@..@@.@.@.@@..@@.@.@@@@@..@.@...@.@@@@@.@.@.@@@.@@@@@@@@@..@@@..@@@.@@@@@..@@.@
|
||||
@@@@...@@@...@@@.....@@.@...@@@@.@@@@@@@@@.@@@@@@@..@.@@@@@@.@@@@@.@.@@@@@@.@.@.@@@@@@@@.@.@@@@..@..@@...@@..@.@.@@@@@@@@.@.@.@@.@@..@@..@@
|
||||
@@@@...@@@@@.@@@@.@..@@@@.@.@.@.@@....@@@....@.@.@@@..@...@@@@@@@@@..@@.@@@@@@@.@@@@.@@@.@@.@..@@@@@.@..@@.@..@@@.@@@.@..@@@@@@@@@@...@..@@
|
||||
@@@@@@@..@@@.@@..@.@@@@@@@.@.@@@@.@@@..@@@..@..@@@....@@@@.@.@@.@.@..@.@@@@.@@@.@@@@@.@.@@.@.@@.@@.@@@@@.@@.@@.@@@...@..@.@....@..@@@@@@@@@
|
||||
@@.@@@@@.@.@@@.....@.@...@@.@@.@.@.@....@@@..@@@@..@.@@@@@@.@@.@@@@@@.@@.@@.@@.@@@@.@@.@.@...@.@@@.@..@@@@...@@@@.@@@@..@@@@@@..@@.@.@@@@.@
|
||||
@.@.@@@@.@.@@.@@@.@.@..@@...@@@@@@.....@@@.@@.@@@.@@.@@@@@..@@@...@.@@@@.@@@@@@@...@@@@@@@@@@@@.@@@.@@@@..@@...@..@@@..@@@@.@@@@@..@@@@@@@@
|
||||
..@@@@..@.@.@@@@@.@@@.@...@@.@@@@.@@.@@@@@@@.@@.@..@@@@@.@@...@@@@@@..@@@.@@.@.@@@@.@..@.@@@@@@..@@@@@.@..@..@.@@@@...@@..@@...@.@@@@..@@@@
|
||||
@@@..@@@@@@@.@@.@@.....@.@.@.@.@@@@.@@@@@@.@@@@@.@@@@.@@@@@.@.@@@@@@@.@.@@.@@@@.@...@@@...@.@...@@.@.@@@.@...@.@@.@.@@....@@.@...@@@@..@.@.
|
||||
@.@@@@@@@@.@@.@@@@...@@....@.@@@.@@.@@@@@.@@@@...@...@@@@..@@@.@@@@@.@..@@...@@..@..@..@@.@.@@@@@@..@@@@...@@@@..@.@..@@.@@@@@..@@@@.@.@@@@
|
||||
@..@@.@@@@..@@@@@@@@@...@.@@.@...@@@@@@@@..@..@...@@.@.@@.@....@@.@@.@@.@.@@@..@@@@@..@.@@@..@@@.@@..@@@@@@...@@@@@@@@@.@@@.@.@@@@.@@@@@@@@
|
||||
@@.@.@.@@@@@@@@.@@.@@..@.@@@.@....@@.@@@...@@@@@@@.@@@.@@@@@@@@.@@@@.@@..@@.@@@@@..@@....@@@@@@..@@.@.@@.@.@@@.@@..@.@@@@@.@@.@@@.@.@@@@.@@
|
||||
@@.@@@@@@@@@@@@.@@.@..@@..@...@.@.@.@...@@@@@@.@@..@..@@@@@@@@@@@@@@@.@.@@..@@.@@@@@...@....@.@@@@@@@@@.@@@@@@@@..@..@@@.@.@@@@.@@.@@@.@@.@
|
||||
@.@@@@@@@@.@@@.@..@@@@@@@.@@..@@@@.@...@@.@.@@.@....@.@@@@@@@..@...@@@.@@@.@@@@@@@@.@@.@.@.@@@.@@@@.@@@@.@..@..@@.@@@..@@@@@.@@.....@..@.@@
|
||||
@@@@@.@@@@@.@@@.@..@@@@..@..@.@@@@..@@@.@@@..@.@@.@@@@@@@@@.....@@..@@@.....@.@@@@...@@@@@@@.@.@@.@.@@@@@@.@@@..@@.@@@.@@@@...@..@@@@.@.@.@
|
||||
@.@@@..@@@@@@.@@.@@@.@@.@@.@.@@@@@@..@@@@..@.@@@@@@.@@.@@.@@@@@@..@.@@@.@@..@@@@@.@@@@.@.@@.@@@..@.@@.@.@@@@@@.@@.@@@.@@..@@@@@@@.@@@@@@..@
|
||||
@.@@@..@..@@.@@.@@.@.@@.@@@.@.@@@@@@.@@@@@@@@@@....@@@..@.@@..@@@@..@...@..@@...@.@@@@..@.@.@@....@.@.@@@.@@...@.@@@.@@.@..@@@.@@@@@@@.@..@
|
||||
@@@@@@@@..@.@@.@@.....@@@.@.@@@..@.@@@@@@@.@@..@@..@.@@@..@..@@@@@@.@@@@@.@@@@..@@@@.@@@......@@.@.@@.@..@.@@@.@@.@@@@.@@.@@@.@@@@@.@@@@@@@
|
||||
..@@@....@@.@.@@@@.@.@@.@.@@@@@@.@@@@@@@@@..@...@@@@@@..@@@@.@@..@@@....@@@.@@@.@...@@@@@@...@@@@.@@@@@@@.....@..@@@.@@..@@...@.@@@@@..@@@@
|
||||
@@.@@@@@.@@@@.@@@@@@@@@@@@.@..@@@.....@@...@@.@.@@@.@@.@@.@@.@@@@@@.@.@@.@@@@@@.@@@@@@@.@.@@.@@..@@@.@.@@.@@@..@@..@.@@@.@@..@@@.@@@@@@@@@@
|
||||
.@@@.@.@@.@.@@@@..@.@@@@@@@@@@@@.@@@@.@@@@@...@....@@@@@.@.@@@.@@@.@@@...@@.@@.@@@.@@..@@@@@..@@@@@@@@.....@@@@.@@@.@.@@.@@@@@.@..@@@@@.@@.
|
||||
.@@@@@@...@@..@@.@@@@@@.@@@@..@@@...@@@@.@@...@@.@@..@@@@@@@.@..@@@@.@...@@@@@.@@@.@@@@...@@.@.@@@@@.@@..@@.@@@@.@@@@@@.@@.@@....@@....@@@.
|
||||
@.@@@.@@..@@@@@@@@@@@..@.@@@.@@@..@@@@@@@@@@@@.@.@@@.@.@@.@@@@@@.@@@@@.@@@@@@..@@.@..@@@@@@@.@@@@@@@.@@..@..@@..@.@@..@@@@@@@@@@@@.@@@@....
|
||||
@.@@.@@@@..@@@@@@.@@.@.@@@..@@@.@@.@@@@@.@.@@..@@.@@@@@@.@@..@@...@@@....@@..@@@.@@...@.@...@@@@@@@@@.@@@@@@@@.@@.@.@..@@@.@..@@..@@@@@@.@@
|
||||
..@...@@@@.@....@@.....@.@@@@.@@..@@@@@@@@@@...@.@@@@@@@@@@@@.@@.......@@@@@@.@.@@@@@.....@@@@...@@@@..@@.@.@@@@@@@@@@@@@@.@@@.@@.@@@@@@.@.
|
||||
@.@@@@@@..@@@@@@@.@@@@.@.@@@@@.@@@@@@@.@@.@.@@@@.@@.@@@..@....@.@@..@.@@..@@@.@.@..@@..@.@@@.@@@@.@@@@@@@@..@@@@@@..@.@.@@..@@@@@@.@@.....@
|
||||
@.@@@@@@@@.@...@@@@@@.@.@@@@..@@@.@@@.@@@@...@@..@..@@@@@@@@@@@@@@@..@@.@@@...@@@@@.@@@.@@.@@@@..@....@...@@@.@.....@@.@@@@@@@@@.@.@@@@@.@.
|
||||
496
internal/data/2025/DayNine/input.txt
Normal file
496
internal/data/2025/DayNine/input.txt
Normal file
@@ -0,0 +1,496 @@
|
||||
97652,50353
|
||||
97652,51578
|
||||
98177,51578
|
||||
98177,52782
|
||||
97848,52782
|
||||
97848,54028
|
||||
98180,54028
|
||||
98180,55220
|
||||
97818,55220
|
||||
97818,56391
|
||||
97377,56391
|
||||
97377,57573
|
||||
97103,57573
|
||||
97103,58738
|
||||
96759,58738
|
||||
96759,59924
|
||||
96540,59924
|
||||
96540,61136
|
||||
96426,61136
|
||||
96426,62265
|
||||
95966,62265
|
||||
95966,63548
|
||||
96058,63548
|
||||
96058,64735
|
||||
95776,64735
|
||||
95776,65881
|
||||
95363,65881
|
||||
95363,67069
|
||||
95062,67069
|
||||
95062,68316
|
||||
94887,68316
|
||||
94887,69336
|
||||
94154,69336
|
||||
94154,70373
|
||||
93489,70373
|
||||
93489,71299
|
||||
92620,71299
|
||||
92620,72393
|
||||
92107,72393
|
||||
92107,73844
|
||||
92218,73844
|
||||
92218,74552
|
||||
91010,74552
|
||||
91010,75746
|
||||
90632,75746
|
||||
90632,76770
|
||||
89971,76770
|
||||
89971,77508
|
||||
88904,77508
|
||||
88904,78805
|
||||
88625,78805
|
||||
88625,79864
|
||||
87996,79864
|
||||
87996,80347
|
||||
86660,80347
|
||||
86660,81783
|
||||
86473,81783
|
||||
86473,82435
|
||||
85370,82435
|
||||
85370,83144
|
||||
84354,83144
|
||||
84354,84268
|
||||
83764,84268
|
||||
83764,84688
|
||||
82487,84688
|
||||
82487,86007
|
||||
82050,86007
|
||||
82050,86384
|
||||
80770,86384
|
||||
80770,87439
|
||||
80068,87439
|
||||
80068,88568
|
||||
79399,88568
|
||||
79399,89172
|
||||
78320,89172
|
||||
78320,89820
|
||||
77280,89820
|
||||
77280,90654
|
||||
76363,90654
|
||||
76363,91139
|
||||
75221,91139
|
||||
75221,91388
|
||||
73952,91388
|
||||
73952,91921
|
||||
72863,91921
|
||||
72863,92719
|
||||
71913,92719
|
||||
71913,93621
|
||||
70997,93621
|
||||
70997,93862
|
||||
69761,93862
|
||||
69761,93895
|
||||
68452,93895
|
||||
68452,94308
|
||||
67319,94308
|
||||
67319,94922
|
||||
66259,94922
|
||||
66259,95857
|
||||
65296,95857
|
||||
65296,95455
|
||||
63892,95455
|
||||
63892,96596
|
||||
62960,96596
|
||||
62960,96344
|
||||
61633,96344
|
||||
61633,97187
|
||||
60582,97187
|
||||
60582,97323
|
||||
59360,97323
|
||||
59360,97241
|
||||
58106,97241
|
||||
58106,97077
|
||||
56855,97077
|
||||
56855,97914
|
||||
55741,97914
|
||||
55741,97491
|
||||
54474,97491
|
||||
54474,98186
|
||||
53310,98186
|
||||
53310,98313
|
||||
52091,98313
|
||||
52091,97963
|
||||
50859,97963
|
||||
50859,97993
|
||||
49644,97993
|
||||
49644,98131
|
||||
48423,98131
|
||||
48423,97674
|
||||
47227,97674
|
||||
47227,97818
|
||||
46001,97818
|
||||
46001,97541
|
||||
44809,97541
|
||||
44809,97674
|
||||
43568,97674
|
||||
43568,97153
|
||||
42418,97153
|
||||
42418,97018
|
||||
41212,97018
|
||||
41212,96839
|
||||
40011,96839
|
||||
40011,96908
|
||||
38747,96908
|
||||
38747,96211
|
||||
37669,96211
|
||||
37669,95612
|
||||
36582,95612
|
||||
36582,95958
|
||||
35205,95958
|
||||
35205,95395
|
||||
34106,95395
|
||||
34106,94919
|
||||
32984,94919
|
||||
32984,94904
|
||||
31675,94904
|
||||
31675,93591
|
||||
30909,93591
|
||||
30909,93627
|
||||
29561,93627
|
||||
29561,93181
|
||||
28420,93181
|
||||
28420,92249
|
||||
27530,92249
|
||||
27530,91650
|
||||
26476,91650
|
||||
26476,91293
|
||||
25278,91293
|
||||
25278,90408
|
||||
24395,90408
|
||||
24395,89733
|
||||
23389,89733
|
||||
23389,89410
|
||||
22133,89410
|
||||
22133,88221
|
||||
21495,88221
|
||||
21495,88098
|
||||
20055,88098
|
||||
20055,86954
|
||||
19408,86954
|
||||
19408,86000
|
||||
18627,86000
|
||||
18627,85174
|
||||
17744,85174
|
||||
17744,84290
|
||||
16917,84290
|
||||
16917,83949
|
||||
15543,83949
|
||||
15543,82524
|
||||
15272,82524
|
||||
15272,82014
|
||||
14033,82014
|
||||
14033,81229
|
||||
13071,81229
|
||||
13071,80009
|
||||
12633,80009
|
||||
12633,79298
|
||||
11563,79298
|
||||
11563,77911
|
||||
11393,77911
|
||||
11393,77034
|
||||
10537,77034
|
||||
10537,76109
|
||||
9737,76109
|
||||
9737,75227
|
||||
8849,75227
|
||||
8849,74191
|
||||
8199,74191
|
||||
8199,72849
|
||||
8104,72849
|
||||
8104,71723
|
||||
7650,71723
|
||||
7650,70806
|
||||
6775,70806
|
||||
6775,69808
|
||||
6032,69808
|
||||
6032,68422
|
||||
6177,68422
|
||||
6177,67599
|
||||
4974,67599
|
||||
4974,66360
|
||||
4800,66360
|
||||
4800,65212
|
||||
4392,65212
|
||||
4392,63906
|
||||
4498,63906
|
||||
4498,62834
|
||||
3855,62834
|
||||
3855,61672
|
||||
3502,61672
|
||||
3502,60414
|
||||
3559,60414
|
||||
3559,59362
|
||||
2664,59362
|
||||
2664,58173
|
||||
2368,58173
|
||||
2368,56862
|
||||
2875,56862
|
||||
2875,55672
|
||||
2668,55672
|
||||
2668,54503
|
||||
2191,54503
|
||||
2191,53257
|
||||
2581,53257
|
||||
2581,52087
|
||||
1778,52087
|
||||
1778,50859
|
||||
2032,50859
|
||||
2032,50331
|
||||
94803,50331
|
||||
94803,48426
|
||||
1962,48426
|
||||
1962,47196
|
||||
1792,47196
|
||||
1792,46022
|
||||
2423,46022
|
||||
2423,44825
|
||||
2604,44825
|
||||
2604,43540
|
||||
2118,43540
|
||||
2118,42384
|
||||
2636,42384
|
||||
2636,41104
|
||||
2401,41104
|
||||
2401,39959
|
||||
2912,39959
|
||||
2912,38754
|
||||
3117,38754
|
||||
3117,37500
|
||||
3158,37500
|
||||
3158,36316
|
||||
3485,36316
|
||||
3485,35167
|
||||
3921,35167
|
||||
3921,34151
|
||||
4732,34151
|
||||
4732,33078
|
||||
5330,33078
|
||||
5330,32041
|
||||
5990,32041
|
||||
5990,30813
|
||||
6188,30813
|
||||
6188,29525
|
||||
6294,29525
|
||||
6294,28756
|
||||
7492,28756
|
||||
7492,27549
|
||||
7785,27549
|
||||
7785,26435
|
||||
8276,26435
|
||||
8276,25150
|
||||
8492,25150
|
||||
8492,24090
|
||||
9110,24090
|
||||
9110,23448
|
||||
10355,23448
|
||||
10355,22560
|
||||
11193,22560
|
||||
11193,21191
|
||||
11371,21191
|
||||
11371,20292
|
||||
12203,20292
|
||||
12203,19636
|
||||
13320,19636
|
||||
13320,18789
|
||||
14184,18789
|
||||
14184,17567
|
||||
14633,17567
|
||||
14633,16387
|
||||
15159,16387
|
||||
15159,15698
|
||||
16203,15698
|
||||
16203,15120
|
||||
17332,15120
|
||||
17332,14042
|
||||
17994,14042
|
||||
17994,13241
|
||||
18913,13241
|
||||
18913,12731
|
||||
20068,12731
|
||||
20068,12034
|
||||
21059,12034
|
||||
21059,10932
|
||||
21755,10932
|
||||
21755,10488
|
||||
22931,10488
|
||||
22931,9468
|
||||
23716,9468
|
||||
23716,9203
|
||||
24989,9203
|
||||
24989,8064
|
||||
25730,8064
|
||||
25730,8168
|
||||
27185,8168
|
||||
27185,7292
|
||||
28092,7292
|
||||
28092,6335
|
||||
28981,6335
|
||||
28981,5999
|
||||
30176,5999
|
||||
30176,5479
|
||||
31284,5479
|
||||
31284,5717
|
||||
32690,5717
|
||||
32690,5150
|
||||
33766,5150
|
||||
33766,4409
|
||||
34793,4409
|
||||
34793,4363
|
||||
36052,4363
|
||||
36052,3890
|
||||
37175,3890
|
||||
37175,3302
|
||||
38277,3302
|
||||
38277,2760
|
||||
39406,2760
|
||||
39406,3329
|
||||
40768,3329
|
||||
40768,2470
|
||||
41844,2470
|
||||
41844,2397
|
||||
43068,2397
|
||||
43068,1912
|
||||
44237,1912
|
||||
44237,2403
|
||||
45515,2403
|
||||
45515,1733
|
||||
46683,1733
|
||||
46683,2489
|
||||
47943,2489
|
||||
47943,2215
|
||||
49143,2215
|
||||
49143,1549
|
||||
50359,1549
|
||||
50359,2310
|
||||
51562,2310
|
||||
51562,2412
|
||||
52767,2412
|
||||
52767,1685
|
||||
54039,1685
|
||||
54039,1939
|
||||
55247,1939
|
||||
55247,2436
|
||||
56416,2436
|
||||
56416,2774
|
||||
57593,2774
|
||||
57593,2803
|
||||
58820,2803
|
||||
58820,3228
|
||||
59973,3228
|
||||
59973,3694
|
||||
61107,3694
|
||||
61107,3625
|
||||
62374,3625
|
||||
62374,3718
|
||||
63614,3718
|
||||
63614,4723
|
||||
64574,4723
|
||||
64574,5009
|
||||
65751,5009
|
||||
65751,5104
|
||||
67006,5104
|
||||
67006,5837
|
||||
68021,5837
|
||||
68021,5991
|
||||
69272,5991
|
||||
69272,6559
|
||||
70350,6559
|
||||
70350,7123
|
||||
71427,7123
|
||||
71427,7230
|
||||
72746,7230
|
||||
72746,7872
|
||||
73792,7872
|
||||
73792,8795
|
||||
74668,8795
|
||||
74668,9195
|
||||
75855,9195
|
||||
75855,9964
|
||||
76812,9964
|
||||
76812,10693
|
||||
77792,10693
|
||||
77792,11903
|
||||
78411,11903
|
||||
78411,12115
|
||||
79776,12115
|
||||
79776,13307
|
||||
80374,13307
|
||||
80374,13750
|
||||
81588,13750
|
||||
81588,14917
|
||||
82171,14917
|
||||
82171,15618
|
||||
83170,15618
|
||||
83170,16626
|
||||
83871,16626
|
||||
83871,16952
|
||||
85285,16952
|
||||
85285,17879
|
||||
86086,17879
|
||||
86086,19186
|
||||
86436,19186
|
||||
86436,20037
|
||||
87307,20037
|
||||
87307,21153
|
||||
87842,21153
|
||||
87842,22036
|
||||
88678,22036
|
||||
88678,23106
|
||||
89256,23106
|
||||
89256,23660
|
||||
90616,23660
|
||||
90616,25133
|
||||
90560,25133
|
||||
90560,26184
|
||||
91150,26184
|
||||
91150,26973
|
||||
92220,26973
|
||||
92220,27937
|
||||
93010,27937
|
||||
93010,29308
|
||||
92984,29308
|
||||
92984,30226
|
||||
93888,30226
|
||||
93888,31507
|
||||
93990,31507
|
||||
93990,32600
|
||||
94512,32600
|
||||
94512,33798
|
||||
94761,33798
|
||||
94761,34939
|
||||
95152,34939
|
||||
95152,35910
|
||||
96099,35910
|
||||
96099,37037
|
||||
96604,37037
|
||||
96604,38375
|
||||
96308,38375
|
||||
96308,39427
|
||||
97144,39427
|
||||
97144,40708
|
||||
96973,40708
|
||||
96973,41904
|
||||
97176,41904
|
||||
97176,43128
|
||||
97185,43128
|
||||
97185,44263
|
||||
97870,44263
|
||||
97870,45488
|
||||
97885,45488
|
||||
97885,46729
|
||||
97606,46729
|
||||
97606,47920
|
||||
98042,47920
|
||||
98042,49141
|
||||
97867,49141
|
||||
97867,50353
|
||||
142
internal/data/2025/DaySeven/input.txt
Normal file
142
internal/data/2025/DaySeven/input.txt
Normal file
@@ -0,0 +1,142 @@
|
||||
......................................................................S......................................................................
|
||||
.............................................................................................................................................
|
||||
......................................................................^......................................................................
|
||||
.............................................................................................................................................
|
||||
.....................................................................^.^.....................................................................
|
||||
.............................................................................................................................................
|
||||
....................................................................^.^.^....................................................................
|
||||
.............................................................................................................................................
|
||||
...................................................................^.....^...................................................................
|
||||
.............................................................................................................................................
|
||||
..................................................................^.^...^.^..................................................................
|
||||
.............................................................................................................................................
|
||||
.................................................................^.^.^...^.^.................................................................
|
||||
.............................................................................................................................................
|
||||
................................................................^.^...^.^.^.^................................................................
|
||||
.............................................................................................................................................
|
||||
...............................................................^.^.^.......^.^...............................................................
|
||||
.............................................................................................................................................
|
||||
..............................................................^.^...^...^.^.^.^..............................................................
|
||||
.............................................................................................................................................
|
||||
.............................................................^.^.^.^.^.^.....^.^.............................................................
|
||||
.............................................................................................................................................
|
||||
............................................................^.......^.^.^...^...^............................................................
|
||||
.............................................................................................................................................
|
||||
...........................................................^...^.^.^...^...^...^.^...........................................................
|
||||
.............................................................................................................................................
|
||||
..........................................................^.^.^.....^.......^...^.^..........................................................
|
||||
.............................................................................................................................................
|
||||
.........................................................^...^.^.^.^.....^.....^.^.^.........................................................
|
||||
.............................................................................................................................................
|
||||
........................................................^.......^.^.^.^.^.^.^.....^.^........................................................
|
||||
.............................................................................................................................................
|
||||
.......................................................^.^.^.^.....^.^.^.^.^.^.^.^...^.......................................................
|
||||
.............................................................................................................................................
|
||||
......................................................^.........^.^...^.^.^.^...^.^.^.^......................................................
|
||||
.............................................................................................................................................
|
||||
.....................................................^...^.^.^.^...^.^.^.^...^.^.^.^.^.^.....................................................
|
||||
.............................................................................................................................................
|
||||
....................................................^.^...^...^.^.^.^.^...^.^.^...^...^.^....................................................
|
||||
.............................................................................................................................................
|
||||
...................................................^.^...^.^...^.^.^.^.^.^.^.....^.^.....^...................................................
|
||||
.............................................................................................................................................
|
||||
..................................................^.....^.^.....^.^.^.......^.....^...^.^.^..................................................
|
||||
.............................................................................................................................................
|
||||
.................................................^...^.^...^.^.^.^...^.^.^.^.^.^.^...^.....^.................................................
|
||||
.............................................................................................................................................
|
||||
................................................^...^.^.^.^.^.^.^.^.......^...^.^.^.^...^...^................................................
|
||||
.............................................................................................................................................
|
||||
...............................................^.^...^.^...^...^.^.^.^...^.^.....^...^.^.^.^.^...............................................
|
||||
.............................................................................................................................................
|
||||
..............................................^...^.^...^...^.^...^.^.^.^...^.^...^.^.^...^.^.^..............................................
|
||||
.............................................................................................................................................
|
||||
.............................................^.^.........^.^.....^.^.^.^.^...^...^...^.....^...^.............................................
|
||||
.............................................................................................................................................
|
||||
............................................^.^.^...^.^...^...^.^.^.^.^.^.....^.^.^.....^.^...^.^............................................
|
||||
.............................................................................................................................................
|
||||
...........................................^...^.^.^.^.^.^...^...^...^.^.......^...^.^.^.^.^.^.^.^...........................................
|
||||
.............................................................................................................................................
|
||||
..........................................^.......^.^.^.^.^...^.^.^.^...^.^...^.^.^.....^...^.^...^..........................................
|
||||
.............................................................................................................................................
|
||||
.........................................^...^.^...^...^...^.^...^.^.^.^.^...^.....^...^...^.^.^...^.........................................
|
||||
.............................................................................................................................................
|
||||
........................................^.^.^.^.^.....^.^.^.....^...^.^.^.^.^.^.^.^...^.^...^...^...^........................................
|
||||
.............................................................................................................................................
|
||||
.......................................^...^.^...^.^.^...^.^...^.........^...^.^.....^.^...^.^.^.^...^.......................................
|
||||
.............................................................................................................................................
|
||||
......................................^...^...^.....^...^.......^.^...^...^.....^...........^.^.^.^.^.^......................................
|
||||
.............................................................................................................................................
|
||||
.....................................^...^.^.^.^.^.^.....^.^.^.^.^.^.....^...^.^.^.^...^.....^.^.^...^.^.....................................
|
||||
.............................................................................................................................................
|
||||
....................................^...........^...^.......^.^.^.^.........^.^.^...^.....^.^.^.^.......^....................................
|
||||
.............................................................................................................................................
|
||||
...................................^.^.^...^.^.^.....^.....^.^.^.^.^.^.^...^.^.^.^.^...^.^...^.^.^.^...^.^...................................
|
||||
.............................................................................................................................................
|
||||
..................................^...^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^...^...^.^.^.^.^.^.^.^..................................
|
||||
.............................................................................................................................................
|
||||
.................................^...^.^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^...^.^.^.^...^.^.......^.^.................................
|
||||
.............................................................................................................................................
|
||||
................................^.^.^.^.^...^.^.......^.^.^.^.^.^.....^.^.^...^.......^...^...^.^.^.....^...^................................
|
||||
.............................................................................................................................................
|
||||
...............................^.....^.^.......^.^...^.^...^.^.^...^...^.^.^.........^.^.^.^.^.....^...^...^.^...............................
|
||||
.............................................................................................................................................
|
||||
..............................^.^.^...^.....^.^...^.^.^.^.^.^.^.^.........^.^...^...^...^.^.^...^...^.^.^.....^..............................
|
||||
.............................................................................................................................................
|
||||
.............................^.^.....^.......^.^.^.^.^.^...^.....^.^.^.^...^.^.^...^.^.^.^.^.^...^.^.^.^...^.^.^.............................
|
||||
.............................................................................................................................................
|
||||
............................^.......^...^.^.^.....^...^.^.^.^.^.^.^...^...^.......^.^...^.^.^.^.........^.^...^.^............................
|
||||
.............................................................................................................................................
|
||||
...........................^...^...^.^.^.^...^.^...^...^.^...^.^.^.^.^.^.....^...^.^.....^.^.^.^...^.........^...^...........................
|
||||
.............................................................................................................................................
|
||||
..........................^.^.^.^.^.^.....^...^...^.^.^.....^...^.^.^...^.^.^.^.^.^.^.....^.^.^.^.^.^.^.^.....^...^..........................
|
||||
.............................................................................................................................................
|
||||
.........................^.^.^.......^.^.^.....^.^.^.^...^.^.^...^...^...^.^...^.^.....^.^.^.........^.....^.^.^...^.........................
|
||||
.............................................................................................................................................
|
||||
........................^.^.^.....^.^...^.^.......^.^.^.....^.^.^.......^.^.....^.^.^.^.^.^.^...^.....^.^.^.^.^.^...^........................
|
||||
.............................................................................................................................................
|
||||
.......................^.^.^.....^.^.........^.^.........^...^...^.^.....^.^.^.^.....^...^.^.^.^.^.....^.^.^...^.....^.......................
|
||||
.............................................................................................................................................
|
||||
......................^...^.^.^.....^.^.^...^.^.^.^.^...^...^...^.^.^.^...^.^...^.^.^.^.^...^.^...^...^.^.....^...^...^......................
|
||||
.............................................................................................................................................
|
||||
.....................^...^.^.^.....^.^.^...^.^.^...^.^.^.....^...^.......^.^.^.^...^.^.^.^.^.^.^.^...^.^.....^.^.^.^...^.....................
|
||||
.............................................................................................................................................
|
||||
....................^...^.^.^.....^...^...^.^...^...^...^.....^.^...^...^...^.......^...^.^...^.^...^.......^.^.......^.^....................
|
||||
.............................................................................................................................................
|
||||
...................^.^.^.............^.^.^...^.^.^.....^...^...^.^...^.^.^.^.^.................^.^.^.^.^.^.^.^.^.^...^.^.^...................
|
||||
.............................................................................................................................................
|
||||
..................^.^.....^.^.^.....^.^...^.^...^.^.^.^.^.^...^.^.^.^.^.^...^...^.^.^.^.......^.^.^.^.^.^.^.^.^.....^.^.^.^..................
|
||||
.............................................................................................................................................
|
||||
.................^.....^...^.....^...^.^.^...^...^.^...^...^.^.^...^.^.^.^...^...^.^.^.^.^...^.^.....^...^.^...^.^.......^.^.................
|
||||
.............................................................................................................................................
|
||||
................^.^...^...^.^.^...^.^.^.^.^.^.....^...^.^...^.^...^...^.^.....^...^...^.^...^...^...^...^.^...^.^.^.....^...^................
|
||||
.............................................................................................................................................
|
||||
...............^.^...^.^.^.^.^.^.^...^.^.^.^.^.^.^...^.....^.^.^.......^.....^.^.^.......^.....^.^...^.^...^...^.^.^.^.....^.^...............
|
||||
.............................................................................................................................................
|
||||
..............^.^.^...^.^.^.....^.^.^.......^...^.^...^.^.^...^.^.^.^.^.^.........^.^.^.^.^.^...^...^.^.......^...^.^.....^.^.^..............
|
||||
.............................................................................................................................................
|
||||
.............^...^.......^...^.^.^.^...^.^.......^.^.^.^.....^.^.^...^...^.....^.^...^.^...^.^...^.^.^.^...^.......^.^.....^.^.^.............
|
||||
.............................................................................................................................................
|
||||
............^.^.^...^...^...^.^.^...^.......^...^...^.....^.^.^...^...^.^...^.^.^.^...^.^...^.^.^...^.^.^...^.^.^.^.^.^.....^...^............
|
||||
.............................................................................................................................................
|
||||
...........^.^.^...^.......^.^.^.^.^.....^...^...^.^.^.^.....^...^...^...^.^.^.^.^.^.^.^.^.^.^.^...^.....^.^.^.^.^.^.^.^.^.^.^.^.^...........
|
||||
.............................................................................................................................................
|
||||
..........^.^.....^.^...^.....^...^.^.^...^.^.^.^.^...^...^.^...^.^.^...^.......^.^.^.^.^.^.......^.....^...^...^.^.......^...^...^..........
|
||||
.............................................................................................................................................
|
||||
.........^.^.....^.^.^.^.^.^.^...^...^.....^.^.^.....^.^.^.^.^.^...^...^...^.^.^...^.^.^.^.....^...^.^.^...^.^...^.^.........^.^.^.^.........
|
||||
.............................................................................................................................................
|
||||
........^.^.^.^.^.....^.^...^.^.^...^.^.^.^.......^...^...^.....^.^.....^.^.^...^.^.^...^.^...^.^...^.^.....^...^.....^.^.^.^.^.^...^........
|
||||
.............................................................................................................................................
|
||||
.......^.....^...^...^.....^.^.....^...^.^.^...^.^.....^.^.^.^.^...^...^.^.^.^.....^.^.^.^.^.^.^.^...^.^.^...^.^...^.^...^...^...^.^.^.......
|
||||
.............................................................................................................................................
|
||||
......^...^...^.......^...^.^...^.^.^.......^.^.^.^.^.....^.^.....^...^.^.^.........^...^...^.^.^...^.^...^.^.^.^.^...^.^.^.^.^.^.....^......
|
||||
.............................................................................................................................................
|
||||
.....^...^.^.^...^...^.^.......^.^.^.^.^.^.....^...^...^.^.^.^.^.^.^.......^...^.^...^.^.^.^.^...^.^.^.^.^.^...^.^.^.^.^.^...^.^.^.....^.....
|
||||
.............................................................................................................................................
|
||||
....^.........^.^.^...^.^...^.^.^.^...^.^.....^.^.^.^.....^.^.^.^.....^.^.^...^.....^.^.^...^.^.^.^.....^...^.......^.^...^.^.^...^.^...^....
|
||||
.............................................................................................................................................
|
||||
...^.......^...^.^.^.^...^.............^.^...^.^.^.^...^.^.^.^.^.^...^.^.^.^.^.^.....^...^.^.^.....^.^.^...^.^.^.^.^.........^.^.^.^.^.^.^...
|
||||
.............................................................................................................................................
|
||||
..^.^.^.^...^...^.^.^.^...^.^.......^...^.^.^.^.^.^.^.^.^...^.^...^.....^.^...^.^.........^.^...^.^.^.^.....^.^.^...^.....^.^.....^.^.^.^.^..
|
||||
.............................................................................................................................................
|
||||
.^...^.^.^.^...^.^.^.^.^.....^...^.....^.^.^...^...^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^.........^.^.^.....^.^.^.^.^.^.^.^...^...^.^.^...^...^.
|
||||
.............................................................................................................................................
|
||||
5
internal/data/2025/DaySix/input.txt
Normal file
5
internal/data/2025/DaySix/input.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
466 4 959 38 9 64 6664 96 946 235 8 55 427 71 77 826 61 19 923 39 64 51 2529 1 8 671 928 12 5 259 54 968 178 489 1 69 32 2356 7 1 391 396 57 384 676 69 459 8951 727 927 6 726 675 776 93 343 4985 2246 95 8 1 12 115 79 98 412 16 3 66 2 7 89 5235 769 91 2 7 7447 447 7 19 36 644 27 4 7 936 11 92 94 5 25 198 164 4232 9 38 41 44 44 99 41 57 99 778 9 42 69 17 44 1 394 127 73 6262 28 15 231 5792 5 437 282 926 3416 19 9811 143 76 35 3683 926 37 72 84 59 8 5 3 4 68 756 7995 2 778 32 17 68 6335 8 622 8171 16 8 32 597 799 587 97 527 34 298 56 773 1 2 41 7 1 4348 492 782 123 7418 73 3 443 1 88 61 93 6 9 99 94 15 615 76 42 981 13 598 75 38 75 149 5383 75 76 8 12 87 499 8 321 31 375 18 51 9966 62 1359 2 87 12 42 7888 1 2 582 36 126 841 984 123 1532 449 786 544 39 2 3 284 73 5 81 514 47 96 75 75 57 94 34 8 3 91 93 5 7 18 239 67 35 671 17 8 9 46 884 22 7 988 24 53 18 417 889 71 4288 354 83 6 11 496 227 53 75 8862 86 32 1 55 8 91 257 61 639 248 893 993 563 73 76 215 995 74 8 774 8118 5 93 46 9 6773 91 86 17 292 39 12 5 86 7 12 2 195 83 568 3339 3 87 227 1 52 151 636 12 479 64 58 726 91 464 92 7752 41 66 916 41 8233 73 59 62 548 328 483 11 44 5543 31 7 863 416 12 3 143 78 26 561 25 623 1 91 29 5 96 847 984 54 4 618 78 3 17 25 66 2 78 5 28 89 34 46 95 98 428 93 64 9682 19 826 858 58 15 7 3 71 2 699 23 85 92 42 718 36 981 799 11 594 18 272 3 69 41 121 99 693 64 184 495 51 38 35 82 41 114 4 37 98 131 18 25 81 3 633 56 6 7 5 14 449 17 36 62 95 14 5839 2722 12 99 2165 7216 12 13 43 74 7 91 71 98 11 24 4 6 65 77 52 818 76 16 94 94 787 7 3 31 65 92 728 2 77 464 93 39 581 2 395 97 79 16 939 79 48 93 9 51 68 2 34 28 397 1 32 6 875 9131 6273 4 367 44 8572 1119 98 3 1 88 4 695 19 1944 547 9 6963 3 18 21 923 84 444 66 41 8 381 42 932 8592 967 41 7236 63 68 63 168 44 3 338 117 6153 784 78 1 43 34 616 835 395 9 8 72 623 1 2 79 492 37 11 46 653 59 285 16 5 54 7 2431 42 816 524 87 68 1 334 87 57 28 6 7 25 52 863 9 795 71 522 32 4559 62 47 37 6537 58 9 52 54 29 89 1 39 94 295 194 1 39 68 2 72 86 68 254 781 75 14 7 86 9793 29 96 4 82 5897 79 5 25 2413 3 3 41 58 82 3329 52 8 32 336 6583 577 13 67 17 5318 69 17 59 88 7 3 18 9131 15 129 9956 55 5 859 759 5 1677 189 45 49 1 41 25 28 975 266 42 26 5 53 726 43 74 29 646 1 983 79 73 9551 44 75 5 73 46 575 93 755 9619 9 6 1 6874 533 2256 43 7247 72 89 292 913 67 6445 6988 29 35 7 47 18 42 42 948 4 557 55 279 454 887 6 13 4 1686 9 8532 43 657 4 56 81 92 93 31 963 3 943 7 83 4324 18 42 99 53 166 6 9 37 7553 962 3 78 964 99 443 74 69 42 54 48 32 81 247 325 38 31 469 37 5 915 4157 986 736 59 93 1538 3269 49 85 8264 73 134 96 55 2 78 51 8 6 9 4422 68 47 74 74 2 54 869 4 299 834 269 654 545 4746 3 69 481 883 8833 2 46 8 4 54 838 348 4 226 2 843 8 469 6874 8 61 39 88 41 62 36 6 2999 65 3 8443 38 33 48 1 47 213 74 5363 35 59 7 9229 51 8 741 1 955 665 567 27 498 1 12 154 14 63 521 25 1 859 99 682 886 84 8 44 69 97 3 83 48 211 59 37 69 3345 9 843 83 17 65 6 26 5 38 5 8 86 8 89 3 142 88 394 6 773 55 1 7 2 612 97 52 975 31 253 97 71 228 17 171 47 3 638 791 4 241 748 38 971 6 42 63 896 5 61 75 366 7 7145 7 91 48 7 147 666 6467 487 49 87 315 96 75 99 48 78 15 811 76 9 95 3 3791 13 4 14 2 656 984 2 51 621 356 499 2269 1 86 9152 686 8 41 245 29 7 58 53 3 463 47 5 85 1 175 986 1121 82
|
||||
819 95 1621 22 27 65 6644 76 697 854 162 561 553 8999 51 663 7571 71 415 91 52 25 9111 7 82 869 163 45 31 394 95 642 8567 771 81 787 448 971 947 2 1489 639 23 826 957 83 12 446 947 776 64 249 299 397 65 672 7847 4577 966 8 71 41 322 655 79 524 51 54 31 8911 557 83 2796 494 33 7 48 2349 742 615 78 59 156 9 44 2 17 69 18 366 8 142 739 56 1244 7 63 77 456 61 19 81 18 44 358 42 2 57 947 498 982 833 678 373 5682 15 93 559 6236 23 947 566 865 8489 453 144 448 27 88 526 864 29 81 97 1 16 44 3 33 73 911 3852 586 249 24 66 58 8277 8 434 7627 419 38 47 922 176 624 34 433 1171 126 2 934 55 14 18 222 3 924 455 364 291 7869 66 34 4297 44 15 278 37 4 861 35 71 82 445 62 282 588 96 587 46 3 18 751 6441 97 52 3 75 289 253 4 378 41 567 34 27 515 71 1973 71 85 69 16 4591 4 19 514 58 795 384 252 112 3574 41 842 779 5529 99 43 377 6318 33 64 745 63 45 17 13 983 697 671 6 87 8678 396 98 91 439 429 986 6 462 11 58 15 14 647 15 2 237 97 43 3784 777 876 74 4114 998 27 653 49 116 923 92 41 1145 79 89 2 584 989 8926 713 34 462 41 961 282 739 96 15 741 595 8 885 615 8714 6 483 22 72 6452 26 95 27 472 23 965 74 76 9 46 3 532 68 726 7143 1 42 718 7 17 175 871 85 556 98 59 116 66 751 76 1375 85 711 399 94 1734 55 71 81 286 238 2986 47 87 9416 98 8 141 758 76 9 297 41 24 369 695 111 27 343 56 42 68 389 693 93 837 336 98 95 59 35 17 12 66 316 41 49 945 43 52 47 521 189 44 2821 11 217 244 88 67 67 39 56 56 249 4 47 13 8 881 29 574 254 21 174 13 421 97 69 31 773 93 7 346 938 232 56 99 36 37 55 346 5 75 66 263 37 96 83 68 912 56 4932 49 83 31 332 41 15 84 98 76 8616 8217 89 35 2117 879 1112 92 24 56 24 389 61 74 66 19 294 74 3194 29 62 521 261 75 65 83 137 9 633 283 22 29 139 84 57 712 62 31 493 26 768 89 872 35 478 62 88 85 72 51 8 33 979 34 599 4 868 47 312 9535 424 18 474 38 9936 2881 28 241 8 94 3 462 67 195 785 1 5623 3 11 65 495 5623 241 4 54 3 594 38 795 3144 155 76 981 17 66 693 571 18 13 571 515 519 747 94 48 59 14 1416 994 483 427 23 42 587 83 9 22 863 351 8 47 49 43 598 76 416 279 49 1448 9 184 673 15 14 7 49 53 5528 54 4 842 38 77 17 7 675 55 456 54 1398 59 29 47 257 41 68 49 48 463 29 45 52 27 743 228 9 53 96 8 34 43 215 271 73 993 21 1 31 6641 76 49 19 32 8571 244 78 73 9441 32 663 99 17 52 4683 214 348 62 159 3292 6836 94 11 563 7584 31 851 38 53 4 36 52 9196 27 891 5671 73 551 616 616 61 1223 558 43 88 76 54 67 7229 839 438 11 23 9 67 763 98 563 42 474 12 794 762 999 5855 615 73 5 85 31 168 63 734 9519 44 89 19 9718 368 2348 93 6634 23 72 792 289 86 5936 5936 48 68 3 25 97 85 6 466 4 258 51 112 645 946 82 64 2 213 7 532 81 26 84 67 81 541 85 57 883 35 671 24 89 4336 55 55 96 29 691 34 58 47 8563 682 85 32 662 45 515 24 36 44 914 42 32 85 364 354 89 96 526 62 65 758 5269 334 276 27 16 2219 4313 82 73 1334 498 416 299 13 48 73 261 3 2 2 7953 67 89 53 48 32 98 159 8 712 687 331 329 99 9338 318 18 261 659 5258 37 33 617 6 88 881 627 99 683 79 877 9 281 5847 64 64 84 49 96 54 37 25 5453 36 3 2494 16 15 51 983 69 243 713 3623 777 22 317 9291 76 78 6213 663 767 698 174 98 298 6 76 867 61 92 395 3 34 89 46 295 22 855 73 723 686 81 933 9 412 546 28 32 44 6122 9 953 87 98 96 8 53 36 66 4 9 772 378 35 8 238 72 8 65 68 21 8 89 7 915 37 5774 354 97 395 1425 31 431 32 972 1464 91 463 922 26 631 154 87 156 96 732 91 567 73 45 18 618 9 1773 6 57 36 171 925 625 9494 886 81 97 682 19 37 93 65 94 77 155 84 1 84 5 2236 85 1 79 772 298 543 22 37 556 962 715 9689 66 58 9186 841 12 866 916 17 3 83 67 2 685 42 86 53 46 282 112 3384 82
|
||||
39 428 3812 46 55 14 378 78 176 984 329 348 226 6737 36 894 8935 9 934 2 65 38 73 18 65 331 194 59 756 2 44 745 7169 541 87 629 214 868 125 4 7135 843 7 143 898 71 81 76 754 813 59 42 551 116 68 876 8496 5168 762 76 47 5 3953 1366 97 56 625 676 15 7913 225 27 249 822 87 26 73 2116 241 222 95 18 919 5 81 76 2 86 54 8493 594 7847 26 9 2254 2 9 84 7237 7 47 18 86 71 945 99 4 88 344 875 812 418 92 1915 9424 41 46 54 4699 99 813 45 42 4296 5733 995 5851 82 26 85 293 286 22 28 9 54 432 98 116 28 48 33 362 464 17 16 58 617 92 7712 2165 611 414 17 62 634 928 86 37 6885 6 7 345 23 41 45 549 78 331 694 785 732 8672 83 3826 7184 21 39 387 17 2 812 64 66 2 738 4 751 718 181 582 73 7 39 517 819 76 48 6 22 761 944 76 124 63 412 77 21 472 683 647 82 35 34 1 786 46 97 124 61 381 883 64 245 652 64 38 965 4752 43 38 749 2859 38 68 947 17 6 561 31 817 163 678 883 373 7877 378 474 47 119 425 842 1 64 99 23 39 43 91 13 39 855 17 6 5334 56 398 12 2139 851 33 929 86 696 171 97 657 2145 73 55 81 188 738 7994 89 84 934 89 9143 798 421 55 23 924 44 7 447 27 4598 41 165 774 45 1449 32 46 8 59 41 461 111 14 57 33 26 8838 81 663 512 62 91 414 16 27 645 742 93 841 378 546 9322 56 414 1956 193 468 796 244 895 86 49 94 77 233 255 8442 35 83 516 65 16 897 94 5 11 765 43 55 1686 375 382 643 9323 45 462 71 86 145 96 134 25 55 259 5 71 62 15 95 283 118 2 237 49 645 11 312 899 89 673 99 882 31 17 95 14 85 52 44 124 2 25 27 9 633 52 727 461 52 53 87 18 65 97 89 387 487 7 6389 227 65 11 6 99 69 57 436 35 51 56 886 8 481 416 67 471 45 5471 16 32 211 584 1 93 325 52 32 3525 9939 92 67 683 71 5523 17 33 6 526 417 23 858 63 74 492 224 4773 55 84 735 359 57 51 85 319 52 942 443 58 5 436 61 632 659 94 76 785 949 8 82 312 73 7819 58 55 9 74 58 9 73 677 32 17 84 578 36 16 9325 94 54 365 22 419 299 714 555 38 42 7 192 64 81 483 49 645 9 117 28 216 2177 556 8 2 81 491 11 565 8375 499 934 845 91 82 133 5 7 68 734 197 558 398 37 18 67 17 8858 96 755 461 19 95 68 683 31 67 391 912 9 46 2 7 489 692 8365 736 7573 982 5 929 556 59 186 27 16 12 6889 26 856 457 62 23 86 83 127 78 294 64 431 83 82 24 616 16 233 2 38 317 3 544 4 29 261 621 46 57 87 9 699 39 9841 495 87 9636 9 38 51 8461 28 42 86 13 984 944 82 36 9761 12 427 411 8 24 2681 785 774 89 253 4854 6723 86 11 267 5635 37 317 65 25 7 77 67 312 95 488 2631 24 5253 963 636 561 496 768 4 6979 99 67 71 4725 641 577 218 92 92 13 562 52 692 72 8243 48 464 628 246 586 552 773 15 37 625 749 25 87 721 42 9833 23 1432 883 7976 77 1887 29 52 331 794 96 5434 3619 996 27 73 67 72 12 4 2536 56 567 8 277 476 778 81 91 73 32 36 481 86 27 45 12 41 628 2 22 175 386 591 55 375 728 15 946 79 84 133 11 6361 88 6434 569 43 52 72 541 9967 373 62 89 658 14 57 45 24 3397 92 2 923 63 38 513 6247 99 526 82 69 23 3526 56 631 5617 746 961 877 69 21 77 4865 96 4 2 443 72 187 22 779 91 1 459 66 158 812 633 312 99 53 218 39 648 6271 292 61 165 738 92 48 331 59 361 964 42 663 11 235 62 38 67 1 25 98 281 18 72 6414 3 768 7992 11 41 49 467 11 533 595 5341 929 98 528 477 73 55 3179 934 19 82 714 1 316 69 8 487 45 59 717 4 98 2 23 149 61 325 95 3574 216 9 969 9 591 288 228 69 43 3838 97 326 3 17 1 96 71 18 53 8 33 354 365 689 188 34 9 9 56 62 39 588 23 84 4 321 9626 2629 47 224 1135 75 895 87 79 8423 42 651 35 82 836 77 47 112 95 724 285 876 389 35 16 653 44 1541 571 9 35 1892 738 51 1532 487 33 21 651 264 81 281 95 98 821 95 16 8 36 15 457 131 51 9 691 688 7544 54 34 727 315 293 384 88 49 635 82 79 773 865 84 46 62 4 71 398 17 88 57 72 716 274 518 81
|
||||
3 764 4592 46 94 43 589 67 83 933 466 475 684 3377 83 873 8357 2 12 3 19 3 44 54 37 882 16 39 772 9 39 717 3773 194 94 872 957 774 383 287 9785 225 9 63 6 9 5 31 2196 646 81 82 573 382 52 639 54 84 497 77 94 9 5692 6288 74 9 983 137 79 8617 272 61 49 3 2 65 943 998 693 118 45 32 777 2 49 81 6 61 12 9169 989 3353 95 7 63 95 9 9 5121 9 785 31 38 5 21 92 7 95 177 249 195 68 4 8276 123 6 97 8 442 12 636 29 54 8842 5797 333 1586 5 3 8 65 621 82 7 2 25 161 95 171 4 51 8 671 757 6 76 39 731 36 2848 98 523 449 69 68 26 11 6 9 8754 1 2 768 28 35 5 678 78 9 645 89 841 3836 9 8356 9223 47 84 154 76 17 844 75 46 8 919 9 837 356 118 33 81 6 66 918 8 78 4 81 3 269 992 99 72 2 669 62 857 675 751 46 91 44 34 6 59 15 35 489 97 261 377 12 2 2 6 93 962 3595 35 54 65 7323 41 1 6 2 6 214 569 111 228 522 984 128 9416 259 976 44 714 945 428 8 33 6 26 258 32 87 277 65 669 89 1 5785 92 77 13 62 961 24 623 8 94 898 95 797 64 25 34 17 239 136 8549 9 4 337 1 5478 833 94 9 72 12 11 9 836 9 616 43 286 1892 66 874 37 61 6 2 84 875 891 71 13 41 32 6496 13 34 7 58 2 69 29 19 881 96 9 365 473 129 6147 91 773 9161 527 316 837 43 483 5 8 83 88 263 446 6258 95 63 799 7 42 311 3 2 13 662 97 29 6635 643 916 572 1686 6 783 4 64 4545 5 885 2 93 196 5 14 2 62 9 332 818 1 597 2 741 43 54 928 96 758 89 21 89 4 16 85 15 42 65 7 9 3 16 5 44 2 675 489 59 19 2 28 15 71 59 4 493 4 1328 64 7 6 7 8 25 7 77 96 19 57 896 2 9698 352 46 149 91 4991 66 65 148 565 1 46 523 623 72 878 2397 95 55 319 56 1622 51 72 2 329 573 13 475 19 4 639 8268 1372 7 82 6 985 46 85 79 724 46 567 813 45 5 557 79 242 8 19 19 6276 388 2 88 6734 8 3334 81 76 5 67 52 4 26 7689 41 34 46 935 61 15 2279 9 97 8 78 75 96 5572 256 58 26 28 452 38 87 217 38 92 15 132 37 829 9634 664 2 6 82 47 67 683 433 69 271 816 78 2 762 9 2 72 82 36 42 518 3 32 4 9 2622 21 516 797 793 87 2 918 815 16 2 711 6 78 3 2 42 163 8482 964 5886 185 7 99 5 45 854 96 16 83 3764 956 193 448 4 36 98 15 21 67 77 3 238 4 32 53 876 22 388 5 96 331 9 728 1 5 366 615 29 21 44 94 396 84 9876 348 43 5459 9 96 14 5 55 42 597 95 276 921 62 28 317 983 572 987 9 27 17 845 241 4 5 753 7459 98 91 539 2768 81 276 67 79 69 93 47 11 38 61 41 85 6932 4 25 876 815 78 1 6168 17 74 978 4835 76 243 297 51 32 7 17 573 232 65 4142 46 878 276 845 656 863 765 12 64 853 996 56 93 43 222 1382 836 592 239 2537 44 4283 35 99 2 938 91 3 8785 485 74 71 1 59 62 6 1312 69 6689 4 31 91 977 76 91 57 99 49 875 89 28 37 9 93 378 2 81 472 644 231 21 172 52 84 742 34 16 85 43 6479 38 2422 2 36 56 74 951 5631 336 9 99 897 29 3 77 15 6289 48 5 289 8 59 839 3751 6 22 7 7 3 642 1 256 36 131 82 816 98 84 8 1133 59 36 38 78 76 244 38 114 85 1 21 39 78 55 35 898 8 73 743 44 276 7321 829 738 419 146 68 6 3 55 947 819 16 895 43 774 46 92 2 6 6 4 435 18 73 342 8 523 571 4 31 33 333 96 6 7489 96 126 38 457 62 94 93 3417 373 3 86 86 1 366 57 8 416 73 3 36 9 29 4 757 378 68 487 29 8692 336 4 795 6 564 8 198 739 34 344 254 35 4 5 9 63 63 52 7 69 38 9147 3748 165 437 93 5 2 28 1 84 734 24 71 9 872 9531 4745 56 93 4695 2 9 853 4 6471 29 84 1 96 357 64 24 18 19 616 158 843 589 75 23 74 35 1278 543 8 72 3987 68 3 8 22 87 21 712 326 91 515 1 1 372 35 72 11 49 754 42 517 91 7 439 13 7324 434 1 199 892 329 92 93 65 6 64 98 491 481 7 44 8 8 42 4 96 34 36 91 87 71 74 37
|
||||
* * + * + + + * * + + * + + + * + * * * + * + + * + * + * * * * + + * * * + * * + * * * * * * + + + * + + * * + + + + + * * + + * * * * * + * * + + * * + + + * * + + * + * + + * + * + * * + + * * + + + * + + + + + * * * + * + + + + + + + * * + * + + + + + * + * * * * * + + * * + * + * * * + + + * + + * + * + * * * * + + + + * * * * + + * * * + * + + + + * * * * + + * * * + * * * * + + + + + + + + + + * * * * + * + + + * + * * + * * * * * + * + + + + * + * * + + + * + + + * * * * + * + + + + * * * + + + * * + * * + + * * + + * * * + * * + + + * * + + * * + + + + * * + + + * + + * + + * + + + * + + * + + * + + * * + + + + * + * + + * * * * * + + * + + * + * * + + * * * + + * * * + * + * + + * + * + * + * * + + * + * + * * * + + + + * * * * * + + * * * * + + + * * * * + + + * * * + * * + + + * + + + * + + * + * * * + + * * * + + * * + * + + + + * * + * + + * * * + * + * + + + * * * + + * * + + + * + * + + + + * + * + + * * * + * + * * + + * + * * + + * + * + * * * + + + * * * * + + * + * + * * + + + + + + * + + + + + * * + + + * * + * + + + + * * + * + * + + * * + + * + * * * * + + + + * + * + * + + + + * + + + * * * * * + * * + * + + * + * * + * * + + * * * * * * * + * * + + + * + + * * * * * + * * * + * * * + * + * + + + + + + * + + + * * + + * + + * * * + + + * + * * + + * + + + * + + * * * * + + * + * + + * + + * * + * + * + * * + * * * + * * * + + * + * + + * * * * + + + + * + * + * + + + + * * * * + + * * * * * * + + * + * * + + + * + + * + * * * * * * * + * * + * * + * + * + * * + + + + * * * * + * + * * + * * * + + * * + * + + * * * * + + * + + * * + * + * + * + + + + + * * + * * * * + * * * + + + * + + * + + + + + * * * * + * * + + + + + * + + + + * * + + * * * * * + + + + + + * * + + * * + + * * + * + + * * * * * * + * + + + + * + * + * * + + + + + + + * + + + * + + + + * + * * + * * + * * * + + + * + + * * * + + * + * + * + * + * + * + * * + + + + * * * + * * + * * + + * * * + * * * * + * + + * + * * * + + * * * + + + * + + * + + * + * * + * + * * + + * + *
|
||||
156
internal/data/2025/DayTen/input.txt
Normal file
156
internal/data/2025/DayTen/input.txt
Normal file
@@ -0,0 +1,156 @@
|
||||
[.#...#...#] (3,5,7,8) (0,3,4) (0,1,2,3,4,7,9) (0,1,3,4,6,7,9) (1,4,5,6,8) (0,1,6,9) (0,2,3,4,5,7,8,9) (1,2,5,6,7,9) (0,2,3,5,6,7,8,9) (0,2,3,4,5,7,8) {46,36,54,60,41,78,47,75,59,57}
|
||||
[.#...#.] (0,1,2,3,4) (0,1,2,3,4,5) (3,5,6) (0,2,4,5) (1,2,5) (3) (0,3,4,5,6) (1,2,4,6) {48,163,178,40,179,32,133}
|
||||
[##.##.###] (0,1,3,4,6,7,8) (1,4) (1,2,3,5) (3,7) (0,3,4,7) (0,3,8) (1,5,7) (1,2,3,4,5,6,7,8) {29,156,20,68,149,33,23,61,43}
|
||||
[.###.] (1,2,4) (0,2,4) (0,1,3,4) (2,4) {23,23,40,3,43}
|
||||
[...####.#.] (1,3,5,9) (0,1,2,3,5,6,7,8,9) (1,2,4,8) (4,6,8,9) (1,2,7) (1,2,7,9) (2,6) (9) (0,2,3,6,7,8,9) (0,1,4,5,6,7) (2,3,5,6,7,8) (2,3,4,5,7,8,9) (4,5,8) {18,56,78,48,75,58,55,52,83,73}
|
||||
[..#..###] (0,1,2,3,6) (1) (0,1,2,3,4,7) (3,6) (3,5,6) (0,1,3,5,7) (1,3,5,6) {41,47,33,69,13,24,48,21}
|
||||
[##.####...] (3,8) (1,5,7) (1,4,7,8,9) (0,2,3) (0,3,4,7,8,9) (1,2,4,5,6,7,8,9) (0,2,3,4,5,8,9) (0,1,3,4,7) (1,4) {31,56,25,36,50,41,11,48,30,25}
|
||||
[#....#..#] (0,1,2,3,4,7) (4,5,8) (1,3) (1,2,8) (2,8) (0,4) (1,2,3,4,5,6,8) (0,2,3,6) (2,3,5,6,7) {28,40,41,45,39,22,21,16,26}
|
||||
[.#.#] (0,1,2) (0,2,3) (2,3) (1,3) {12,0,12,12}
|
||||
[#...#.] (1,3,4,5) (0,2,3,5) (0,1,2,4) (1,4,5) (1,2,3) {156,17,167,169,6,162}
|
||||
[.##..] (0,1) (2,3) (0,1,2,4) (0,2,3,4) (1,2) (0,4) {36,23,36,21,28}
|
||||
[.###] (0,1,2) (1,2) (2,3) (0,3) {16,11,13,9}
|
||||
[####..#.#] (1) (0,4,6) (0,2,8) (1,8) (0,4,6,8) (0,2,4,5,6,7) (0,1,3,7) (0,1,2,3,4,6,7) (4,5,6,7) (1,2,6,7) {67,51,52,21,62,30,70,59,28}
|
||||
[.####] (0,2) (0,2,4) (1,2,3) (1,2,3,4) {187,8,195,8,6}
|
||||
[###..#] (1,2,4) (0,1,2,5) (1,2,3,5) (0,2,4,5) {31,167,186,146,28,177}
|
||||
[##....#] (0,1,3,4,5,6) (0,1,3,5) (1,2,4) (1,2,3,5,6) (0,2) (1,5) {41,46,44,31,24,32,20}
|
||||
[#.#.] (1,2) (1,3) (2,3) (2) (0,3) (0,1,2) {20,51,60,38}
|
||||
[#.##..####] (0,2,3,4,5,6,7,9) (1,3) (1,2,3,4,6,7) (2,4) (0,2,4,5,6,9) (4,5,8) (0,3,4,9) (0,1,3,6,7,9) (0,1,4,7,8,9) (1,2,4,6,8) {48,58,62,58,83,12,67,41,21,48}
|
||||
[..##] (2,3) (1,2,3) (3) (0,1,3) (0,1) {18,37,37,41}
|
||||
[##.#.##.] (0,1,3,4,7) (0,6,7) (3,6) (0,1,2,3,4) (3,4) (0,1,2,3,5,6,7) {211,199,196,234,30,185,216,200}
|
||||
[#...#.##] (1,4) (1,2,3,4,6,7) (0,3,4,5,7) (2,5) (0,1,2,4,6) (5) (1,4,5,7) (2,3,4,7) (1,5,6) {15,54,49,34,60,70,33,47}
|
||||
[.#.#] (0,2,3) (1,3) {20,12,20,32}
|
||||
[#..#.] (4) (0,3) (1,2) (0,2) (0,2,3) (2) {21,13,48,4,9}
|
||||
[.######] (2,5) (0,2,3,5) (0,5,6) (4) (0,1,6) {45,18,22,9,18,40,36}
|
||||
[##..#.#.#] (3,7) (1,5) (2,3) (0,1,2,3,4,6,8) (0,1,2,3,4,5,8) (6,8) (0,8) (1,2,8) (1,4,5) (0,1,3,5,6,7,8) (1,2,3,4,5,6,7) {37,61,43,33,21,30,26,7,55}
|
||||
[#.##] (1,2,3) (0,1,2) (0,2,3) {18,2,18,16}
|
||||
[...#] (0,1,3) (0) (0,1) (0,1,2) {46,34,8,15}
|
||||
[.###..#.] (0,1,2,3,4,5) (4,7) (5,6) (1,2,3,5,6,7) (0,2,4,7) (1,2,3,6,7) (0,2,5,7) (1,2,3,4,6) (3,4,6,7) (0,2,3,4,7) {29,24,52,165,163,42,163,190}
|
||||
[.#.###] (0,1,3,4,5) (3,4,5) (0,2) (1,4,5) (0,2,3) (1,2,4,5) {48,30,31,45,44,44}
|
||||
[.....#...] (2,3,5) (1,2,3,5,7) (4) (0,3,4,6,7,8) (0,1,4,5,6,7) (4,5,6,7,8) (0,3,6,8) (0,1,3,4,6,7,8) (0,1,6,8) (1,2,5,8) (5) {63,64,34,57,217,221,225,221,225}
|
||||
[#.#.#####] (4,5) (2,4,6,7,8) (3,5,6,8) (1,3,4,7,8) (0,2,4,5,6,7,8) (1,2,3,5,6,7,8) (1,8) (0,2,3,4,5) (0,6,8) {34,15,58,37,54,58,53,45,56}
|
||||
[.#..#.] (3) (1,2,3,5) (0,4) (1,2,3) (0,2,4,5) (3,4) (0,1) (0,1,3,4) {190,199,34,195,185,18}
|
||||
[##..#.###] (1,2,3,5,6,7) (4,6,8) (3,6,7) (3,5,6) (0,2,4,6,7,8) (0,5,6,7,8) (1,2,5) (0,1,2,4,6,8) (1,2,3,6,8) (0,6,7) {54,41,60,49,46,39,113,59,64}
|
||||
[##.#####.#] (1,3,4,5,6,7,8,9) (4,6,7,8,9) (1,2,4,6) (0,3,4,6) (0,2,4,5,6,8) (0,1,2,5,8,9) (0,2,4,9) (0,1,4,5) {199,27,185,28,209,39,57,19,48,184}
|
||||
[##..] (0) (0,3) (1,2) (1,2,3) (0,2,3) (0,1) {37,28,14,25}
|
||||
[.....##..#] (0,1,3,4,5,7,8,9) (7) (0,2,4,8,9) (0,1,2,5,6,7) (0,1) (0,4,5,9) (6,9) (1,3,5,6,7,8,9) (0,1,2,5,7,9) (2,6) {39,38,37,7,8,34,46,44,8,50}
|
||||
[.###.####.] (0,1,2,3,4,5,7,8,9) (4,9) (1,2,5,7,9) (0,1,2,3,5,6,7,8,9) (0,2,4,6,8,9) (2,3,4,6,9) (3,7,9) (8) (3,8) (0,1,4,5,6,7,8,9) (1,5,8) (0,1,3,4,5,8,9) {37,40,38,45,42,40,32,32,63,72}
|
||||
[...#.#] (3,5) (0,1,2,5) (1,2) (0,3,4) {12,14,14,10,2,18}
|
||||
[.###.] (0,2,4) (0,4) (2,3,4) (0,3) (1,2,3) {11,5,30,29,25}
|
||||
[.#..#] (3) (1,3,4) (1) (2,4) (0,3) (0,2) (1,2,3,4) {28,25,43,31,29}
|
||||
[##.##.] (0,1,3,4) (2,3,4) (0,1,4,5) (0,2,4,5) (0,1,2,3) (2) (1,3,5) (1) {41,54,43,59,36,17}
|
||||
[#.....#] (0,1,3,6) (1,2,3,5) (0,1,2) (0,3,4,5,6) (0,4) {158,34,22,43,142,31,25}
|
||||
[.#.#..#.] (0,1,2,4,6,7) (0,1,2,3,4,5) (1,5) (0,1,3,5,6,7) (0,1,2,3,4,5,7) (1,3,6,7) {207,233,190,213,190,221,29,40}
|
||||
[.#.##] (0) (0,1) (1,2,3) (1,2,4) (2,4) {120,34,41,9,32}
|
||||
[.#.#..##.] (1,2,4,6) (0,1,2,3,6,7,8) (2,3) (1,2,3,4,6,8) (0,7,8) (1,2,5,8) (0,2,5,6,8) {24,18,36,21,12,8,26,16,29}
|
||||
[#..###.] (1,2,3,4,5,6) (0,2,4) (0,1,2,4) (3,5,6) (0,2,3,4,5,6) (0,3,5,6) (0,1,2,3,5,6) (4) (0,1,2,3,5) {77,44,66,199,46,199,190}
|
||||
[...##..##] (1,2,3,5,6) (0,1,3,4,5,7) (1,2,3,4,5,7,8) (1,2,3,6,8) (0,1,6,7,8) (0,1,2,3,4,5,7) (0,2,3,4,8) (0,1) (1,2,3,4,5,7) (0,3,4,5,6) {75,122,93,109,78,80,57,77,68}
|
||||
[.######.] (0,3) (0,3,4,5,7) (0,2,4,7) (2,3,5,7) (2,4) (0,1,2,3,4,7) (1,5,6) (5,6,7) {69,29,62,61,67,57,30,83}
|
||||
[##.#.#.#.#] (0,3,4,6,7,8,9) (0,4,5,6,7) (2,4,6) (0,3,5,6) (1,4,5,9) (0,2,3,4,5,6,7,9) (3,5,8) (0,1,2,3,5,6,7,8,9) (1,5) (0,1,2,5,6,7,8,9) (4,8,9) {75,55,56,57,75,97,92,67,89,81}
|
||||
[##...] (3) (2,3) (3,4) (0,1,2) (0,3) (1,4) (0,1,4) {25,31,36,35,20}
|
||||
[.####...] (1,2,3,4,5,7) (1,4,5,6) (1,7) (1,5,6) (0,2,4,6) (0,3,4) (0,2,4,5,6) (2,5,6,7) (2,3,4,5,6,7) {37,56,77,44,75,87,79,68}
|
||||
[..###.#] (1,2,4) (0,1,5) (1,3,5,6) (2,3,4,6) (0,2) (0,2,3,4,5,6) {193,41,194,36,35,47,36}
|
||||
[.####.##.] (0,1,4,5,6,8) (0,1,3,4,8) (2,6,7) (2,3,4,5,6,7,8) (0,3,5,6,8) (0,1,2,3,4,6,7,8) (1,3,5,6,8) {37,29,6,39,17,42,48,6,49}
|
||||
[.###.] (1,2) (0,1,3) (0,1) (0,1,4) {27,44,17,12,11}
|
||||
[#..###..] (1,2,4,6,7) (0,1,4,7) (0,4,5) (0,5,7) (0,2,3,4,5,6) (0,1,3,5,6) (0,3,4,5,6) (2,4,6,7) (0,1,3,4,5,7) (3,7) {64,50,26,50,55,64,42,58}
|
||||
[.####.#] (3,5,6) (0,1,4,6) (0,1,2,5,6) (2,4,6) (2,3,4) (0,1,3,4,6) (1) (0,1,2,3) {35,39,33,29,32,5,30}
|
||||
[..#######.] (0,1,2,4,5,6,7,8) (3,4,6,8,9) (0,2,3,4,6,7,8,9) (0,1,3,7,9) (0,2,3,4,5,6,7,8) (0,2,4,5,6,7,8,9) (0,1,3,4,6,7,8) (3,5,8) (2,5,6,8) (0,1,2,3,5,6,9) (0,1,4,5,7,9) {63,45,22,67,61,46,45,62,60,57}
|
||||
[##.#.] (1,2,4) (0,1,3) (0,1,4) {20,190,170,13,177}
|
||||
[####..#.##] (1,4,8) (0,1,3,4,5,6,7,8) (1,3,4,9) (0,1,2,3,7,9) (1,3,4,6,7,8,9) (0,2,4,5,6,8) (0,3,4,5,9) (2,6,7) (0,1,2,4,5,6,7,8,9) (0,1,5) (1,2,8) (8) (2,3,4,5,6,7,8,9) {69,258,242,57,90,67,71,74,262,61}
|
||||
[##.#] (0,1) (0,3) (2,3) (1,2,3) {33,27,21,37}
|
||||
[#...###.##] (0,1,2,5,8,9) (5,6) (2,3,4,5,7) (3,4,8) (1,4,6,7,8) (1,6,8) (0,1,2,5,6,7,8) (1,2,4,5,7,9) (3,7,9) (2,8) (1,5,8) (0,1,2,3,4,5,6,8,9) (0,4,5,7,9) {71,97,88,63,90,129,70,78,125,64}
|
||||
[..##.##.#.] (0,1,2,4,5,6,8,9) (1,2,3,4,5,6,7,9) (0,1,2,5,6,7,8,9) (0,1,2,3,5,8,9) (1,2,7,8) (0,6) (0,1,3,4,5,6,7,8) (0,3,4,5,7,9) (2,9) {79,74,70,46,50,78,52,64,71,74}
|
||||
[.#..#...##] (1,3,6,9) (1,3,5,6,7,8,9) (2,3,4,5,7,8,9) (1,3,4,7,9) (1,2,3,4,5,6,9) (0,1,2,3,7,9) (3,6,9) (0,1,2,5,6,8,9) {12,179,160,196,149,168,187,29,24,200}
|
||||
[##.###...] (4,5,7,8) (0,4,6,7,8) (3,4,7,8) (1,2,3,6,7,8) (2,3,5,6,7,8) (0,2,6) (0,1,2,5,6,7) (0,1,2,3,7,8) (1,4,5,7) (1,2) {38,38,49,37,47,40,37,76,60}
|
||||
[.#.###] (0,1,3,5) (0,4) (2,3) (1,4) (2,3,4) {16,18,13,20,22,7}
|
||||
[....#..#] (1,2) (0,2,3,5) (4,7) (3,5,6) (0,7) (0,2,4,5,6,7) (1,2,3,4,5,6,7) (3,4,5,6,7) {27,8,21,31,171,42,40,185}
|
||||
[####] (1,2) (1,3) (0,1,2,3) {13,40,21,32}
|
||||
[#.#.] (3) (0,2) (0) (0,3) (0,1) (1,3) {51,6,18,31}
|
||||
[#.#.####..] (0,2,3,4,9) (1,5,9) (0,2,4,6) (3,5) (0,1,3,7,8,9) (2,5,6) (1,3,4,5,6,8,9) (2,3,7,8) (0,1,4,6,7,8) {48,39,41,65,53,38,40,22,40,54}
|
||||
[.#...##] (0,2,6) (0,1,2,4,5) (0,3,4,6) (2,3,4,5,6) (1,2,3,4,5) (2,3,4,6) (1,5,6) {188,50,227,45,61,54,210}
|
||||
[.#.#] (1,3) (2,3) (0,2) (0,3) (1) {22,26,21,16}
|
||||
[#...##.#.] (0,1,4,8) (1,2,5,6,7) (0,3,4,5,6,8) (1,2,3,7,8) (0,1,2,3,4,5,6,7) (0,6,7,8) (0,1,2,3,4) (1,3,4,5,6,7,8) (4,5,6,8) {42,28,19,20,28,8,25,25,34}
|
||||
[....#..#] (1,2,4,6) (1,2,3,5,6,7) (1,3) (0,1,3,4,5,6) (0,2,4,7) (1,2,4,5) (0,1,3,7) (0,1,2,3,4,5,6) (4,5,6,7) {28,193,172,188,18,168,169,174}
|
||||
[#..#.##] (0,1,2,3,6) (1,2,4) (3,4,6) (0,1,2,4,5,6) (1,2,5) (0,1,5) (0,1,4,5) (1,2,3,4,6) (0,1,2,3,5,6) {23,44,32,31,49,25,42}
|
||||
[#...#...#.] (0,1,3,5,7,8) (0,2,5,6,7,9) (0,1,3,6,7,9) (0,1,2,8) (0,4,8) (1,2,3,5,6) (0,1,2,4,5,6) (6,7,8) (2,9) (0,1,2,3,4,5,9) (7,9) {31,34,22,33,4,20,37,40,5,42}
|
||||
[#.#.#.#.] (0,1,5,6,7) (0,5) (0,2,4,5,6,7) (0,2,6,7) (1,2,7) (0,5,6) (0,1,2,3,4,5) (3,4,5,7) {74,43,50,18,36,73,63,65}
|
||||
[#..###..#.] (0,1,5,8) (2,3,4,5,7) (0,4,6,9) (7) (0,3,4,7,8,9) (0,2,3,4,9) (0,2,4,5,6,7,8,9) (3,4) (0,1,3,5,6,7,8,9) {41,11,23,37,40,25,21,50,26,39}
|
||||
[..#...#..] (1,2,4,5) (2,3,4,5,6,8) (4,8) (0,1,2,4,5,6,7,8) (6,7,8) (0,3,7) (1,2,4,5,6,7,8) (2,6,7,8) (1,2,3,4,5,6,8) (0,1,4,5,7,8) {20,23,31,18,37,23,42,62,58}
|
||||
[.#..##] (0,2,4,5) (0,5) (1,3,5) (2,4,5) (1,2,5) (0,1,4) (1,2,3,4) (1,2,4,5) {28,173,163,15,156,176}
|
||||
[..##.#.] (3,5) (1,6) (1,4,5) (2,3,5) (0,1,2,4,5) (0,3,4,5,6) (0,1,6) (0,2,3,4,6) {192,198,29,36,34,55,180}
|
||||
[.#...] (0,2,3,4) (3) (2,4) (2,3,4) (0,1,3) {20,5,23,39,23}
|
||||
[.###.#.#.] (0,1,2,4,5,6,7) (0,1,5,6,8) (3,5,7,8) (1,2,4,8) (0,1,5,8) (2,3,4,7) (3,4,5,6,8) (0,1,2,3,4,6,7,8) {33,46,30,38,48,61,34,28,67}
|
||||
[#.#.] (0,2) (0,1,3) {20,15,5,15}
|
||||
[##.#] (1) (0,1) (0,2,3) (0,2) (1,3) (0) {175,26,160,156}
|
||||
[#.#...] (0,1,2,5) (0,1,2,4,5) (1,3,4) (2,5) (0,1,2,3) (1) (1,4) {32,64,38,23,33,27}
|
||||
[##..###] (0,1,2,4,5,6) (0,4,6) (0,1,2,3,4) (3,5) (0,2,3,4,5) (1,5,6) (1,6) {38,43,36,32,38,58,40}
|
||||
[#...#...#.] (1,4,6,8,9) (0,1,2,3,8,9) (4,7,8) (1,2,3,5,7) (0,1,2,4,6,7,8) (0,4,6,9) (1,5,8) (1,2,3,5,6,7,8) (0,1,2,3,4,5,8,9) (0,1,2,3,4,5,7,8,9) (1,2,3,5,6,7,8,9) (1,3,8,9) {222,258,228,230,246,216,68,67,272,243}
|
||||
[.#.#] (1,3) (0,2) {0,181,0,181}
|
||||
[#...#..] (0,1,3,5) (0,2,3,4) (1,2,3,4,5,6) (1,3,5,6) (0,2,3,6) {34,20,19,39,19,20,5}
|
||||
[..##..#] (2,3,6) (4,5) (0,2,4,5) (0,1,2,3,5) (0,6) (0,1,3,4) (1,2,3,5) (0,1,3,5) (1,5,6) {63,81,46,70,29,86,31}
|
||||
[#.##] (1,2,3) (0,2,3) {8,11,19,19}
|
||||
[..#.#.] (0,1) (0,2,4,5) (2,4) (0,1,2,3) (1,2) {33,34,47,7,20,19}
|
||||
[##...####.] (0,6,8) (1,3,4,5,6,8,9) (0,1,2,3,4,5,7,8,9) (1,5,7) (2,5,7) (1,2,4,5,6,7,8) (6,7,8,9) (3,4,6,8) {19,41,30,162,166,51,157,39,173,36}
|
||||
[...##.] (0,3,5) (0,1,3,5) (0,2) (5) (0,2,3,4,5) (3) (0,1,2,4,5) (3,4,5) {60,7,37,242,24,49}
|
||||
[#..#.###.] (0,3,5,6,7) (0,1,2,3,5,7,8) (4,5) (0,1,4,6,7,8) (3,5,7) (0,1,2,6) (0,2,3,4,5,8) {36,26,22,20,25,31,22,24,23}
|
||||
[.....#..##] (0,1,2,3,4,7,8,9) (4,5,7,9) (1,2,3,5,6,7,8,9) (0,2,6) (1,4,6,9) (0,7) (1,2,5,6,8,9) (1,2,4,8) (2,3,4,7,8) (0,1,3,5,7,8) (0,1,2,3,5,7,8,9) (0,1,2,3,4,5,6,7,8) (1,5,6,7,8,9) {61,127,89,74,48,100,78,106,123,85}
|
||||
[#...#] (2,3,4) (1,4) (0,2,3) (0,4) {22,4,37,37,25}
|
||||
[##.#.####.] (1,3,4,7,8) (0,1,2,3,5,6,7,9) (0,3,5) (1,2,3,4,7) (1,5) (3,4) (1,3,4,8,9) (1,5,6,9) (0,1,3,4,5,6,7) (2,7,8) (0,2,5,7) {45,68,47,75,45,72,28,59,19,25}
|
||||
[.####] (1,2,3,4) (0,1,2,3,4) (2,4) {19,19,28,19,28}
|
||||
[#.##.#] (0,1,2,3) (5) (1,3,4,5) (0,3,5) (0,2,3,5) (2,3,4,5) {25,8,25,45,20,50}
|
||||
[..###] (3,4) (0,3) (0,2,3) (0,2,4) (0,1,2,4) (2,3,4) {44,20,49,54,54}
|
||||
[.##.#] (0,3) (1,2,4) (0,1,2,3) (1,2,3) (4) (0,2,4) (0,1,3) {49,57,40,64,199}
|
||||
[##.#..#..#] (3,6,8) (2,4,9) (1,2,3,4,5,6,7,8,9) (0,4,8) (1,2,4,5,6) (2,4,7,8) (1,3,4,6,8,9) (0,2,3,5,7,8,9) (1,2,4,6,7) (0,4,6,9) (6) (0,2,3,4,5,9) (0,6,7,8) {35,38,57,25,67,35,54,35,28,30}
|
||||
[##...#] (0,1,5) (0,1,3,5) (0,2,3,5) (1,3,5) (1,2,3,4) (2,4) {31,44,36,36,25,50}
|
||||
[..#.#..] (0,1,2,3,5) (1,3,4,5) (0,2,3,5,6) (0,1,2,6) (2,3,4,5,6) {16,19,36,41,25,41,22}
|
||||
[#..##] (2,4) (0,2,3) (0,1,4) {6,5,10,1,14}
|
||||
[##..###] (1,3,4,5) (3,4) (3,6) (0,1,2,3,4,6) (0,1,2,4,5) (0,2,4) (0,1,3,4,5) {36,43,28,49,53,28,24}
|
||||
[#.###] (0,3) (1,3) (0,1,2) (0,3,4) (0,2,3) {37,25,18,32,3}
|
||||
[.###.] (0,1,2) (0,1,4) (0,3) {25,11,2,14,9}
|
||||
[..##..] (0,3,4) (0,1,5) (0,1,2,5) (2,5) (0,1,3) (0,3,4,5) {55,30,20,45,25,43}
|
||||
[.##.#...] (3,4) (1,2,3) (0,3,4,6,7) (0,3,6,7) (0,1,4,6) (0,1,3) (0,2,3,4,5,6) {42,38,14,41,30,1,33,16}
|
||||
[#.#....] (0,3,5,6) (4,6) (0,1,3,5) (0,1,3,4,6) (0,2,3,5) (2,3,4,5) (4,5,6) {60,30,201,241,223,230,52}
|
||||
[...#..####] (0,1,3,6,7,9) (1,2,5,6,9) (5,6,8) (3,6,7) (2,5,6,7,9) (0,1,2,3,4,5,6,9) (1,3,4,6,8,9) (0,1,2,4,5,6,7,9) (1,4,6,9) (2,3,5,6,7,8) (0,2,3,6) (3,5,6,8) {59,89,84,93,59,86,149,79,35,97}
|
||||
[..#####.] (0,2,3,4,5,7) (2,3,4,5,6) (1,3,4,5,7) (0,1,2,5,6,7) (4,5,6) (0,6,7) (0,1,4,5,7) {34,19,26,33,40,44,43,45}
|
||||
[..#.] (0,1,3) (1,2) (2,3) (0,2) (1,3) {28,195,198,23}
|
||||
[.####..] (2,4) (3,5) (0,2,5,6) (0,3,4,5,6) (1) (1,2,3,4,5) {26,12,19,24,25,34,26}
|
||||
[##..#.#..] (2,4,7) (1,2,3,4,6) (3,8) (0,4,5,6,7,8) (2,4,8) (0,1,2,3,4,6,8) (4,5,8) (1,2) (0,2,5,7) {13,22,53,17,55,7,18,13,38}
|
||||
[.###.##] (0,4,5) (0,2,3,4,5) (2,5) (1,2,3,4,5,6) (0,1,2,4,6) (1,2,4,6) (0,1,4,5,6) (0,1,2,6) (2,4) {56,38,82,8,72,50,38}
|
||||
[..#.###] (0,1,2,3,4,6) (1,2) (0,1,2,6) (0,1,3,4,5) (1,3,4,6) (0,2,3) {47,57,46,46,31,12,34}
|
||||
[.....#] (0,4) (0,2,4,5) (1,4,5) (1,3,5) (0,2,3,4) (4,5) (1,4) {13,43,13,29,54,58}
|
||||
[.#...] (0,2,3,4) (3,4) (1,4) (1,2,3,4) (1,3,4) (1,2) {18,62,45,53,68}
|
||||
[#.#.#.##.] (0,1,4,5,7) (0,2,3,5,6,7,8) (0,3,5,8) (2,3) (0,2,3,4,5,6,7,8) (0,1,4,5,6,8) (0,1,2,3,4,5,6) (0,1,2,3,5,6) (0,1,5,6,8) (0,1,2,3,5,6,7,8) (2,3,4,5,8) {88,62,55,67,42,90,69,24,55}
|
||||
[###.] (1,2,3) (0,1,2) {10,29,29,19}
|
||||
[#.##....] (0,3,4,5,6,7) (0,1,2,4) (1,6,7) (0,2,5,6,7) (0,1,3,6,7) (1,2,4,6,7) (3,4,7) (3,4,5,7) {36,37,20,30,26,15,41,54}
|
||||
[...###...#] (0,1,3,4,5,6,7,8,9) (3,7,8) (1,2,3,5,6,7,9) (0,2) (0,2,4,5,7,8,9) (1,4,6,8,9) (0,2,3,4,5,6,9) (0,1,2,9) (1,8,9) {50,20,46,33,37,34,30,29,33,44}
|
||||
[#.###...] (0,1,2,6,7) (0,3) (0,1,3,4,6) (4,6,7) (1,2,6) (1,5) (2,4) {149,152,18,146,165,1,171,23}
|
||||
[.#...##] (0,1,3) (0,2,3,4,5,6) (0,4,5) (4) (0,2,3,4,5) (2,5,6) (1,5,6) (0,1,2,4,6) {55,42,54,39,45,64,55}
|
||||
[##.######] (1,2,5,6,7) (0,1,2,6,8) (2,4) (1,2,3,5,6) (0,1,2,3,4,5,7) (0,2,3,5,6,7,8) (0,3,8) (2,3,7) {18,31,54,28,24,33,20,43,5}
|
||||
[..#..#..] (1,2,3,4,6,7) (3,5) (0,2,3,6) (2,5) (3,4,5,6,7) (0,2,6) {20,10,42,38,16,36,36,16}
|
||||
[####] (0,1,3) (1,2,3) (0,1,2) (0,1) (1,2) (1,3) {22,46,14,23}
|
||||
[#.#..###.] (2,3,4,8) (0,1,4,5,8) (0,1,3,4,5,6,7,8) (1,2,3,4,8) (0,4,5,8) (0,2,5,7) (0,2,5,6) (5,6,7,8) {49,39,56,51,61,201,182,178,213}
|
||||
[#..####.] (0,1) (0,4,5,6,7) (2,3,5,6) (2,3,4,6,7) (3,6) (1,2,4,5,6,7) (0,1,3,4,5,6,7) (0,3,4,5,6) (1,2,7) (0,1,2,4,5,6) {55,47,43,70,72,72,97,41}
|
||||
[#.##..###] (0,3,5,6,7,8) (0,1,2,3,4,5,8) (0,1,4,6,7) (1,5,6,7,8) (2,4,6,8) (0,3,4,7) (0,6,7) {45,56,24,27,47,40,42,45,44}
|
||||
[...##..#] (0,3,4,5,6,7) (0,5,6) (0,1,3,5,6,7) (0,2,4,5,6,7) (1,2,3,4,5,7) (0,1,2,3,5,6) {45,15,14,23,15,46,45,22}
|
||||
[####.] (0,3,4) (0,4) (0,1,3,4) (3) (2,4) (1,3,4) (0,3) {41,29,18,54,67}
|
||||
[#####.##] (0,2,3,4,5,6) (3,7) (0,5,6,7) (0,1,2,5,7) (1,3,6,7) (0,3,4,5,6) (0,1,2,4,6,7) (0,1,4,5) (1,2,3,4,6) {228,224,48,57,234,212,84,42}
|
||||
[#.#.] (0,2,3) (0,2) (0,1) (2) (1,3) {24,1,199,14}
|
||||
[#...##.#..] (4,6) (0,1,2,3,6,7,8,9) (1,2,3,4,6,8,9) (0,2,4,5,6,7) (1,2,4,7,8) (0,1) (9) (2,3,7) (0,1,3,4,8,9) (0,4,5,6) (0,1,3,4,6,7,8) (3,5,7,8) {56,45,47,209,70,207,65,233,217,16}
|
||||
[......#.] (0,1,3,6) (2) (0) (1,3,4,5,6) (0,3) (2,3,4,6,7) (0,1,4,5,7) (0,2,3,4,7) (0,1,2,4,5,7) (0,5,7) {60,41,52,69,65,33,40,49}
|
||||
[.#####] (1,3) (1,4) (1,4,5) (0,1,5) (2,4,5) {2,18,20,1,35,25}
|
||||
[#..#....#.] (0,3,7,8,9) (1,8,9) (2,3,4,5) (0,1,3,5,6,7,8) (1,2,3,4,6,7,9) (2,7) (3,4) (0,2,4,5,7,8) {33,21,12,48,27,26,20,36,34,14}
|
||||
[##..###.] (1,2,3,5) (0,1,2,3,5,7) (1,3,4,5,7) (0,1,5) (1,4,5,6) (2,5) (0,2,3,4,6,7) (0,3,6,7) {39,43,34,47,31,62,39,42}
|
||||
[#.#.] (0,2) (0,2,3) (1,3) {23,18,23,28}
|
||||
[#.#.####.#] (0,1,4,6) (1,4,7,8,9) (6,7) (1,3,5,6,7,8) (0,1,2) (0,2,4,6,9) (0,2,3,7) (1,3,7) (0,1,2,3,5,7,8) (2,3) {39,46,53,50,30,17,54,52,23,26}
|
||||
[#..#.#.#.] (1,2,4,5,6,7,8) (0,2,3,4,6,7,8) (0,2,3,4,7,8) (0,6) (0,1,4,5,6,7) (1,2,3,6,7,8) (2,3,5,7,8) {159,43,190,170,179,53,60,205,190}
|
||||
[##....] (0,2,3,5) (2,3,4) (0,4) (1,4) (0,1,2,5) (1,3,5) (0,5) {61,45,24,19,33,55}
|
||||
[##..#.#.] (0,1,2,3,4,5) (0,1,2,3,4,7) (0,1,2,5,6) (0,1,2,3,4,5,6,7) (1,2) (1,5,6) (0,3) {49,56,48,34,20,33,25,12}
|
||||
[...##.] (2,4) (1,3,4,5) (0,2,4,5) (2) (1) (2,3) (0,4,5) {18,12,48,23,25,22}
|
||||
[..#..] (0,2,4) (0,1,3) (0,4) (0,1,2,3) {223,29,196,29,194}
|
||||
[#.##...] (0,1,2,3) (1,5) (5) (4,5,6) (1,2,3,5) (0,2) (0,1,2,3,5,6) (1,2,5,6) (1,2,4,5,6) {42,69,65,34,23,75,57}
|
||||
[#.##.] (1,4) (0,1,2,4) (0,2,3) (0,1,4) {34,24,26,10,24}
|
||||
[#.#..#] (0,1,2,5) (0,2,4) (0,1,3,4,5) (0,1,3) {29,17,17,12,21,14}
|
||||
[.#..###..] (6,7) (2,4,8) (1,2,3,4,5) (0,1,3,4) (2,3,6,7,8) (0,1,7) (6) (2,4,5,6,7) (0,7) (0,2,5,7) (1,2,4,5,7,8) {39,45,62,38,64,27,40,66,55}
|
||||
[#.#.##] (0,4,5) (3,4) (2,3,4) (0,1,4,5) {37,20,155,155,192,37}
|
||||
[.##.##] (0,1,2,3) (0,1,2,4) (1,2,3,5) (2,3) {134,145,153,22,131,11}
|
||||
[.#.#] (0,2,3) (1,3) (2,3) {20,164,33,197}
|
||||
200
internal/data/2025/DayThree/input.txt
Normal file
200
internal/data/2025/DayThree/input.txt
Normal file
@@ -0,0 +1,200 @@
|
||||
2215452689925244273244333436189317446384838478525478824435233342352236255624326767355438753493222423
|
||||
1222232323222232132222323221226222225212221213232122232311152232223212123622111212223162322221323211
|
||||
3786645737446363554463656544667372864465545434545435744345766553343446943531537627746253556233634463
|
||||
8453332352565142143524531446335443437325325152243234623554533532314513854524534532534224242344434525
|
||||
3533243449264427643542468452244718248315345733634133352136441275626213553347866334222454323754335453
|
||||
5535625542655597356352273256244443153325356634941773484673334456353334423458343574664633345343665513
|
||||
2252332222532292346231412134324235332443333323223313377333323737314334332224532223813332224315253334
|
||||
6122221212223222221222221122232243223216125222134222113211222222222223423221222333331212121221212222
|
||||
3373117222222512252222213221487225222222122214221232724313232124722214335222282233236222232242227374
|
||||
4324221311332133124311141233224134334423134124444233221233312314231241241143121423121121431142256789
|
||||
2722832232823132312232242222312311332223312432122131823122312222222421622221323221321222222523323232
|
||||
2231133421122122223222222212222113131222325222122222322212212122222222212321322241522242222221115122
|
||||
4423313224213441432454432222125442433411323443323133284443431324633442334622623233642434248325321423
|
||||
4125312414443568333545464313544326176742543256235346446552356366542153744336443643522322645254554644
|
||||
3644334363342344567643443444444337444344445243654544444365418444443444554523654452443346544244264644
|
||||
5323444342233135324221242454223642343236246226342152225323242212434243232333142123914226712323424443
|
||||
6639379995398867788897889288988749385667849837673775358695799893677978593975529534843835737869638469
|
||||
3236752433626656333544544555126734453323343658344256258555334455342244266243325556734323635333214248
|
||||
4351655754585521442543947656672256644546555474465433554962535585454738657555244553444643564455354452
|
||||
2237222225142212451322332222313221222212225221222422211222222722322222242271214331231225222222223223
|
||||
2834226834525774934433434225284665362232524692858947373345337344135638933531467333732323441653933392
|
||||
5547365555688654773656643376555665966753267761765346664654556756454675653644573276576656677465466463
|
||||
6273322623671457517623463322243246837463253252345372646454348235631422283632253433222263367533365247
|
||||
3225533544429667786914823542454241235224694587356724335421246656612452243836523367132455748296656375
|
||||
1235212235252334235645542554324336453259222442425243442423325426222264223454235232434222732322373554
|
||||
5644452554444442344444424444353274364744434532545757444734343347544473446442334433445375345447545435
|
||||
8999658566789898968985984977945797957698566998575976788977555898595999678878896598558588879888579896
|
||||
7673764525764117141444537734457367533754724553517727761354114366572756664372565575113736665611522589
|
||||
4567555557558775667746566745765545556579756615865564655547695665475466764657455294936646645557796555
|
||||
6242222235121555242223852114242372143458434412422523112222413312522242525223224321221252224267142275
|
||||
3526223262424234223142334154422313233224241422322432324457133214264521253314474222232111422152244314
|
||||
4534312358531653444435326421254565555465423365354453543523536263445565534455584255374543435362545335
|
||||
3825535635733372332522823873676373423922224632436776253233323454953456442636732266264262616444336336
|
||||
5353444554254525334214351333215441351234241244213121132131111335525432432545215325155351333115536789
|
||||
2232233243212223242122232423422113222124312331312332433443224222221233226431312241222333334222322433
|
||||
3454645562342347355436354644554324536534654344455463434663434643375144443244653554534444443632264525
|
||||
6444254352145644483452712344344242473255424853441343154352436244265832452435433523335733574435377432
|
||||
3132312235541541525421141124122133422222211321132415273342244222223322121332222335232251222321222322
|
||||
3545235354434834445435443449444556554448644644554455445555434484434454443565463444444443344545553514
|
||||
4443544544454556544334342545455335444475164454554444635454434587684554654654254453344537345246543335
|
||||
3222223236464122221664352262593664263356232425432152232551566222241725266234335212235116173422332146
|
||||
8154775772554636646858766338544657562185866455861787725652348486767447777458666348356666564766855855
|
||||
1221222222412312213329222232231222313222225832222223212633222212242332222322221222523223223627226212
|
||||
2222621222122231222212221222216212222224122122221273422521121222254255163213221224222222542212223224
|
||||
3444434584135753465934134454468646644634442644124343244465631544464373363183345356351464634526446655
|
||||
7535235444435124425134323341522455654447423246149234342454321243444424254475444424444256284255864264
|
||||
3131313322533347523573323445533331735635343235135323336143723343224445344333323633634335333535356133
|
||||
9864544535884858839444264443453868683432464413666367475676283377453374427472664226448645524563658746
|
||||
2344334543444343473433354533445255342453454544434543344423445494434334334244342443332233444324233334
|
||||
2232152322245422563233222133262421322232147523582212222382243667315326412132225136312244182233222421
|
||||
2123254241324122223222522322321153315223225232224224252414315222161333615743522345322124233123334232
|
||||
6543555544545243244215456352254534155423335323523329232432543533435135436283144925561434335423442855
|
||||
3233234434333374432343229743323334333293333233334233323332332133433333333323542323323435333333322333
|
||||
3465684536348436622676875743446453754523585874478737727444474335854637375237654363638248348394844556
|
||||
4454634436745226466443443547374435255464644435453736564742648446533347364374743474472452345424444343
|
||||
8933656355766372657646393747397553984476238556774637844786685554555467468673679656657625666666977846
|
||||
2333632233554124665936524253474446425624625433364725536353342552734233262355365435653413364336524653
|
||||
2222222312212122322222221211522312131222322122623211332278223322212325522342315233222332213721141221
|
||||
1181298225622722112252222117234262422232221211122423762242722826874212221221225132312512231221413822
|
||||
2321232222323212223322646123213212333223252324632333332222222232331135232232352237222222132214344322
|
||||
1221322122552522127332262412222222222223722163125212282122622236813222272276282727221132227122221228
|
||||
5223431413442256232434332146142223345321523733223235542523322245322422331522221362325123221313244232
|
||||
3432342453333434433312322343332342314333342232534333333144143133333324323343413333344332433322213363
|
||||
3443454243553355422634953443424654364624344243453332534233333343238365443645241372433324332332533332
|
||||
4321143226313233531332344322244253232242332243223123124132333223242223424234224342442423323123222234
|
||||
2565554455555455565555575555545555555555343655656664655955555524575455445455536455556454555555555535
|
||||
2611557322542172125114222232122124162122122742262382212232121221322342722222222332332225122315333125
|
||||
2332323522212212332222433231213343123312333222162121331332423122233282313321222332293222232313842232
|
||||
2835534262526454435243425433472642444444655255455355574643325724455636454555425524564765462542276435
|
||||
4635364554333454582794449233243545437574434533335433853233342238272466345445537345237554444247354333
|
||||
4333426431534431243344454563772374252343585223522353233433348353263842323433453427247322233435454137
|
||||
1222132232212222323332222313222422222231521322232821214212222323222226232323222221321232122222222233
|
||||
2623232214342242425243213161244233232426313133233434233223621343334414224462316424454253131342226422
|
||||
9666376743999796547977575657648753956766679456576796755475577565597557567666747856576737577687465656
|
||||
3221323512251221222233113321272241223213122233321222533324123232222231242422221322233263232222241135
|
||||
4329444344437333432323234383342233343545443434334337552336563133435332233343155355345454345534333328
|
||||
4322122245342322235322932142422222222222135272342623144221222263422224343242438122446253145333222311
|
||||
5111411242372512222222421222235421521222124227523422232323222224542432262322255224232224222421624222
|
||||
3434645343645334437732534134763436836633433344624613342315725323543833324453447244634344443243262433
|
||||
2352125121414325322313332133522112225243242453311534432225422332334432322335224313323123262131431268
|
||||
1325411226243322486221532343122531543532255252442433524212542244261525422422125513522424524225352414
|
||||
2212322233332213512212133221122222213222223122122222131332222338224223422222311234422132323322232231
|
||||
4897333563333234432633355484153546233136553473624355563355943643465324342137488327436345332534932423
|
||||
1221459444444636582465956235642243223384551562622244642455225447416224482347546234532454253662125524
|
||||
2224252242913642222223234142242262234245262542645321344129112242132433232615524865623262243237414254
|
||||
4333433343124243433223433254254363823363343133384344232243233743443345244616243424345332423422453134
|
||||
5223272522231322222235222323722682522626222432751224522532272212433232812215388532222682524324672322
|
||||
4322313351223222312434332421313331422431223322212222211512232121521472723232323353222222233243253223
|
||||
3533452432222333331253213313221233233313531221331223332334432233313333323332523241433332532333322333
|
||||
2667548542533647947376447456534253332366634443577595436763376955332447656464543374437474342363234783
|
||||
5783362525339762394563884413365533775953756762777362336456335867357397225325253535736523557853521479
|
||||
4342342532442342313324343343533324533234334243433243343333324232443433313343442324223324333332333343
|
||||
4545553665353657625654244435735362656445955544446854442544374343695462575455553546456456264453355336
|
||||
2236823222375633551232263326445312642331321533836332732422263284531332232263523728222243233337251235
|
||||
4434225232343323322345443342342324235233532234323344323341333423344338344235443333134244234432133353
|
||||
3535427435662254455763534552565243466554535538587536855524353824445332321243363553424357485556425455
|
||||
3243533142324243343342423326453232333314445233531243365258335434213733324435252523223332433323435441
|
||||
2333332323213332533682232333223123222452423233343422243414451332243322132132432222323334252233523226
|
||||
2352212622323422223646412352333663366434244523322214314225214252523333314444272532353325651432222212
|
||||
4224412213254531322212684336452464532314422242622247232211232113324232353524242242244412422432224332
|
||||
4141324254125123524223333233432513333252322142112332133315222123322323335321353332322335651354323233
|
||||
2433333321223142132253233212223262322562132322224393233242283322353562332233122313228322153336122323
|
||||
3363323345423248353333332442633333332232432363353741452334233342635342455343223344433333533334355333
|
||||
2522332243423524523231473333542353333333313535543333425333232333333734234522337335353443353134244341
|
||||
6754223927727182758649563236142259682732236226357353842724527382266434622326472642328822522483667772
|
||||
4325343252433432534455233455353233733235455434334245253353535362353354343443333335523343543222433334
|
||||
3247123342234213252231234322242223222213213842322322242321133543322321322333332241223211122512334233
|
||||
4221242932312112274233441256823412229862272232222432325623349331486322534236311328228221222226934353
|
||||
2712212212333273212432213222222222232131231221825222222332231222347241212223233331241122223223518232
|
||||
3222243222122323122314221233331232232323232322222232221324222122223222122242221412212233232222223232
|
||||
2237344714333334236643423332423443575533235233233824353343633334523444344844944333333333335343233443
|
||||
2345335322223323232331133334612334422122522123222322223242222223432423323323322343323442131533363462
|
||||
2212222222423232232212111112212125224222222222121321221122213322212322223122223312422122222214512122
|
||||
4322212414121425315331434443432324322222142433233232122222323351222362471222333253112223422223144154
|
||||
2222132232422222122222133223123222221222132222332216322322262321132226221322222312211422221322233322
|
||||
6544496363544536655347566343366445555553635355454326644636557433423664464346568943664659453574526365
|
||||
2225224522242227222222222226222228225261122121426222212222242423224224224212233153122223546222216222
|
||||
1122512224334223352842323222247124123444121428231422237433131433561222572235251332133243635444654452
|
||||
1223243424443545212242425752321235232222418121221324222122244535223632321142372523414222122113122221
|
||||
5423521472243222233282612211443224357222742254442233522322422234644524324421626372112123214942221717
|
||||
5243133224735522212322225222122421152383252222322434232518421421422224222633236423112322234225322228
|
||||
5352412344533435553635153222742223426726351253437235513461245342765482532473282334337657223335254572
|
||||
5443337345554244344483533346125543555335416345524846653564434632452432544342344545545322523444444467
|
||||
3343333423333322233433434423133334373243523732314126323332224236224224772332236323223331233223333432
|
||||
4443246455466628754322175624332255352644542355375633425435344633963424365476464254738652659375635433
|
||||
2222321822222123212123223222223243322214223222232212312222222222211341222222323211223322262223323432
|
||||
1242522225241242144243333222225322222232222224232223232223241323342322423311111242333231541323122312
|
||||
2322213371242423221143321223422422423321124212223222141233212622221312222132232232212241233232134234
|
||||
3133333422333333333233432643233341322343333512326322351224365762341423332413222326524625532253234433
|
||||
3343433233433222414332332424324323444633444324243342443113234434233443535444243334433332342324423633
|
||||
5554457453542935751785345354748453843767685229732251456553855682427655945553359156263956756654965957
|
||||
3634422353633333364333838665245354343593124485344363693433363643327367844633344273137732444334236443
|
||||
7883345464543164533522413783327362422575552222566662274325345463353126237775878643633522155357245353
|
||||
5367524233323333273641376325222633833513235543354334596334135335333335714383633529832313916528618443
|
||||
2222112121211224522222221211622222231225412223222222235222223512722211231623226212212226122222522112
|
||||
2292221222222222222222222222422111622112142222122322211222222212122222222222812122212322222322122222
|
||||
2343644354332242544335444243235435322344341544265423547643343442433433415542349346325554244333224752
|
||||
1342626272364794241632462836364432252262522241286223332413622442466422517221226256243232457113523386
|
||||
4254356575547763246443254654367844361545533435377655464857245525664645654786446455436745664443664465
|
||||
8877897263668879437651755889888787888866998987874696636775868588184988732871686767768888286952377878
|
||||
4443643928243353359443435344857573484452282345235292344275125734343286335554432421454244538326327345
|
||||
3343293359544353533794535325554345853783435834333355425443554738335824983324733443423543652956494534
|
||||
4487434445435354424344262454446344342443464334341124344442444224153422242144245442344444444264442424
|
||||
4852231451722225222152422222211724232413221162422211412323528132322531322222212332453292523122212222
|
||||
2533125343443433331332213222254415445232135222335632333316516422353424124362374535242333352221235243
|
||||
1213333123221232133423322145214133222222322226332323342242122333223244323229332413371342222427355322
|
||||
2223432242232226222222223233264333133233211221233332223322521222233221232529421223222234262323311331
|
||||
4333251434214664354221552221322252343443351455445251662345456445645454345241255424544544246255343245
|
||||
6543447336822333353734334549663334737733335633933436547274264143373534549252333364733134356363633755
|
||||
2421225323335434443342622284243234333432438234242113332333334222332432822441442333334232341523422433
|
||||
2244122542223238422128322324342256923444424224325263734432452623564127342242643432424572223244356732
|
||||
2345224549237333932324222335334242245233324253921237223324152312333463342422624243433834322113233372
|
||||
2236326322323139122242822223232334331123532421322242353233223334423333232235241533322211223213252232
|
||||
1423322215223123233332222322222242332212321323232231122522224222423234323232333222122231212321414252
|
||||
2677566548347767364386846141372765763337332238362566163713256568882156338434744825582542117315858459
|
||||
3113342423363622231122322421242227224259232232222231522322134232333332272311333322222633232432323373
|
||||
2222422122222133223623223323135632242432413432332222323223232335524333223321314332714222224351233211
|
||||
4263327583154322543324523434624564135553564125446622222646545433322232532234433636652272242223234232
|
||||
1521215625366133644532245623615562213146211216653153666111154441566211451633632546646313245546124789
|
||||
2222222223232322142233222212122231332223111222283222211225422213222222232242222212252231223322322222
|
||||
2212322222223222222221222115322214234222225222325222212232222322226133231241221322221122321332222221
|
||||
4243224544324433253532226333833321424342236363152364364334423342433453433343334223232348216624824323
|
||||
2242121352221222222222542222233352232322522312213223531342222126223412222532222412434224232213122433
|
||||
3341233422233323323331232232232187329342385233323331273732243133313322322333232323223111213233343221
|
||||
2112212322222322212222322322262222322128122225221222331322211721223213251125232222622222222212232222
|
||||
4256325571555252345473125464248364234834464542332345543653455323215135885235753391455336255245254545
|
||||
4424243555445453553441546755744454544545555133143553954425352853554545564474153646813552251665636444
|
||||
4226234124378254424637323135223139574523552332353333253215325554423224635122321233234838122844256383
|
||||
3343624433333336335634336323333433323332453433333313522334333363333321333243333333333333331333533632
|
||||
5432332433322333261246223314112343332454215423442523214224422442333313624221242212514224334311322422
|
||||
5145333254344357372346344527376323443453558562453346456633522274244363545356345536446524564233454284
|
||||
4222323354147213322372128842432315225245323222124424132466332346342658442326244222123212423122463427
|
||||
5123432273133331422233127732132227273224213165222721122333233343262283213232223434332322313343231233
|
||||
7523972343477361377743956884687575443466739542777453463647373912825463342455373643625785555533268257
|
||||
4213324141342324718322323224222134582626532922312232224711231355247332524212226422892822263225123623
|
||||
1221222133133333213313233423221221222232233323343331234313233236333232332332332353322133234222323322
|
||||
1324222332512532232325532322623344454413222242321444234232332242343422213323343222332344321442224231
|
||||
1151223222162533222342825322433243224223622383232414322521524232268232723631322111224242221275225121
|
||||
2233222423821611241444422334722333356141453136321242233311221221253242122342242723221122122574764322
|
||||
8573255368427233541249342862965464536493678437533637576625889687456637652825457643483176999343198658
|
||||
3244224244424643444229472636623243984414241464325683423334836437283334543623242248744844445444255424
|
||||
4522895222223459222215242224321218938928231422228422322222522291345942435392232845332154532852338761
|
||||
3252332432222223233223232312222232234263331424324244213733245323642222215123232632211152533443123423
|
||||
4314642433623624333624333242262233433323334433222234331344432246333323226233324333254433432444424244
|
||||
4434123323443252336355444433244434856354314442336544424248344344344464148454443245425424424444434543
|
||||
3633644225434233462334334433334334244457453244225434744644357343345334344315442435435336265343352333
|
||||
8511753365365353433545751734565554656442345565435633555555553454455244484375353835449714556575324136
|
||||
1333534633222323212533322633234232122213532344333324532334611133332323322332621571214133333223333232
|
||||
8747857539877346635974765766877575376767844547564476625546978745769777857787855766876866677674885783
|
||||
5954947455377864765587667483737385776764967667567557377687557576775775576747374788787674527477967475
|
||||
2323313232333223232722222211221222212343242221732312323232232332223452252123221332333341222342312331
|
||||
5246523252273423333432545422334224443522222341333424273555446432242222344235842532143342442243235425
|
||||
3332362543334362533336343234532534233532372333332337731132253512237233433432133328442433338322623323
|
||||
2554445353152423523433348333335333634333243454324344334443543343233354334325553534533522353472684334
|
||||
3252332422222212123233222122333352262253112222224222244222222313222223423912332212322232323713223152
|
||||
2229222286292113252332322422222522521114553224422143124257322361232241222422232724144422212212742224
|
||||
2223123222222213252126322422132131223213211223233316234222212222622222222323222231322211262112223224
|
||||
2311233423122622631116321246121221261234224237222542222225222122217132274222324223432222224222522422
|
||||
6634644474551646645574355664475663676736253675576458125356566663552375853445554345666675676853752767
|
||||
5443322233234342223444233322543323223434393253133433243534223622425232323423422334442123542533333224
|
||||
1
internal/data/2025/DayTwo/input.txt
Normal file
1
internal/data/2025/DayTwo/input.txt
Normal file
@@ -0,0 +1 @@
|
||||
197-407,262128-339499,557930-573266,25-57,92856246-93001520,2-12,1919108745-1919268183,48414903-48538379,38342224-38444598,483824-534754,1056-1771,4603696-4688732,75712519-75792205,20124-44038,714164-782292,4429019-4570680,9648251-9913729,6812551522-6812585188,58-134,881574-897488,648613-673853,5261723647-5261785283,60035-128980,9944818-10047126,857821365-857927915,206885-246173,1922-9652,424942-446151,408-1000
|
||||
Reference in New Issue
Block a user