├── day1 ├── .gitignore ├── input │ ├── part1.sample.txt │ ├── part2.sample.txt │ └── part1.txt ├── Cargo.toml ├── Cargo.lock └── src │ └── bin │ ├── part1.rs │ └── part2.rs ├── day2 ├── go.mod ├── part1.example.txt ├── part2.example.txt ├── main.go ├── part1.txt └── part2.txt ├── day7 ├── gradle.properties ├── .idea │ ├── .gitignore │ ├── codeStyles │ │ ├── codeStyleConfig.xml │ │ └── Project.xml │ ├── kotlinc.xml │ ├── vcs.xml │ ├── misc.xml │ └── gradle.xml ├── src │ ├── input │ │ ├── example.txt │ │ └── input.txt │ └── main │ │ └── kotlin │ │ ├── Main.kt │ │ ├── Utils.kt │ │ ├── part1 │ │ └── Part1.kt │ │ └── part2 │ │ └── Part2.kt ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── settings.gradle.kts ├── build.gradle.kts ├── .gitignore ├── gradlew.bat └── gradlew ├── day8 ├── settings.gradle ├── .idea │ ├── .gitignore │ ├── vcs.xml │ ├── misc.xml │ └── gradle.xml ├── src │ ├── input │ │ ├── example2.txt │ │ ├── example.txt │ │ ├── example.part2.txt │ │ └── input.txt │ └── main │ │ └── java │ │ └── com │ │ └── kriticalflare │ │ ├── Main.java │ │ ├── Part1.java │ │ └── Part2.java ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── build.gradle ├── .gitignore ├── gradlew.bat └── gradlew ├── day6 ├── example.txt ├── input.txt ├── part2.bruteforce.py ├── part1.bruteforce.py ├── part2.py └── part1.py ├── day3 ├── example.txt ├── package.json ├── part1.js ├── part2.js └── input.txt ├── day4 ├── example.txt ├── part1.lua ├── part2.lua └── input.txt ├── README.md └── day5 ├── example.txt ├── part1.dart └── input.txt /day1/.gitignore: -------------------------------------------------------------------------------- 1 | /target -------------------------------------------------------------------------------- /day2/go.mod: -------------------------------------------------------------------------------- 1 | module aoc23.day2 2 | 3 | go 1.21.2 4 | -------------------------------------------------------------------------------- /day7/gradle.properties: -------------------------------------------------------------------------------- 1 | kotlin.code.style=official 2 | -------------------------------------------------------------------------------- /day8/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'day8' 2 | 3 | -------------------------------------------------------------------------------- /day6/example.txt: -------------------------------------------------------------------------------- 1 | Time: 7 15 30 2 | Distance: 9 40 200 -------------------------------------------------------------------------------- /day1/input/part1.sample.txt: -------------------------------------------------------------------------------- 1 | 1abc2 2 | pqr3stu8vwx 3 | a1b2c3d4e5f 4 | treb7uchet -------------------------------------------------------------------------------- /day7/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /day8/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /day7/src/input/example.txt: -------------------------------------------------------------------------------- 1 | 32T3K 765 2 | T55J5 684 3 | KK677 28 4 | KTJJT 220 5 | QQQJA 483 -------------------------------------------------------------------------------- /day6/input.txt: -------------------------------------------------------------------------------- 1 | Time: 60 94 78 82 2 | Distance: 475 2138 1015 1650 3 | -------------------------------------------------------------------------------- /day8/src/input/example2.txt: -------------------------------------------------------------------------------- 1 | LLR 2 | 3 | AAA = (BBB, BBB) 4 | BBB = (AAA, ZZZ) 5 | ZZZ = (ZZZ, ZZZ) -------------------------------------------------------------------------------- /day7/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kriticalflare/aoc-23/master/day7/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /day8/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kriticalflare/aoc-23/master/day8/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /day1/input/part2.sample.txt: -------------------------------------------------------------------------------- 1 | two1nine 2 | eightwothree 3 | abcone2threexyz 4 | xtwone3four 5 | 4nineeightseven2 6 | zoneight234 7 | 7pqrstsixteen 8 | twone -------------------------------------------------------------------------------- /day7/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0" 3 | } 4 | rootProject.name = "day7" 5 | 6 | -------------------------------------------------------------------------------- /day3/example.txt: -------------------------------------------------------------------------------- 1 | 467..114.. 2 | ...*...... 3 | ..35..633. 4 | ......#... 5 | 617*...... 6 | .....+.58. 7 | ..592..... 8 | ......755. 9 | ...$.*.... 10 | .664.598.. -------------------------------------------------------------------------------- /day8/src/input/example.txt: -------------------------------------------------------------------------------- 1 | RL 2 | 3 | AAA = (BBB, CCC) 4 | BBB = (DDD, EEE) 5 | CCC = (ZZZ, GGG) 6 | DDD = (DDD, DDD) 7 | EEE = (EEE, EEE) 8 | GGG = (GGG, GGG) 9 | ZZZ = (ZZZ, ZZZ) -------------------------------------------------------------------------------- /day7/.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /day7/.idea/kotlinc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /day8/src/input/example.part2.txt: -------------------------------------------------------------------------------- 1 | LR 2 | 3 | 11A = (11B, XXX) 4 | 11B = (XXX, 11Z) 5 | 11Z = (11B, XXX) 6 | 22A = (22B, XXX) 7 | 22B = (22C, 22C) 8 | 22C = (22Z, 22Z) 9 | 22Z = (22B, 22B) 10 | XXX = (XXX, XXX) -------------------------------------------------------------------------------- /day7/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /day8/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /day3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "day3", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC" 12 | } 13 | -------------------------------------------------------------------------------- /day7/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Dec 09 15:59:04 IST 2023 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /day8/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Dec 09 20:55:33 IST 2023 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /day4/example.txt: -------------------------------------------------------------------------------- 1 | Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 2 | Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 3 | Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 4 | Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 5 | Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 6 | Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Advent of Code Solutions 2023 2 | 3 | ## Table of Contents 4 | 5 | - [Day 1 - Rust](./day1) 6 | - [Day 2 - Golang](./day2) 7 | - [Day 3 - JavaScript](./day3) 8 | - [Day 4 - Lua](./day4) 9 | - [Day 5 - Dart](./day5) 10 | - [Day 6 - Python](./day6) 11 | - [Day 7 - Kotlin](./day7) 12 | - [Day 8 - Java](./day8) 13 | -------------------------------------------------------------------------------- /day1/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "day1" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [[bin]] 7 | name = "part1" 8 | path = "src/bin/part1.rs" 9 | 10 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 11 | 12 | [dependencies] 13 | anyhow = "1.0" 14 | peekmore = "1.3.0" 15 | -------------------------------------------------------------------------------- /day2/part1.example.txt: -------------------------------------------------------------------------------- 1 | Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green 2 | Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue 3 | Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red 4 | Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red 5 | Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green -------------------------------------------------------------------------------- /day2/part2.example.txt: -------------------------------------------------------------------------------- 1 | Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green 2 | Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue 3 | Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red 4 | Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red 5 | Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green -------------------------------------------------------------------------------- /day8/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | } 4 | 5 | group = 'com.kriticalflare' 6 | version = '1.0-SNAPSHOT' 7 | 8 | repositories { 9 | mavenCentral() 10 | } 11 | 12 | dependencies { 13 | testImplementation platform('org.junit:junit-bom:5.9.1') 14 | testImplementation 'org.junit.jupiter:junit-jupiter' 15 | } 16 | 17 | test { 18 | useJUnitPlatform() 19 | } -------------------------------------------------------------------------------- /day7/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /day8/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /day7/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | kotlin("jvm") version "1.9.21" 3 | } 4 | 5 | group = "com.kriticalflare" 6 | version = "1.0-SNAPSHOT" 7 | 8 | repositories { 9 | mavenCentral() 10 | } 11 | 12 | dependencies { 13 | testImplementation("org.jetbrains.kotlin:kotlin-test") 14 | } 15 | 16 | tasks.test { 17 | useJUnitPlatform() 18 | } 19 | kotlin { 20 | jvmToolchain(21) 21 | } -------------------------------------------------------------------------------- /day7/.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /day5/example.txt: -------------------------------------------------------------------------------- 1 | seeds: 79 14 55 13 2 | 3 | seed-to-soil map: 4 | 50 98 2 5 | 52 50 48 6 | 7 | soil-to-fertilizer map: 8 | 0 15 37 9 | 37 52 2 10 | 39 0 15 11 | 12 | fertilizer-to-water map: 13 | 49 53 8 14 | 0 11 42 15 | 42 0 7 16 | 57 7 4 17 | 18 | water-to-light map: 19 | 88 18 7 20 | 18 25 70 21 | 22 | light-to-temperature map: 23 | 45 77 23 24 | 81 45 19 25 | 68 64 13 26 | 27 | temperature-to-humidity map: 28 | 0 69 1 29 | 1 0 69 30 | 31 | humidity-to-location map: 32 | 60 56 37 33 | 56 93 4 -------------------------------------------------------------------------------- /day7/src/main/kotlin/Main.kt: -------------------------------------------------------------------------------- 1 | package com.kriticalflare 2 | 3 | import com.kriticalflare.part1.SolvePart1 4 | import com.kriticalflare.part2.SolvePart2 5 | 6 | //TIP Press twice to open the Search Everywhere dialog and type show whitespaces, 7 | // then press . You can now see whitespace characters in your code. 8 | fun main() { 9 | println("Part1 example ${SolvePart1("example")}") 10 | println("Part1 input ${SolvePart1("input")}") 11 | 12 | println("Part2 example ${SolvePart2("example")}") 13 | println("Part2 input ${SolvePart2("input")}") 14 | } -------------------------------------------------------------------------------- /day7/src/main/kotlin/Utils.kt: -------------------------------------------------------------------------------- 1 | package com.kriticalflare 2 | 3 | import java.io.File 4 | import java.math.BigInteger 5 | import java.security.MessageDigest 6 | 7 | /** 8 | * Reads lines from the given input txt file. 9 | */ 10 | fun readInput(name: String) = File("src/input", "$name.txt").readLines() 11 | 12 | /** 13 | * Read Integers 14 | */ 15 | fun readInt(name: String) = File("src/input", "$name.txt").readLines().map { it.toInt() } 16 | 17 | /** 18 | * Converts string to md5 hash. 19 | */ 20 | fun String.md5(): String = BigInteger(1, MessageDigest.getInstance("MD5").digest(toByteArray())).toString(16) -------------------------------------------------------------------------------- /day7/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 16 | 17 | -------------------------------------------------------------------------------- /day8/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 16 | 17 | -------------------------------------------------------------------------------- /day1/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "anyhow" 7 | version = "1.0.75" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" 10 | 11 | [[package]] 12 | name = "day1" 13 | version = "0.1.0" 14 | dependencies = [ 15 | "anyhow", 16 | "peekmore", 17 | ] 18 | 19 | [[package]] 20 | name = "peekmore" 21 | version = "1.3.0" 22 | source = "registry+https://github.com/rust-lang/crates.io-index" 23 | checksum = "9163e1259760e83d528d1b3171e5100c1767f10c52e1c4d6afad26e63d47d758" 24 | -------------------------------------------------------------------------------- /day7/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | build/ 3 | !gradle/wrapper/gradle-wrapper.jar 4 | !**/src/main/**/build/ 5 | !**/src/test/**/build/ 6 | 7 | ### IntelliJ IDEA ### 8 | .idea/modules.xml 9 | .idea/jarRepositories.xml 10 | .idea/compiler.xml 11 | .idea/libraries/ 12 | *.iws 13 | *.iml 14 | *.ipr 15 | out/ 16 | !**/src/main/**/out/ 17 | !**/src/test/**/out/ 18 | 19 | ### Eclipse ### 20 | .apt_generated 21 | .classpath 22 | .factorypath 23 | .project 24 | .settings 25 | .springBeans 26 | .sts4-cache 27 | bin/ 28 | !**/src/main/**/bin/ 29 | !**/src/test/**/bin/ 30 | 31 | ### NetBeans ### 32 | /nbproject/private/ 33 | /nbbuild/ 34 | /dist/ 35 | /nbdist/ 36 | /.nb-gradle/ 37 | 38 | ### VS Code ### 39 | .vscode/ 40 | 41 | ### Mac OS ### 42 | .DS_Store -------------------------------------------------------------------------------- /day8/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | build/ 3 | !gradle/wrapper/gradle-wrapper.jar 4 | !**/src/main/**/build/ 5 | !**/src/test/**/build/ 6 | 7 | ### IntelliJ IDEA ### 8 | .idea/modules.xml 9 | .idea/jarRepositories.xml 10 | .idea/compiler.xml 11 | .idea/libraries/ 12 | *.iws 13 | *.iml 14 | *.ipr 15 | out/ 16 | !**/src/main/**/out/ 17 | !**/src/test/**/out/ 18 | 19 | ### Eclipse ### 20 | .apt_generated 21 | .classpath 22 | .factorypath 23 | .project 24 | .settings 25 | .springBeans 26 | .sts4-cache 27 | bin/ 28 | !**/src/main/**/bin/ 29 | !**/src/test/**/bin/ 30 | 31 | ### NetBeans ### 32 | /nbproject/private/ 33 | /nbbuild/ 34 | /dist/ 35 | /nbdist/ 36 | /.nb-gradle/ 37 | 38 | ### VS Code ### 39 | .vscode/ 40 | 41 | ### Mac OS ### 42 | .DS_Store -------------------------------------------------------------------------------- /day6/part2.bruteforce.py: -------------------------------------------------------------------------------- 1 | def solve(input_path: str): 2 | with open(input_path, "r") as file: 3 | time_input = file.readline() 4 | time_input = time_input.split(":")[1] 5 | time = int("".join(time_input.split())) 6 | 7 | dist_input = file.readline() 8 | dist_input = dist_input.split(":")[1] 9 | target = int("".join(dist_input.split())) 10 | 11 | total_ways = 0 12 | for time_pressed in range(1, time): 13 | distance = time_pressed * (time - time_pressed) 14 | if distance > target: 15 | total_ways = total_ways + 1 16 | return total_ways 17 | 18 | 19 | print(f"Part2 example {solve('example.txt')}") 20 | 21 | print(f"Part2 {solve('input.txt')}") 22 | -------------------------------------------------------------------------------- /day8/src/main/java/com/kriticalflare/Main.java: -------------------------------------------------------------------------------- 1 | package com.kriticalflare; 2 | 3 | 4 | //TIP To Run code, press or 5 | // click the icon in the gutter. 6 | public class Main { 7 | public static void main(String[] args) { 8 | System.out.printf("Part1 example1 %d\n",Part1.solve("./src/input/example.txt")); 9 | System.out.printf("Part1 example2 %d\n",Part1.solve("./src/input/example2.txt")); 10 | System.out.printf("Part1 input %d\n",Part1.solve("./src/input/input.txt")); 11 | System.out.printf("Part2 example1 %d\n",Part2.solve("./src/input/example.part2.txt")); 12 | System.out.printf("Part2 input %d\n",Part2.solve("./src/input/input.txt")); 13 | } 14 | } -------------------------------------------------------------------------------- /day6/part1.bruteforce.py: -------------------------------------------------------------------------------- 1 | def solve(input_path: str): 2 | with open(input_path, "r") as file: 3 | time_input = file.readline() 4 | time_input = time_input.split(":")[1] 5 | time_input = time_input.split() 6 | times = list(map(lambda time: int(time), time_input)) 7 | 8 | dist_input = file.readline() 9 | dist_input = dist_input.split(":")[1] 10 | dist_input = dist_input.split() 11 | distances = list(map(lambda dist: int(dist), dist_input)) 12 | 13 | total_ways = -1 14 | for idx, target in enumerate(distances): 15 | ways = 0 16 | for time_pressed in range(1, times[idx]): 17 | distance = time_pressed * (times[idx] - time_pressed) 18 | if distance > target: 19 | ways = ways + 1 20 | total_ways = total_ways * ways 21 | return total_ways * -1 22 | 23 | 24 | print(f"Part1 example {solve('example.txt')}") 25 | 26 | print(f"Part1 {solve('input.txt')}") 27 | -------------------------------------------------------------------------------- /day6/part2.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | 4 | def discriminant(a, b, c): 5 | return math.sqrt(math.pow(b, 2) - (4 * a * c)) 6 | 7 | 8 | def find_roots(a, b, c): 9 | discriminant = b**2 - 4 * a * c 10 | 11 | if discriminant > 0: 12 | root1 = (-b + math.sqrt(discriminant)) / (2 * a) 13 | root2 = (-b - math.sqrt(discriminant)) / (2 * a) 14 | return root1, root2 15 | elif discriminant == 0: 16 | root = -b / (2 * a) 17 | return (root,) 18 | else: 19 | real_part = -b / (2 * a) 20 | imag_part = math.sqrt(abs(discriminant)) / (2 * a) 21 | root1 = complex(real_part, imag_part) 22 | root2 = complex(real_part, -imag_part) 23 | return root1, root2 24 | 25 | 26 | def solve(input_path: str): 27 | with open(input_path, "r") as file: 28 | time_input = file.readline() 29 | time_input = time_input.split(":")[1] 30 | time = int("".join(time_input.split())) 31 | 32 | dist_input = file.readline() 33 | dist_input = dist_input.split(":")[1] 34 | target = int("".join(dist_input.split())) 35 | 36 | (lo, hi) = find_roots(1, -1 * time, target) 37 | ways = abs(math.floor(hi) - math.ceil(lo) + 1) 38 | return ways 39 | 40 | 41 | print(f"Part2 example {solve('example.txt')}") 42 | 43 | print(f"Part2 {solve('input.txt')}") 44 | -------------------------------------------------------------------------------- /day1/src/bin/part1.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use std::{ 3 | fs::File, 4 | io::{BufRead, BufReader}, 5 | path::Path, 6 | }; 7 | 8 | fn main() -> Result<()> { 9 | let input_path = Path::new("./input/part1.txt"); 10 | let file = File::open(input_path)?; 11 | 12 | let mut reader = BufReader::new(file); 13 | let mut buffer = String::new(); 14 | 15 | let mut calibration_sum: u32 = 0; 16 | 17 | while let Ok(len) = reader.read_line(&mut buffer) { 18 | if len == 0 { 19 | break; 20 | } 21 | 22 | let mut first = 0; 23 | 24 | for c in buffer.chars() { 25 | match c.to_digit(10) { 26 | Some(digit) => { 27 | first = digit; 28 | break; 29 | } 30 | None => {} 31 | } 32 | } 33 | 34 | let mut second = 0; 35 | 36 | for c in buffer.chars().rev() { 37 | match c.to_digit(10) { 38 | Some(digit) => { 39 | second = digit; 40 | break; 41 | } 42 | None => {} 43 | } 44 | } 45 | 46 | calibration_sum += first * 10; 47 | 48 | calibration_sum += second; 49 | 50 | buffer.clear(); 51 | } 52 | 53 | println!("sum => {calibration_sum}"); 54 | 55 | Ok(()) 56 | } 57 | -------------------------------------------------------------------------------- /day6/part1.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | 4 | def discriminant(a, b, c): 5 | return math.sqrt(math.pow(b, 2) - (4 * a * c)) 6 | 7 | 8 | def find_roots(a, b, c): 9 | discriminant = b**2 - 4 * a * c 10 | 11 | if discriminant > 0: 12 | root1 = (-b + math.sqrt(discriminant)) / (2 * a) 13 | root2 = (-b - math.sqrt(discriminant)) / (2 * a) 14 | return root1, root2 15 | elif discriminant == 0: 16 | root = -b / (2 * a) 17 | return (root,) 18 | else: 19 | real_part = -b / (2 * a) 20 | imag_part = math.sqrt(abs(discriminant)) / (2 * a) 21 | root1 = complex(real_part, imag_part) 22 | root2 = complex(real_part, -imag_part) 23 | return root1, root2 24 | 25 | 26 | def solve(input_path: str): 27 | with open(input_path, "r") as file: 28 | time_input = file.readline() 29 | time_input = time_input.split(":")[1] 30 | time_input = time_input.split() 31 | times = list(map(lambda time: int(time), time_input)) 32 | 33 | dist_input = file.readline() 34 | dist_input = dist_input.split(":")[1] 35 | dist_input = dist_input.split() 36 | distances = list(map(lambda dist: int(dist), dist_input)) 37 | 38 | total_ways = -1 39 | for idx, target in enumerate(distances): 40 | ways = 0 41 | (lo, hi) = find_roots(1, -1 * times[idx], target) 42 | 43 | ways = abs(math.floor(hi) - math.ceil(lo) + 1) 44 | total_ways = total_ways * ways 45 | return total_ways * -1 46 | 47 | 48 | print(f"Part1 example {solve('example.txt')}") 49 | 50 | print(f"Part1 {solve('input.txt')}") 51 | -------------------------------------------------------------------------------- /day4/part1.lua: -------------------------------------------------------------------------------- 1 | local function string_split(inputstr, sep) 2 | if sep == nil then 3 | sep = "%s" 4 | end 5 | local t = {} 6 | for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do 7 | table.insert(t, str) 8 | end 9 | return t 10 | end 11 | 12 | 13 | 14 | local function solve(input_path) 15 | local file, err = io.open(input_path, "r") 16 | if file == nil then 17 | print("error opening file ", err) 18 | return; 19 | end 20 | local total_points = 0 21 | for line in file:lines() do 22 | local points = 0 23 | line = string.gsub(line, "Card%s*([0-9]*)%s*:", "") 24 | local split = string_split(line, "|") 25 | local tickets = split[1] 26 | local winning_tickets = split[2] 27 | 28 | local w_ticks = {} 29 | for w_tick in string.gmatch(winning_tickets, "([^%s*]+)") do 30 | local count = w_ticks[w_tick] 31 | if count ~= nil then 32 | count = count + 1 33 | else 34 | count = 1 35 | end 36 | w_ticks[w_tick] = count 37 | end 38 | 39 | tickets = string_split(tickets, "%s*") 40 | 41 | for _, value in pairs(tickets) do 42 | if w_ticks[value] ~= nil then 43 | if points == 0 then 44 | points = 1 45 | else 46 | points = points * 2 47 | end 48 | end 49 | end 50 | total_points = total_points + points 51 | end 52 | print("answer is ", total_points) 53 | end 54 | 55 | 56 | solve("example.txt") 57 | solve("input.txt") 58 | -------------------------------------------------------------------------------- /day4/part2.lua: -------------------------------------------------------------------------------- 1 | local function string_split(inputstr, sep) 2 | if sep == nil then 3 | sep = "%s" 4 | end 5 | local t = {} 6 | for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do 7 | table.insert(t, str) 8 | end 9 | return t 10 | end 11 | 12 | 13 | 14 | local function solve(input_path) 15 | local file, err = io.open(input_path, "r") 16 | if file == nil then 17 | print("error opening file ", err) 18 | return; 19 | end 20 | local scratch_cards = {} 21 | for i = 1, 208, 1 do 22 | scratch_cards[i] = 1 23 | end 24 | 25 | local card_number = 1 26 | for line in file:lines() do 27 | local matches = 0 28 | line = string.gsub(line, "Card%s*([0-9]*)%s*:", "") 29 | local split = string_split(line, "|") 30 | local tickets = split[1] 31 | local winning_tickets = split[2] 32 | 33 | local w_ticks = {} 34 | for w_tick in string.gmatch(winning_tickets, "([^%s*]+)") do 35 | local count = w_ticks[w_tick] 36 | if count ~= nil then 37 | count = count + 1 38 | else 39 | count = 1 40 | end 41 | w_ticks[w_tick] = count 42 | end 43 | 44 | tickets = string_split(tickets, "%s*") 45 | 46 | for _, value in pairs(tickets) do 47 | if w_ticks[value] ~= nil then 48 | matches = matches + 1 49 | end 50 | end 51 | 52 | for mul = 1, scratch_cards[card_number], 1 do 53 | for inc = 1, matches, 1 do 54 | scratch_cards[card_number + inc] = scratch_cards[card_number + inc] + 1 55 | end 56 | end 57 | 58 | 59 | card_number = card_number + 1 60 | end 61 | local won_cards = 0 62 | for card_idx = 1, card_number - 1, 1 do 63 | local cards = scratch_cards[card_idx] 64 | won_cards = won_cards + cards 65 | end 66 | print("answer is ", won_cards) 67 | end 68 | 69 | 70 | solve("example.txt") 71 | solve("input.txt") 72 | -------------------------------------------------------------------------------- /day3/part1.js: -------------------------------------------------------------------------------- 1 | const fsp = require("fs").promises; 2 | 3 | const solve = async (inputPath) => { 4 | const input = await fsp.readFile(inputPath, "utf-8"); 5 | const partNumbers = []; 6 | let grid = input.split("\n"); 7 | let gridCols = grid[0].length; 8 | let gridRows = grid.length; 9 | for (const [row, line] of grid.entries()) { 10 | const num = []; 11 | let start = -1; 12 | for (let col = 0; col < line.length; col++) { 13 | const char = line[col]; 14 | if (Number.isInteger(parseInt(char))) { 15 | if (num.length == 0) { 16 | start = col; 17 | } 18 | num.push(char); 19 | } else { 20 | if (num.length > 0) { 21 | partNumbers.push({ 22 | number: parseInt(num.join("")), 23 | row, 24 | start, 25 | end: col - 1, 26 | }); 27 | num.length = 0; 28 | start = -1; 29 | } 30 | } 31 | } 32 | 33 | if (num.length > 0) { 34 | partNumbers.push({ 35 | number: parseInt(num.join("")), 36 | row, 37 | start, 38 | end: line.length - 1, 39 | }); 40 | num.length = 0; 41 | start = -1; 42 | } 43 | } 44 | 45 | const enginePartNumbers = []; 46 | 47 | const directions = [ 48 | [-1, -1], // tl 49 | [0, -1], // tt 50 | [1, -1], // tr 51 | [-1, 0], // ml 52 | [1, 0], // mr 53 | [1, 1], // br 54 | [0, 1], // bm 55 | [-1, 1], // bl 56 | ]; 57 | 58 | for (const part of partNumbers) { 59 | let enginePart = false; 60 | for (let i = part.start; i <= part.end; i++) { 61 | for (const [x, y] of directions) { 62 | const cX = i + x; 63 | const cY = part.row + y; 64 | if (cX >= 0 && cX < gridCols && cY >= 0 && cY < gridRows) { 65 | let ele = grid[cY][cX]; 66 | if (Number.isNaN(parseInt(ele)) && ele != ".") { 67 | enginePart = true; 68 | } 69 | } 70 | } 71 | } 72 | if (enginePart) { 73 | enginePartNumbers.push(part.number); 74 | } 75 | } 76 | 77 | const enginePartSum = enginePartNumbers.reduce((acc, curr) => acc + curr, 0); 78 | return enginePartSum; 79 | }; 80 | 81 | const main = async () => { 82 | console.log(await solve("./example.txt")); 83 | console.log(await solve("./input.txt")); 84 | }; 85 | 86 | main(); 87 | -------------------------------------------------------------------------------- /day7/src/main/kotlin/part1/Part1.kt: -------------------------------------------------------------------------------- 1 | package com.kriticalflare.part1 2 | 3 | import com.kriticalflare.readInput 4 | 5 | 6 | val CardTypes: HashMap = hashMapOf( 7 | 'A' to 14, 'K' to 13, 'Q' to 12 , 'J' to 11, 8 | 'T' to 10, '9' to 9, '8' to 8, '7' to 7, 9 | '6' to 6, '5' to 5 , '4' to 4, '3' to 3, '2' to 2 10 | ) 11 | 12 | enum class HandType(val strength: Int) { 13 | FiveOfaKind(strength = 6), // where all five cards have the same label: AAAAA 14 | FourOfaKind(strength = 5), // where four cards have the same label and one card has a different label: AA8AA 15 | FullHouse(strength = 4), // where three cards have the same label, and the remaining two cards share a different label: 23332 16 | ThreeOfaKind(strength = 3), // where three cards have the same label, and the remaining two cards are each different from any other card in the hand: TTT98 17 | TwoPair(strength = 2), //where two cards share one label, two other cards share a second label, and the remaining card has a third label: 23432 18 | OnePair(strength = 1), // where two cards share one label, and the other three cards have a different label from the pair and each other: A23A4 19 | HighCard(strength = 0), // where all cards' labels are distinct: 23456 20 | } 21 | 22 | fun getCard(input: String): Hand { 23 | val bid = input.split(" ").last().toInt() 24 | val cards = input.split(" ").first().groupingBy { it }.eachCount() 25 | when (cards.keys.count()) { 26 | 1 -> { 27 | return Hand(hand = input, kind = HandType.FiveOfaKind, bid) 28 | } 29 | 30 | 2 -> { 31 | return if(cards.values.any{ it == 4}) { 32 | Hand(hand = input, kind = HandType.FourOfaKind, bid) 33 | } else { 34 | Hand(hand = input, kind = HandType.FullHouse, bid) 35 | } 36 | } 37 | 38 | 3 -> { 39 | return if(cards.values.any{ it == 3}) { 40 | Hand(hand = input, kind = HandType.ThreeOfaKind, bid) 41 | } else { 42 | Hand(hand = input, kind = HandType.TwoPair, bid) 43 | } 44 | } 45 | 46 | 4 -> { 47 | return Hand(hand = input, kind = HandType.OnePair, bid) 48 | } 49 | 50 | 5 -> { 51 | return Hand(hand = input, kind = HandType.HighCard, bid) 52 | } 53 | 54 | else -> { throw Exception("illegal hand ${input.split(" ").first()}")} 55 | } 56 | } 57 | 58 | data class Hand(val hand: String, val kind: HandType, val bid: Int) 59 | 60 | 61 | fun SolvePart1(input: String): Int{ 62 | return readInput(input).map { 63 | getCard(it) 64 | }.sortedWith(comparator = Comparator { hand1, hand2 -> 65 | if (hand1.kind.strength != hand2.kind.strength) { 66 | return@Comparator hand1.kind.strength - hand2.kind.strength 67 | } 68 | val diff = hand1.hand.zip(hand2.hand).first { it.first != it.second } 69 | return@Comparator CardTypes[diff.first]!! - CardTypes[diff.second]!! 70 | }).foldIndexed(0) { idx, acc, curr -> 71 | acc + (idx + 1) * curr.bid 72 | } 73 | } -------------------------------------------------------------------------------- /day7/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if "%ERRORLEVEL%"=="0" goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 84 | exit /b 1 85 | 86 | :mainEnd 87 | if "%OS%"=="Windows_NT" endlocal 88 | 89 | :omega 90 | -------------------------------------------------------------------------------- /day8/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if "%ERRORLEVEL%"=="0" goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 84 | exit /b 1 85 | 86 | :mainEnd 87 | if "%OS%"=="Windows_NT" endlocal 88 | 89 | :omega 90 | -------------------------------------------------------------------------------- /day2/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bufio" 5 | "fmt" 6 | "log" 7 | "os" 8 | "strconv" 9 | "strings" 10 | ) 11 | 12 | var rgbMap = map[string]int64{ 13 | "red": 12, 14 | "green": 13, 15 | "blue": 14, 16 | } 17 | 18 | func part1(path string) (int, error) { 19 | file, err := os.Open(path) 20 | if err != nil { 21 | return 0, err 22 | } 23 | defer file.Close() 24 | 25 | scanner := bufio.NewScanner(file) 26 | 27 | possibleGameSum := 0 28 | 29 | for scanner.Scan() { 30 | gameStr := scanner.Text() 31 | game := strings.Split(gameStr, ":") 32 | gameInfo := game[0] 33 | gameId, err := strconv.ParseInt(strings.Split(gameInfo, " ")[1], 10, 0) 34 | if err != nil { 35 | return 0, err 36 | } 37 | gameState := game[1] 38 | games := strings.Split(gameState, "; ") 39 | 40 | possible := true 41 | 42 | for _, g := range games { 43 | balls := strings.Split(g, ",") 44 | for _, ball := range balls { 45 | ballState := strings.Split(strings.Trim(ball, " "), " ") 46 | count, err := strconv.ParseInt(ballState[0], 10, 0) 47 | if err != nil { 48 | return 0, err 49 | } 50 | color := ballState[1] 51 | if rgbMap[color] < count { 52 | possible = false 53 | } 54 | } 55 | } 56 | if possible { 57 | possibleGameSum += int(gameId) 58 | } 59 | } 60 | 61 | if err := scanner.Err(); err != nil { 62 | log.Fatal(err) 63 | } 64 | 65 | return possibleGameSum, nil 66 | } 67 | 68 | func part2(path string) (int, error) { 69 | file, err := os.Open(path) 70 | if err != nil { 71 | return 0, err 72 | } 73 | defer file.Close() 74 | 75 | scanner := bufio.NewScanner(file) 76 | 77 | possibleGameSum := 0 78 | 79 | for scanner.Scan() { 80 | gameStr := scanner.Text() 81 | game := strings.Split(gameStr, ":") 82 | gameState := game[1] 83 | games := strings.Split(gameState, "; ") 84 | rgbCountMap := make(map[string]int) 85 | 86 | power := 1 87 | for _, g := range games { 88 | balls := strings.Split(g, ",") 89 | for _, ball := range balls { 90 | ballState := strings.Split(strings.Trim(ball, " "), " ") 91 | count, err := strconv.ParseInt(ballState[0], 10, 0) 92 | if err != nil { 93 | return 0, err 94 | } 95 | color := ballState[1] 96 | if rgbCountMap[color] < int(count) { 97 | rgbCountMap[color] = int(count) 98 | } 99 | } 100 | } 101 | for _, v := range rgbCountMap { 102 | power = power * v 103 | } 104 | possibleGameSum += int(power) 105 | } 106 | 107 | if err := scanner.Err(); err != nil { 108 | log.Fatal(err) 109 | } 110 | 111 | return possibleGameSum, nil 112 | } 113 | 114 | func main() { 115 | output1, err := part1("part1.example.txt") 116 | if err != nil { 117 | fmt.Println(err.Error()) 118 | } 119 | fmt.Printf("Part1 example: %v \n", output1) 120 | 121 | output2, err := part1("part1.txt") 122 | if err != nil { 123 | fmt.Println(err.Error()) 124 | } 125 | fmt.Printf("Part1: %v \n", output2) 126 | 127 | output3, err := part2("part2.example.txt") 128 | if err != nil { 129 | fmt.Println(err.Error()) 130 | } 131 | fmt.Printf("Part2 example: %v \n", output3) 132 | 133 | output4, err := part2("part2.txt") 134 | if err != nil { 135 | fmt.Println(err.Error()) 136 | } 137 | fmt.Printf("Part2: %v \n", output4) 138 | } 139 | -------------------------------------------------------------------------------- /day3/part2.js: -------------------------------------------------------------------------------- 1 | const fsp = require("fs").promises; 2 | 3 | const createGrid = (rows, cols) => { 4 | const grid = Array(rows); 5 | for (let i = 0; i < rows; i++) { 6 | grid[i] = Array(cols); 7 | for (let j = 0; j < cols; j++) { 8 | grid[i][j] = {}; 9 | } 10 | } 11 | return grid; 12 | }; 13 | 14 | const solve = async (inputPath) => { 15 | const input = await fsp.readFile(inputPath, "utf-8"); 16 | let grid = input.split("\n"); 17 | let gridCols = grid[0].length; 18 | let gridRows = grid.length; 19 | const stars = []; 20 | let partsGrid = createGrid(gridRows, gridCols); 21 | let numCount = 0; 22 | for (const [row, line] of grid.entries()) { 23 | const num = []; 24 | let start = -1; 25 | for (let col = 0; col < line.length; col++) { 26 | const char = line[col]; 27 | if (char == "*") { 28 | stars.push({ row, col }); 29 | } 30 | if (Number.isInteger(parseInt(char))) { 31 | if (num.length == 0) { 32 | start = col; 33 | } 34 | num.push(char); 35 | } else { 36 | if (num.length > 0) { 37 | numCount++; 38 | for (let idx = start; idx < col; idx++) { 39 | partsGrid[row][idx] = { 40 | number: parseInt(num.join("")), 41 | numCount, 42 | }; 43 | } 44 | num.length = 0; 45 | start = -1; 46 | } 47 | } 48 | } 49 | 50 | if (num.length > 0) { 51 | numCount++; 52 | for (let idx = start; idx < line.length; idx++) { 53 | partsGrid[row][idx] = { 54 | number: parseInt(num.join("")), 55 | numCount, 56 | }; 57 | } 58 | num.length = 0; 59 | start = -1; 60 | num.length = 0; 61 | start = -1; 62 | } 63 | } 64 | 65 | const gearRatios = []; 66 | 67 | const directions = [ 68 | [-1, -1], // tl 69 | [0, -1], // tt 70 | [1, -1], // tr 71 | [-1, 0], // ml 72 | [1, 0], // mr 73 | [1, 1], // br 74 | [0, 1], // bm 75 | [-1, 1], // bl 76 | ]; 77 | 78 | for (const star of stars) { 79 | let intersections = []; 80 | for (const [x, y] of directions) { 81 | const cX = star.col + x; 82 | const cY = star.row + y; 83 | if (cX >= 0 && cX < gridCols && cY >= 0 && cY < gridRows) { 84 | let ele = grid[cY][cX]; 85 | if (Number.isInteger(parseInt(ele))) { 86 | intersections.push({ row: cY, col: cX }); 87 | } 88 | } 89 | } 90 | if (intersections.length < 2) { 91 | continue; 92 | } 93 | 94 | const adjacentNumbers = {}; 95 | for (const intersection of intersections) { 96 | adj = partsGrid[intersection.row][intersection.col]; 97 | adjacentNumbers[adj.numCount] = adj.number; 98 | } 99 | if (Object.keys(adjacentNumbers).length == 2) { 100 | // debugArr.push(part); 101 | gearRatios.push( 102 | Object.entries(adjacentNumbers) 103 | .map(([_, v]) => v) 104 | .reduce((acc, curr) => acc * curr, 1) 105 | ); 106 | } 107 | } 108 | 109 | const gearRatioSum = gearRatios.reduce((acc, curr) => acc + curr, 0); 110 | 111 | return gearRatioSum; 112 | }; 113 | 114 | const main = async () => { 115 | console.log(await solve("./example.txt")); 116 | console.log(await solve("./input.txt")); 117 | }; 118 | 119 | main(); 120 | -------------------------------------------------------------------------------- /day5/part1.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | import 'dart:io'; 3 | import 'dart:math'; 4 | 5 | class Range { 6 | int end; 7 | int offset; 8 | 9 | Range(this.end, this.offset); 10 | 11 | @override 12 | String toString() { 13 | return "[end ${end} | offset ${offset}]"; 14 | } 15 | } 16 | 17 | int solve(String filePath) { 18 | var file = File(filePath); 19 | var lines = file.readAsLinesSync(); 20 | 21 | var seedsInput = lines[0].replaceFirst("seeds: ", ""); 22 | var seeds = seedsInput.split(" ").map((seed) => int.parse(seed)).toList(); 23 | 24 | SplayTreeMap seedToSoilMap = SplayTreeMap(); 25 | SplayTreeMap soilToFertilizerMap = SplayTreeMap(); 26 | SplayTreeMap fertilizerToWaterMap = SplayTreeMap(); 27 | SplayTreeMap waterToLightMap = SplayTreeMap(); 28 | SplayTreeMap lightToTemperatureMap = SplayTreeMap(); 29 | SplayTreeMap temperatureToHumidityMap = SplayTreeMap(); 30 | SplayTreeMap humidityToLocationMap = SplayTreeMap(); 31 | 32 | var compass = { 33 | "seed-to-soil map:": seedToSoilMap, 34 | "soil-to-fertilizer map:": soilToFertilizerMap, 35 | "fertilizer-to-water map:": fertilizerToWaterMap, 36 | "water-to-light map:": waterToLightMap, 37 | "light-to-temperature map:": lightToTemperatureMap, 38 | "temperature-to-humidity map:": temperatureToHumidityMap, 39 | "humidity-to-location map:": humidityToLocationMap 40 | }; 41 | 42 | var atlas = [ 43 | seedToSoilMap, 44 | soilToFertilizerMap, 45 | fertilizerToWaterMap, 46 | waterToLightMap, 47 | lightToTemperatureMap, 48 | temperatureToHumidityMap, 49 | humidityToLocationMap 50 | ]; 51 | 52 | var lineIter = lines.iterator; 53 | lineIter.moveNext(); 54 | SplayTreeMap? currentMap; 55 | while (lineIter.moveNext()) { 56 | if (lineIter.current.isEmpty) { 57 | if (!lineIter.moveNext()) break; 58 | if (!compass.containsKey(lineIter.current)) { 59 | throw Exception("invalid range map ${currentMap}"); 60 | } 61 | currentMap = compass[lineIter.current]; 62 | if (!lineIter.moveNext()) break; 63 | } 64 | currentMap = currentMap!; 65 | var input = lineIter.current.split(" "); 66 | var dest = int.parse(input[0]); 67 | var src = int.parse(input[1]); 68 | var range = int.parse(input[2]); 69 | currentMap[src] = Range(src + range - 1, dest - src); 70 | } 71 | 72 | // traverse 73 | int minLocation = -1 >>> 1; 74 | for (var seed in seeds) { 75 | int currValue = seed; 76 | for (var (_, map) in atlas.indexed) { 77 | var start = 0; 78 | var end = map.length - 1; 79 | var entries = map.entries.toList(); 80 | while (start <= end) { 81 | var mid = start + (end - start) ~/ 2; 82 | if (entries[mid].key <= currValue && 83 | currValue <= entries[mid].value.end) { 84 | currValue += entries[mid].value.offset; 85 | break; 86 | } else if (currValue >= entries[mid].key) { 87 | start = mid + 1; 88 | } else { 89 | end = mid - 1; 90 | } 91 | } 92 | } 93 | minLocation = min(minLocation, currValue); 94 | } 95 | 96 | return minLocation; 97 | } 98 | 99 | void main() { 100 | print("Part1 example -> ${solve("example.txt")}"); 101 | print("Part1 example -> ${solve("input.txt")}"); 102 | } 103 | -------------------------------------------------------------------------------- /day8/src/main/java/com/kriticalflare/Part1.java: -------------------------------------------------------------------------------- 1 | package com.kriticalflare; 2 | 3 | import java.io.IOException; 4 | import java.nio.file.Files; 5 | import java.nio.file.Path; 6 | import java.util.HashMap; 7 | import java.util.List; 8 | 9 | 10 | 11 | public class Part1 { 12 | 13 | private static class Node { 14 | String value; 15 | Node left; 16 | Node right; 17 | 18 | public Node(String value, Node left, Node right) { 19 | this.value = value; 20 | this.left = left; 21 | this.right = right; 22 | } 23 | 24 | public String getValue() { 25 | return value; 26 | } 27 | 28 | public void setValue(String value) { 29 | this.value = value; 30 | } 31 | 32 | public Node getLeft() { 33 | return left; 34 | } 35 | 36 | public void setLeft(Node left) { 37 | this.left = left; 38 | } 39 | 40 | public Node getRight() { 41 | return right; 42 | } 43 | 44 | public void setRight(Node right) { 45 | this.right = right; 46 | } 47 | 48 | @Override 49 | public String toString() { 50 | return "Node{" + 51 | "value='" + value + '\'' + 52 | ", left=" + left.getValue() + 53 | ", right=" + right.getValue() + 54 | '}'; 55 | } 56 | } 57 | 58 | static int solve(String path) { 59 | List lines; 60 | try { 61 | lines = Files.readAllLines(Path.of(path)); 62 | } catch (IOException e) { 63 | e.printStackTrace(); 64 | return -1; 65 | } 66 | 67 | String directions = lines.getFirst(); 68 | 69 | HashMap map = new HashMap<>(); 70 | for(int idx = 2; idx < lines.size(); idx++){ 71 | String line = lines.get(idx); 72 | String key = line.split("=")[0].trim(); 73 | String[] children = line.split("=")[1].split(", "); 74 | children[0] = children[0].replace("(", "").trim(); 75 | children[1] = children[1].replace(")", "").trim(); 76 | Node node = new Node(key, null, null); 77 | map.put(key, node); 78 | } 79 | 80 | for(int idx = 2; idx < lines.size(); idx++){ 81 | String line = lines.get(idx); 82 | String key = line.split("=")[0].trim(); 83 | String[] children = line.split("=")[1].split(", "); 84 | children[0] = children[0].replace("(", "").trim(); 85 | children[1] = children[1].replace(")", "").trim(); 86 | 87 | Node leftChild = map.get(children[0]); 88 | Node rightChild = map.get(children[1]); 89 | 90 | Node node = map.get(key); 91 | node.setLeft(leftChild); 92 | node.setRight(rightChild); 93 | } 94 | System.out.println(map); 95 | 96 | var steps = 0; 97 | Node curr = map.get("AAA"); 98 | while (true) { 99 | var direction = directions.charAt(steps % directions.length()); 100 | if (direction == 'L') { 101 | curr = curr.left; 102 | } else { 103 | curr = curr.right; 104 | } 105 | steps++; 106 | if (curr.getValue().equals("ZZZ")) { 107 | break; 108 | } 109 | } 110 | 111 | return steps; 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /day1/src/bin/part2.rs: -------------------------------------------------------------------------------- 1 | use std::{ 2 | fs::File, 3 | io::{BufRead, BufReader}, 4 | path::Path, 5 | }; 6 | 7 | use anyhow::Result; 8 | use peekmore::PeekMore; 9 | 10 | struct Stack { 11 | pub inner: Vec, 12 | } 13 | 14 | impl Stack { 15 | fn new() -> Self { 16 | return Stack { inner: vec![] }; 17 | } 18 | 19 | fn push(&mut self, ele: u32) { 20 | if self.inner.len() < 2 { 21 | self.inner.push(ele); 22 | } else { 23 | while self.inner.len() > 1 { 24 | self.inner.pop(); 25 | } 26 | self.inner.push(ele); 27 | } 28 | } 29 | } 30 | 31 | fn find_calibration(line: &String) -> u32 { 32 | let mut c_iter = line.chars().peekmore(); 33 | let mut stack = Stack::new(); 34 | 35 | loop { 36 | match c_iter.next() { 37 | Some(c) => match c.to_digit(10) { 38 | Some(digit) => { 39 | stack.push(digit); 40 | } 41 | None => { 42 | match (c, c_iter.peek_amount(2)) { 43 | ('o', [Some('n'), Some('e')]) => { 44 | stack.push(1); 45 | } 46 | ('t', [Some('w'), Some('o')]) => { 47 | stack.push(2); 48 | } 49 | ('s', [Some('i'), Some('x')]) => { 50 | stack.push(6); 51 | } 52 | _ => {} 53 | } 54 | match (c, c_iter.peek_amount(4)) { 55 | ('t', [Some('h'), Some('r'), Some('e'), Some('e')]) => { 56 | stack.push(3); 57 | } 58 | ('s', [Some('e'), Some('v'), Some('e'), Some('n')]) => { 59 | stack.push(7); 60 | } 61 | ('e', [Some('i'), Some('g'), Some('h'), Some('t')]) => { 62 | stack.push(8); 63 | } 64 | _ => {} 65 | } 66 | match (c, c_iter.peek_amount(3)) { 67 | ('f', [Some('o'), Some('u'), Some('r')]) => { 68 | stack.push(4); 69 | } 70 | ('f', [Some('i'), Some('v'), Some('e')]) => { 71 | stack.push(5); 72 | } 73 | ('n', [Some('i'), Some('n'), Some('e')]) => { 74 | stack.push(9); 75 | } 76 | _ => {} 77 | } 78 | } 79 | }, 80 | None => break, 81 | } 82 | } 83 | let digits = stack.inner; 84 | dbg!(&digits); 85 | match digits.len() { 86 | 0 => { 87 | return 0; 88 | } 89 | 1 => { 90 | return digits[0] * 10 + digits[0]; 91 | } 92 | 2 => { 93 | return digits[0] * 10 + digits[1]; 94 | } 95 | _ => { 96 | panic!("illegal state"); 97 | } 98 | } 99 | } 100 | 101 | fn main() -> Result<()> { 102 | let input = Path::new("./input/part2.txt"); 103 | let input_file = File::open(input)?; 104 | let mut buf_reader = BufReader::new(input_file); 105 | let mut buffer = String::new(); 106 | 107 | let mut calibration_sum = 0; 108 | 109 | while let Ok(len) = buf_reader.read_line(&mut buffer) { 110 | if len == 0 { 111 | break; 112 | } 113 | let calibration = find_calibration(&buffer); 114 | println!("calibration for line {buffer} is {calibration}"); 115 | calibration_sum += calibration; 116 | buffer.clear(); 117 | } 118 | 119 | println!("sum => {calibration_sum}"); 120 | 121 | Ok(()) 122 | } 123 | -------------------------------------------------------------------------------- /day7/src/main/kotlin/part2/Part2.kt: -------------------------------------------------------------------------------- 1 | package com.kriticalflare.part2 2 | 3 | import com.kriticalflare.readInput 4 | 5 | 6 | val CardTypes: HashMap = hashMapOf( 7 | 'A' to 14, 'K' to 13, 'Q' to 12 , 8 | 'T' to 10, '9' to 9, '8' to 8, '7' to 7, 9 | '6' to 6, '5' to 5 , '4' to 4, '3' to 3, '2' to 2 , 'J' to 1 10 | ) 11 | 12 | enum class HandType(val strength: Int) { 13 | FiveOfaKind(strength = 6), // where all five cards have the same label: AAAAA 14 | FourOfaKind(strength = 5), // where four cards have the same label and one card has a different label: AA8AA 15 | FullHouse(strength = 4), // where three cards have the same label, and the remaining two cards share a different label: 23332 16 | ThreeOfaKind(strength = 3), // where three cards have the same label, and the remaining two cards are each different from any other card in the hand: TTT98 17 | TwoPair(strength = 2), //where two cards share one label, two other cards share a second label, and the remaining card has a third label: 23432 18 | OnePair(strength = 1), // where two cards share one label, and the other three cards have a different label from the pair and each other: A23A4 19 | HighCard(strength = 0), // where all cards' labels are distinct: 23456 20 | } 21 | 22 | fun getCard(input: String): Hand { 23 | val bid = input.split(" ").last().toInt() 24 | val cards = input.split(" ").first().groupingBy { it }.eachCount() 25 | when (cards.keys.count()) { 26 | 1 -> { 27 | return Hand(hand = input, kind = HandType.FiveOfaKind, bid) 28 | } 29 | 2 -> { 30 | return if (cards.keys.any { it == 'J' }) { 31 | Hand(hand = input, kind = HandType.FiveOfaKind, bid) 32 | } else if(cards.values.any{ it == 4 }) { 33 | Hand(hand = input, kind = HandType.FourOfaKind, bid) 34 | } else { 35 | Hand(hand = input, kind = HandType.FullHouse, bid) 36 | } 37 | } 38 | 39 | 3 -> { 40 | if(cards.values.any{ it == 3}) { 41 | if (cards.any { it.key == 'J' }) { 42 | return Hand(hand = input, kind = HandType.FourOfaKind, bid) 43 | } 44 | return Hand(hand = input, kind = HandType.ThreeOfaKind, bid) 45 | } else { 46 | if (cards.any { it.key == 'J' && it.value == 2 }) { 47 | return Hand(hand = input, kind = HandType.FourOfaKind, bid) 48 | } else if (cards.any { it.key == 'J' && it.value == 1}) { 49 | return Hand(hand = input, kind = HandType.FullHouse, bid) 50 | } 51 | return Hand(hand = input, kind = HandType.TwoPair, bid) 52 | } 53 | } 54 | 55 | 4 -> { 56 | return if (cards.any { it.key == 'J' }) { 57 | Hand(hand = input, kind = HandType.ThreeOfaKind, bid) 58 | } else { 59 | Hand(hand = input, kind = HandType.OnePair, bid) 60 | } 61 | } 62 | 63 | 5 -> { 64 | return if (cards.any { it.key == 'J'}) { 65 | Hand(hand = input, kind = HandType.OnePair, bid) 66 | } else { 67 | Hand(hand = input, kind = HandType.HighCard, bid) 68 | } 69 | } 70 | 71 | else -> { throw Exception("illegal hand ${input.split(" ").first()}")} 72 | } 73 | } 74 | 75 | data class Hand(val hand: String, val kind: HandType, val bid: Int) 76 | 77 | 78 | fun SolvePart2(input: String): Int{ 79 | return readInput(input).map { getCard(it) 80 | }.sortedWith(comparator = Comparator { hand1, hand2 -> 81 | if (hand1.kind.strength != hand2.kind.strength) { 82 | return@Comparator hand1.kind.strength - hand2.kind.strength 83 | } 84 | val diff = hand1.hand.zip(hand2.hand).first { it.first != it.second } 85 | return@Comparator CardTypes[diff.first]!! - CardTypes[diff.second]!! 86 | }).foldIndexed(0) { idx, acc, curr -> 87 | acc + (idx + 1) * curr.bid 88 | } 89 | } -------------------------------------------------------------------------------- /day8/src/main/java/com/kriticalflare/Part2.java: -------------------------------------------------------------------------------- 1 | package com.kriticalflare; 2 | 3 | import java.io.IOException; 4 | import java.nio.file.Files; 5 | import java.nio.file.Path; 6 | import java.util.ArrayList; 7 | import java.util.HashMap; 8 | import java.util.List; 9 | 10 | public class Part2 { 11 | 12 | private static class Node { 13 | String value; 14 | Node left; 15 | Node right; 16 | 17 | public Node(String value, Node left, Node right) { 18 | this.value = value; 19 | this.left = left; 20 | this.right = right; 21 | } 22 | 23 | public String getValue() { 24 | return value; 25 | } 26 | 27 | public void setValue(String value) { 28 | this.value = value; 29 | } 30 | 31 | public Node getLeft() { 32 | return left; 33 | } 34 | 35 | public void setLeft(Node left) { 36 | this.left = left; 37 | } 38 | 39 | public Node getRight() { 40 | return right; 41 | } 42 | 43 | public void setRight(Node right) { 44 | this.right = right; 45 | } 46 | 47 | @Override 48 | public String toString() { 49 | return "Node{" + 50 | "value='" + value + '\'' + 51 | ", left=" + left.getValue() + 52 | ", right=" + right.getValue() + 53 | '}'; 54 | } 55 | } 56 | 57 | static int solve(String path) { 58 | List lines; 59 | try { 60 | lines = Files.readAllLines(Path.of(path)); 61 | } catch (IOException e) { 62 | e.printStackTrace(); 63 | return -1; 64 | } 65 | 66 | String directions = lines.getFirst(); 67 | 68 | ArrayList ghosts = new ArrayList<>(); 69 | HashMap map = new HashMap<>(); 70 | 71 | for(int idx = 2; idx < lines.size(); idx++){ 72 | String line = lines.get(idx); 73 | String key = line.split("=")[0].trim(); 74 | String[] children = line.split("=")[1].split(", "); 75 | children[0] = children[0].replace("(", "").trim(); 76 | children[1] = children[1].replace(")", "").trim(); 77 | Node node = new Node(key, null, null); 78 | map.put(key, node); 79 | if (key.endsWith("A")) { 80 | ghosts.add(key); 81 | } 82 | } 83 | 84 | for(int idx = 2; idx < lines.size(); idx++){ 85 | String line = lines.get(idx); 86 | String key = line.split("=")[0].trim(); 87 | String[] children = line.split("=")[1].split(", "); 88 | children[0] = children[0].replace("(", "").trim(); 89 | children[1] = children[1].replace(")", "").trim(); 90 | 91 | Node leftChild = map.get(children[0]); 92 | Node rightChild = map.get(children[1]); 93 | 94 | Node node = map.get(key); 95 | node.setLeft(leftChild); 96 | node.setRight(rightChild); 97 | } 98 | System.out.println(map); 99 | 100 | var steps = 0; 101 | while (true) { 102 | var direction = directions.charAt(steps % directions.length()); 103 | for(int gIdx = 0; gIdx < ghosts.size(); gIdx++) { 104 | var ghostKey = ghosts.get(gIdx); 105 | var ghost = map.get(ghostKey); 106 | if (direction == 'L') { 107 | ghostKey = ghost.getLeft().value; 108 | } else { 109 | ghostKey = ghost.getRight().value; 110 | } 111 | ghosts.set(gIdx, ghostKey); 112 | } 113 | steps++; 114 | 115 | var end = true; 116 | for(var ghost: ghosts){ 117 | if(!ghost.endsWith("Z")){ 118 | end = false; 119 | break; 120 | } 121 | } 122 | if(end) { 123 | break; 124 | } 125 | } 126 | return steps; 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /day5/input.txt: -------------------------------------------------------------------------------- 1 | seeds: 2880930400 17599561 549922357 200746426 1378552684 43534336 155057073 56546377 824205101 378503603 1678376802 130912435 2685513694 137778160 2492361384 188575752 3139914842 1092214826 2989476473 58874625 2 | 3 | seed-to-soil map: 4 | 341680072 47360832 98093750 5 | 1677587229 1836834678 160297919 6 | 1122651749 4014790961 280176335 7 | 2279929873 2689269992 53644948 8 | 3916120104 1199400457 172302726 9 | 0 381576527 58197295 10 | 1402828084 3450816018 274759145 11 | 3909949227 2540063154 6170877 12 | 802918801 2384227172 155835982 13 | 4088422830 3244271552 206544466 14 | 958754783 1997132597 28874650 15 | 58197295 306349987 75226540 16 | 180784667 145454582 160895405 17 | 2334903647 1543332738 293501940 18 | 3699983017 2997982209 25342830 19 | 2333574821 2687941166 1328826 20 | 3111317969 1371703183 171629555 21 | 2806959198 2135774873 248452299 22 | 2766721604 717118138 40237594 23 | 3055411497 2632034694 55906472 24 | 2628405587 3023325039 138316017 25 | 1837885148 757355732 442044725 26 | 3725325847 2813358829 184623380 27 | 3353391413 2026007247 109767626 28 | 987629433 3962399141 10015813 29 | 717118138 2546234031 85800663 30 | 3282947524 2742914940 70443889 31 | 1080275742 3972414954 42376007 32 | 133423835 0 47360832 33 | 3463159039 3725575163 236823978 34 | 997645246 3161641056 82630496 35 | 36 | soil-to-fertilizer map: 37 | 303672059 1087423328 103502353 38 | 171922589 2907629744 91556518 39 | 2064217168 468859004 91214014 40 | 1129888530 1046445685 40977643 41 | 3698610046 4215442249 79525047 42 | 1045870106 1586657152 41455160 43 | 1170866173 1322928302 17679660 44 | 4160148003 3332238470 107558461 45 | 4267706464 3853049576 27260832 46 | 0 3007612896 90771201 47 | 3447204990 3880310408 249339913 48 | 1189561657 1438888401 43309463 49 | 4019710828 3219712242 104981462 50 | 2226263856 2187322171 114088350 51 | 553216166 1847338068 182148047 52 | 3217647099 3439796931 229557891 53 | 2832115692 1482197864 23307900 54 | 867366834 94995931 178503272 55 | 1969221237 0 94995931 56 | 3785679859 3704810535 148239041 57 | 1095751900 2693816297 34136630 58 | 4124692290 3669354822 35455713 59 | 454935727 1340607962 98280439 60 | 2204466075 1628112312 21797781 61 | 1947833351 2164918461 21387886 62 | 2634687717 1649910093 197427975 63 | 263479107 2850768768 40192952 64 | 3696544903 3217647099 2065143 65 | 735364213 1190925681 132002621 66 | 3050783393 2337205982 47600704 67 | 1087325266 2999186262 8426634 68 | 3778135093 3324693704 7544766 69 | 2855423592 273499203 195359801 70 | 90771201 1505505764 81151388 71 | 2340352206 560073018 290906919 72 | 1531641800 939263745 107181940 73 | 1188545833 2186306347 1015824 74 | 1355686961 850979937 88283808 75 | 1492181516 2029486115 39460284 76 | 1638823740 2384806686 309009611 77 | 2155431182 2894390312 13239432 78 | 1443970769 2068946399 48210747 79 | 1232871120 2727952927 122815841 80 | 3933918900 4129650321 85791928 81 | 2631259125 2890961720 3428592 82 | 407174412 2117157146 47761315 83 | 2168670614 2301410521 35795461 84 | 85 | fertilizer-to-water map: 86 | 4253126168 3603943470 41841128 87 | 3150812716 3873122781 161556325 88 | 4132148538 3445929121 16652907 89 | 4071215062 2557593856 10373731 90 | 3585414898 2401284809 61555959 91 | 124617758 989226185 56063423 92 | 1311995731 916233018 72993167 93 | 180681181 891200267 25032751 94 | 1577315548 1448436684 231921083 95 | 69948934 1391916079 39397864 96 | 2730663795 3577458422 26485048 97 | 2453473122 3255362867 102306532 98 | 4148801445 3801350502 12292818 99 | 3002725397 3107275548 148087319 100 | 3525935437 3813643320 59479461 101 | 3982955340 3357669399 88259722 102 | 2631712351 2567967587 98951444 103 | 628324302 2038793089 109830184 104 | 3427245435 3721480891 3936914 105 | 796140554 1045289608 36965524 106 | 939693576 1140241200 24301167 107 | 205713932 1680357767 358435322 108 | 4161094263 2666919031 92031905 109 | 1103981621 0 206162329 110 | 1809236631 761213122 129987145 111 | 1310143950 1431313943 1851781 112 | 4081588793 3056715803 50559745 113 | 738154486 1082255132 57986068 114 | 564149254 206162329 64175048 115 | 3722667150 4034679106 260288190 116 | 3431182349 2462840768 94753088 117 | 109346798 1433165724 15270960 118 | 2757148843 2811139249 245576554 119 | 1044349135 2294919620 59632486 120 | 833106078 270337377 106587498 121 | 3646970857 3645784598 75696293 122 | 0 2354552106 4006979 123 | 1974270838 376924875 384288247 124 | 3312369041 3462582028 114876394 125 | 2401284809 2758950936 52188313 126 | 1384988898 1199589429 192326650 127 | 963994743 2214565228 80354392 128 | 1939223776 1164542367 35047062 129 | 4006979 2148623273 65941955 130 | 2555779654 3725417805 75932697 131 | 132 | water-to-light map: 133 | 1553071310 2767299260 81555093 134 | 1638385137 3758734 7165416 135 | 3923895602 3742459208 355646104 136 | 2563492152 40550035 317968 137 | 357175543 151852464 53516575 138 | 756535305 2730597762 36701498 139 | 1142337672 1915537677 164067723 140 | 436470886 2848854353 61956232 141 | 1316538987 1679005354 102639946 142 | 609765571 2079605400 146769734 143 | 1306405395 2660382036 10133592 144 | 3817572860 3406157555 106322742 145 | 2023184953 353497588 62195869 146 | 3531543848 4223491605 71475691 147 | 410692118 126073696 25778768 148 | 4279541706 3727562743 14896465 149 | 2903607795 1495097536 74179449 150 | 1794747312 2279656479 95385933 151 | 2783150325 2269091374 10565105 152 | 3406157555 4098105312 125386293 153 | 2145462956 205369039 148128549 154 | 2833741244 2401175172 69866551 155 | 793236803 685594104 306384629 156 | 1645550553 2511185277 149196759 157 | 1419178933 1781645300 133892377 158 | 1634626403 0 3758734 159 | 3274934245 2471041723 36449164 160 | 0 1097896179 357175543 161 | 2563810120 991978733 105917446 162 | 4294438171 3727033618 529125 163 | 2688189328 1569276985 94960997 164 | 2669727566 2507490887 3694390 165 | 3311383409 10924150 29625885 166 | 1099621432 2226375134 42716240 167 | 1890133245 2910810585 133051708 168 | 583632811 2375042412 26132760 169 | 498427118 40868003 85205693 170 | 2293591505 415693457 269900647 171 | 2673421956 1664237982 14767372 172 | 2085380822 2670515628 60082134 173 | 3603019539 3512480297 214553321 174 | 2977787244 3043862293 297147001 175 | 2793715430 1455071722 40025814 176 | 177 | light-to-temperature map: 178 | 3752181853 3850028427 61847460 179 | 3392702182 4061054452 68370555 180 | 3610251302 4129425007 141930551 181 | 2019529001 2633762146 55812503 182 | 1423059901 2612524947 21237199 183 | 1637625157 3160312690 128493598 184 | 2109055159 2018596226 368399035 185 | 343891384 811352094 920120231 186 | 154347384 2422980947 189544000 187 | 2075341504 1978947609 33713655 188 | 1444297100 2966984633 193328057 189 | 35985686 2689574649 118361698 190 | 2477454194 0 811352094 191 | 1772053717 1854798742 124148867 192 | 1264011615 2807936347 159048286 193 | 0 2386995261 35985686 194 | 1766118755 2012661264 5934962 195 | 3814029313 3392702182 457326245 196 | 3461072737 3911875887 149178565 197 | 1896202584 1731472325 123326417 198 | 199 | temperature-to-humidity map: 200 | 3344602117 2991074372 262457649 201 | 1707309180 3911386116 383581180 202 | 3778482785 2130995124 374719434 203 | 3607059766 3253532021 171423019 204 | 584508486 478912361 161371970 205 | 1578590582 2505714558 128718598 206 | 3294145751 1806488186 50456366 207 | 1143023241 2829557603 161516769 208 | 1304540010 1856944552 274050572 209 | 2090890360 3424955040 344665999 210 | 2435556359 1143023241 663464945 211 | 496214964 1000471163 88293522 212 | 0 640284331 360186832 213 | 3099021304 2634433156 195124447 214 | 360186832 342884229 136028132 215 | 745880456 0 342884229 216 | 4153202219 3769621039 141765077 217 | 218 | humidity-to-location map: 219 | 3114211644 984440400 35385940 220 | 3530465412 479339778 128291026 221 | 0 3699707734 285474938 222 | 2898087648 3606829306 92878428 223 | 2762235329 607630804 135852319 224 | 4210792153 4197161772 84175143 225 | 3149597584 31394121 380867828 226 | 1848709689 0 31394121 227 | 1880103810 412261949 67077829 228 | 285474938 1579019790 1563234751 229 | 2990966076 3566305423 40523883 230 | 2434079297 1019826340 328156032 231 | 2371232521 3985182672 62846776 232 | 1947181639 3142254541 424050882 233 | 3899713715 1347982372 148315733 234 | 3031489959 1496298105 82721685 235 | 4197161772 4281336915 13630381 236 | 3658756438 743483123 240957277 -------------------------------------------------------------------------------- /day7/gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit 84 | 85 | APP_NAME="Gradle" 86 | APP_BASE_NAME=${0##*/} 87 | 88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 90 | 91 | # Use the maximum available, or set MAX_FD != -1 to use that value. 92 | MAX_FD=maximum 93 | 94 | warn () { 95 | echo "$*" 96 | } >&2 97 | 98 | die () { 99 | echo 100 | echo "$*" 101 | echo 102 | exit 1 103 | } >&2 104 | 105 | # OS specific support (must be 'true' or 'false'). 106 | cygwin=false 107 | msys=false 108 | darwin=false 109 | nonstop=false 110 | case "$( uname )" in #( 111 | CYGWIN* ) cygwin=true ;; #( 112 | Darwin* ) darwin=true ;; #( 113 | MSYS* | MINGW* ) msys=true ;; #( 114 | NONSTOP* ) nonstop=true ;; 115 | esac 116 | 117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 118 | 119 | 120 | # Determine the Java command to use to start the JVM. 121 | if [ -n "$JAVA_HOME" ] ; then 122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 123 | # IBM's JDK on AIX uses strange locations for the executables 124 | JAVACMD=$JAVA_HOME/jre/sh/java 125 | else 126 | JAVACMD=$JAVA_HOME/bin/java 127 | fi 128 | if [ ! -x "$JAVACMD" ] ; then 129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 130 | 131 | Please set the JAVA_HOME variable in your environment to match the 132 | location of your Java installation." 133 | fi 134 | else 135 | JAVACMD=java 136 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | 142 | # Increase the maximum file descriptors if we can. 143 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 144 | case $MAX_FD in #( 145 | max*) 146 | MAX_FD=$( ulimit -H -n ) || 147 | warn "Could not query maximum file descriptor limit" 148 | esac 149 | case $MAX_FD in #( 150 | '' | soft) :;; #( 151 | *) 152 | ulimit -n "$MAX_FD" || 153 | warn "Could not set maximum file descriptor limit to $MAX_FD" 154 | esac 155 | fi 156 | 157 | # Collect all arguments for the java command, stacking in reverse order: 158 | # * args from the command line 159 | # * the main class name 160 | # * -classpath 161 | # * -D...appname settings 162 | # * --module-path (only if needed) 163 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 164 | 165 | # For Cygwin or MSYS, switch paths to Windows format before running java 166 | if "$cygwin" || "$msys" ; then 167 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 168 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 169 | 170 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 171 | 172 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 173 | for arg do 174 | if 175 | case $arg in #( 176 | -*) false ;; # don't mess with options #( 177 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 178 | [ -e "$t" ] ;; #( 179 | *) false ;; 180 | esac 181 | then 182 | arg=$( cygpath --path --ignore --mixed "$arg" ) 183 | fi 184 | # Roll the args list around exactly as many times as the number of 185 | # args, so each arg winds up back in the position where it started, but 186 | # possibly modified. 187 | # 188 | # NB: a `for` loop captures its iteration list before it begins, so 189 | # changing the positional parameters here affects neither the number of 190 | # iterations, nor the values presented in `arg`. 191 | shift # remove old arg 192 | set -- "$@" "$arg" # push replacement arg 193 | done 194 | fi 195 | 196 | # Collect all arguments for the java command; 197 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 198 | # shell script including quotes and variable substitutions, so put them in 199 | # double quotes to make sure that they get re-expanded; and 200 | # * put everything else in single quotes, so that it's not re-expanded. 201 | 202 | set -- \ 203 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 204 | -classpath "$CLASSPATH" \ 205 | org.gradle.wrapper.GradleWrapperMain \ 206 | "$@" 207 | 208 | # Use "xargs" to parse quoted args. 209 | # 210 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 211 | # 212 | # In Bash we could simply go: 213 | # 214 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 215 | # set -- "${ARGS[@]}" "$@" 216 | # 217 | # but POSIX shell has neither arrays nor command substitution, so instead we 218 | # post-process each arg (as a line of input to sed) to backslash-escape any 219 | # character that might be a shell metacharacter, then use eval to reverse 220 | # that process (while maintaining the separation between arguments), and wrap 221 | # the whole thing up as a single "set" statement. 222 | # 223 | # This will of course break if any of these variables contains a newline or 224 | # an unmatched quote. 225 | # 226 | 227 | eval "set -- $( 228 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 229 | xargs -n1 | 230 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 231 | tr '\n' ' ' 232 | )" '"$@"' 233 | 234 | exec "$JAVACMD" "$@" 235 | -------------------------------------------------------------------------------- /day8/gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit 84 | 85 | APP_NAME="Gradle" 86 | APP_BASE_NAME=${0##*/} 87 | 88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 90 | 91 | # Use the maximum available, or set MAX_FD != -1 to use that value. 92 | MAX_FD=maximum 93 | 94 | warn () { 95 | echo "$*" 96 | } >&2 97 | 98 | die () { 99 | echo 100 | echo "$*" 101 | echo 102 | exit 1 103 | } >&2 104 | 105 | # OS specific support (must be 'true' or 'false'). 106 | cygwin=false 107 | msys=false 108 | darwin=false 109 | nonstop=false 110 | case "$( uname )" in #( 111 | CYGWIN* ) cygwin=true ;; #( 112 | Darwin* ) darwin=true ;; #( 113 | MSYS* | MINGW* ) msys=true ;; #( 114 | NONSTOP* ) nonstop=true ;; 115 | esac 116 | 117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 118 | 119 | 120 | # Determine the Java command to use to start the JVM. 121 | if [ -n "$JAVA_HOME" ] ; then 122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 123 | # IBM's JDK on AIX uses strange locations for the executables 124 | JAVACMD=$JAVA_HOME/jre/sh/java 125 | else 126 | JAVACMD=$JAVA_HOME/bin/java 127 | fi 128 | if [ ! -x "$JAVACMD" ] ; then 129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 130 | 131 | Please set the JAVA_HOME variable in your environment to match the 132 | location of your Java installation." 133 | fi 134 | else 135 | JAVACMD=java 136 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | 142 | # Increase the maximum file descriptors if we can. 143 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 144 | case $MAX_FD in #( 145 | max*) 146 | MAX_FD=$( ulimit -H -n ) || 147 | warn "Could not query maximum file descriptor limit" 148 | esac 149 | case $MAX_FD in #( 150 | '' | soft) :;; #( 151 | *) 152 | ulimit -n "$MAX_FD" || 153 | warn "Could not set maximum file descriptor limit to $MAX_FD" 154 | esac 155 | fi 156 | 157 | # Collect all arguments for the java command, stacking in reverse order: 158 | # * args from the command line 159 | # * the main class name 160 | # * -classpath 161 | # * -D...appname settings 162 | # * --module-path (only if needed) 163 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 164 | 165 | # For Cygwin or MSYS, switch paths to Windows format before running java 166 | if "$cygwin" || "$msys" ; then 167 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 168 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 169 | 170 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 171 | 172 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 173 | for arg do 174 | if 175 | case $arg in #( 176 | -*) false ;; # don't mess with options #( 177 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 178 | [ -e "$t" ] ;; #( 179 | *) false ;; 180 | esac 181 | then 182 | arg=$( cygpath --path --ignore --mixed "$arg" ) 183 | fi 184 | # Roll the args list around exactly as many times as the number of 185 | # args, so each arg winds up back in the position where it started, but 186 | # possibly modified. 187 | # 188 | # NB: a `for` loop captures its iteration list before it begins, so 189 | # changing the positional parameters here affects neither the number of 190 | # iterations, nor the values presented in `arg`. 191 | shift # remove old arg 192 | set -- "$@" "$arg" # push replacement arg 193 | done 194 | fi 195 | 196 | # Collect all arguments for the java command; 197 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 198 | # shell script including quotes and variable substitutions, so put them in 199 | # double quotes to make sure that they get re-expanded; and 200 | # * put everything else in single quotes, so that it's not re-expanded. 201 | 202 | set -- \ 203 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 204 | -classpath "$CLASSPATH" \ 205 | org.gradle.wrapper.GradleWrapperMain \ 206 | "$@" 207 | 208 | # Use "xargs" to parse quoted args. 209 | # 210 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 211 | # 212 | # In Bash we could simply go: 213 | # 214 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 215 | # set -- "${ARGS[@]}" "$@" 216 | # 217 | # but POSIX shell has neither arrays nor command substitution, so instead we 218 | # post-process each arg (as a line of input to sed) to backslash-escape any 219 | # character that might be a shell metacharacter, then use eval to reverse 220 | # that process (while maintaining the separation between arguments), and wrap 221 | # the whole thing up as a single "set" statement. 222 | # 223 | # This will of course break if any of these variables contains a newline or 224 | # an unmatched quote. 225 | # 226 | 227 | eval "set -- $( 228 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 229 | xargs -n1 | 230 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 231 | tr '\n' ' ' 232 | )" '"$@"' 233 | 234 | exec "$JAVACMD" "$@" 235 | -------------------------------------------------------------------------------- /day2/part1.txt: -------------------------------------------------------------------------------- 1 | Game 1: 1 green, 2 red, 6 blue; 4 red, 1 green, 3 blue; 7 blue, 5 green; 6 blue, 2 red, 1 green 2 | Game 2: 1 green, 17 red; 1 blue, 6 red, 7 green; 2 blue, 4 red, 7 green; 1 green, 6 red, 2 blue 3 | Game 3: 6 red, 15 blue, 15 green; 1 green, 4 red, 12 blue; 14 blue, 9 red, 1 green; 2 red, 15 blue, 12 green 4 | Game 4: 8 green, 10 blue, 6 red; 20 blue, 4 red; 17 blue, 2 green, 3 red; 4 blue, 2 green, 3 red; 10 red, 3 blue, 3 green; 5 green, 14 blue, 6 red 5 | Game 5: 3 green, 8 blue, 2 red; 11 red, 6 green, 11 blue; 8 red, 5 blue, 2 green 6 | Game 6: 2 blue, 12 red, 2 green; 3 green, 2 red; 3 green, 3 blue, 10 red; 7 red, 2 blue, 4 green; 1 red, 2 blue, 5 green 7 | Game 7: 1 red, 8 blue, 2 green; 1 red, 2 blue, 12 green; 1 blue; 3 blue, 3 green 8 | Game 8: 10 green, 4 red, 4 blue; 12 green, 1 blue; 1 red, 13 green, 2 blue; 12 green, 3 blue; 9 green, 7 red 9 | Game 9: 1 green, 1 blue, 3 red; 3 blue, 3 red, 8 green; 6 blue, 4 red, 6 green; 2 red, 7 green; 1 red, 10 green, 13 blue; 5 red, 1 blue, 1 green 10 | Game 10: 9 green, 3 red, 3 blue; 12 green, 2 blue; 18 green, 1 blue; 14 green; 2 blue, 9 green, 2 red 11 | Game 11: 14 green; 2 green, 2 red, 11 blue; 9 blue, 3 green 12 | Game 12: 9 green, 3 blue, 8 red; 1 green, 2 blue, 3 red; 4 blue, 8 red, 10 green; 3 blue, 7 red, 8 green; 3 blue, 5 red, 7 green; 2 blue, 5 green 13 | Game 13: 6 red, 1 blue, 10 green; 7 red, 1 green; 8 red, 2 green, 1 blue 14 | Game 14: 2 red, 4 blue, 2 green; 2 green, 5 red, 1 blue; 1 red, 6 blue 15 | Game 15: 7 blue, 3 red; 13 blue, 8 red, 1 green; 1 green, 5 red, 13 blue; 8 red, 5 blue; 4 red, 3 blue, 1 green; 12 blue, 8 red, 1 green 16 | Game 16: 5 blue, 1 green, 2 red; 2 blue, 20 green; 4 blue, 1 red, 17 green; 10 green, 5 blue, 2 red 17 | Game 17: 6 red, 13 blue, 8 green; 12 blue, 7 green, 9 red; 19 blue, 5 red; 2 green, 8 red, 14 blue 18 | Game 18: 5 red, 2 green, 1 blue; 8 blue, 17 red, 9 green; 2 blue, 1 green; 4 blue, 10 red; 5 blue, 4 red, 6 green 19 | Game 19: 5 red, 12 green; 8 red, 13 green, 1 blue; 1 red, 1 green, 3 blue; 5 green, 5 red 20 | Game 20: 11 red, 8 blue; 9 red, 2 green, 13 blue; 2 red, 1 green, 2 blue; 1 green, 9 blue, 13 red; 3 blue, 5 red, 1 green 21 | Game 21: 1 red, 4 green, 11 blue; 3 green, 15 blue; 6 green, 7 red, 14 blue; 15 blue, 6 green, 10 red; 6 red, 16 blue, 2 green 22 | Game 22: 2 blue, 15 green, 2 red; 3 blue, 6 green, 1 red; 2 blue, 5 green, 1 red; 6 green, 2 red, 2 blue; 4 green, 2 blue; 4 blue, 1 red, 15 green 23 | Game 23: 2 blue, 1 green, 12 red; 5 blue, 11 red, 4 green; 12 red, 4 blue; 12 red, 2 green, 5 blue 24 | Game 24: 4 blue, 7 red; 3 red, 3 blue; 1 red, 4 blue; 2 green, 6 red, 6 blue; 7 red, 1 green, 2 blue; 6 red, 1 blue, 1 green 25 | Game 25: 5 green, 9 blue; 6 green, 7 red, 2 blue; 1 red, 3 blue, 7 green; 9 blue, 3 red; 5 green, 9 blue, 2 red 26 | Game 26: 6 red, 4 blue; 2 blue, 4 green; 3 green, 5 red, 5 blue; 4 green, 6 red, 3 blue; 4 green, 7 red, 4 blue 27 | Game 27: 15 green, 1 blue, 12 red; 12 red, 1 green; 1 red, 1 blue, 5 green; 13 green, 6 red, 1 blue; 5 red, 1 blue, 1 green; 11 red, 14 green 28 | Game 28: 3 blue, 2 green, 10 red; 5 blue, 2 green; 4 green, 3 blue, 11 red 29 | Game 29: 10 blue, 2 red; 17 green, 7 blue, 2 red; 1 blue, 8 green, 1 red; 10 green, 2 red, 3 blue 30 | Game 30: 10 green, 8 red, 1 blue; 4 blue, 7 green, 14 red; 2 blue, 14 red, 11 green; 1 blue, 13 green, 12 red; 5 blue, 2 red, 4 green; 4 green, 5 red 31 | Game 31: 4 green, 11 red, 11 blue; 3 blue, 11 red; 5 blue, 7 red, 3 green; 10 blue, 5 green, 1 red 32 | Game 32: 4 red, 8 blue, 1 green; 14 red, 7 blue, 4 green; 13 red, 3 blue, 9 green; 3 red, 1 green, 8 blue; 8 green, 8 red, 5 blue 33 | Game 33: 6 red, 10 blue, 7 green; 19 blue, 1 red; 6 green, 11 red, 11 blue; 2 green, 2 blue, 12 red; 3 red, 13 blue, 7 green; 6 green, 4 red, 2 blue 34 | Game 34: 3 red, 3 green, 15 blue; 7 green, 15 blue; 3 red, 2 green, 8 blue; 19 green, 18 blue 35 | Game 35: 2 green, 1 blue; 2 green, 2 blue, 1 red; 3 blue, 1 red, 1 green; 4 blue, 1 red 36 | Game 36: 1 red, 11 green; 1 green, 1 blue; 8 blue; 2 green, 3 red; 1 red 37 | Game 37: 4 blue, 3 red; 12 blue, 13 red; 2 red, 2 green, 8 blue 38 | Game 38: 8 red, 2 blue; 1 green, 2 red; 8 red, 2 green, 1 blue; 16 red, 2 green; 7 red, 2 blue, 2 green 39 | Game 39: 6 green, 1 blue, 5 red; 14 green, 8 blue, 6 red; 8 red, 10 blue, 1 green; 14 green, 9 red; 17 blue, 5 red; 1 blue, 7 green, 1 red 40 | Game 40: 4 red, 8 blue, 3 green; 13 blue, 1 red; 3 blue, 7 red, 3 green; 3 green, 8 blue, 10 red; 3 green, 20 blue, 5 red 41 | Game 41: 1 blue, 2 green; 11 green, 2 blue; 5 blue; 15 red, 8 green, 5 blue 42 | Game 42: 1 green, 12 blue, 1 red; 6 blue, 1 green, 5 red; 1 red, 11 blue, 4 green; 3 red, 17 blue, 1 green; 1 red, 11 blue; 9 blue, 6 green, 3 red 43 | Game 43: 16 blue, 13 green, 1 red; 17 blue, 7 red, 10 green; 13 green, 5 red, 7 blue 44 | Game 44: 2 blue, 4 red; 15 green, 7 red; 2 green, 1 blue; 6 red, 13 green 45 | Game 45: 5 green, 1 blue, 8 red; 4 red, 1 blue, 5 green; 1 green, 3 red; 1 green, 2 blue, 6 red; 4 red, 3 green, 2 blue; 2 red, 2 blue, 5 green 46 | Game 46: 1 green, 1 red, 6 blue; 11 blue; 1 red, 1 green, 7 blue; 8 blue; 1 green, 7 blue, 2 red 47 | Game 47: 7 green, 9 blue, 7 red; 11 red, 13 blue, 5 green; 12 green, 12 blue, 5 red; 4 blue, 8 green, 7 red 48 | Game 48: 11 green, 7 red, 2 blue; 2 blue, 10 green, 3 red; 1 blue, 2 red, 1 green; 4 green, 2 red, 7 blue; 7 red, 4 green, 2 blue 49 | Game 49: 1 red, 2 blue, 5 green; 2 green, 4 blue; 5 blue, 2 green, 1 red; 9 blue, 1 green; 7 blue 50 | Game 50: 8 green, 9 blue, 2 red; 2 green, 5 blue; 14 green, 1 red, 8 blue 51 | Game 51: 1 green, 2 blue; 12 blue, 1 red; 2 blue 52 | Game 52: 3 red, 2 blue, 2 green; 4 red, 4 green, 7 blue; 2 blue, 4 red, 1 green; 3 green; 1 red, 9 green, 7 blue 53 | Game 53: 9 blue, 12 red, 7 green; 8 blue, 6 green; 1 green, 8 blue, 9 red; 12 red, 6 green; 9 blue, 14 red, 10 green; 7 red, 3 green, 5 blue 54 | Game 54: 8 green, 5 blue, 5 red; 4 green, 13 blue, 2 red; 2 blue, 5 red, 1 green; 3 red, 3 green, 10 blue 55 | Game 55: 17 red, 15 green, 17 blue; 6 red, 5 green, 7 blue; 17 green, 6 blue, 5 red 56 | Game 56: 7 blue, 6 red, 7 green; 10 green, 3 red; 9 red, 3 blue, 5 green 57 | Game 57: 5 blue, 11 red, 1 green; 13 red, 1 green, 2 blue; 2 blue, 4 red; 1 green, 10 red, 1 blue; 1 green, 8 red 58 | Game 58: 1 red, 2 green, 9 blue; 1 green, 1 blue, 1 red; 2 red, 6 blue, 2 green; 14 blue, 1 green, 1 red; 5 blue, 1 red, 2 green; 14 blue, 2 green 59 | Game 59: 9 green, 2 blue, 5 red; 9 red, 5 green; 10 red, 1 blue, 8 green 60 | Game 60: 8 blue, 6 red, 4 green; 3 red, 12 green, 9 blue; 4 blue, 5 red, 5 green; 4 red, 8 blue; 7 green, 12 blue, 6 red 61 | Game 61: 5 blue, 13 red, 1 green; 5 red, 5 blue; 1 red, 3 blue; 1 green, 9 red; 10 red, 3 blue, 1 green 62 | Game 62: 1 blue, 13 red; 4 blue, 5 red; 11 blue, 8 red, 1 green 63 | Game 63: 14 blue, 5 red; 9 blue, 14 green, 5 red; 3 red, 8 green, 15 blue; 4 blue, 15 green, 6 red 64 | Game 64: 13 red, 6 blue, 11 green; 12 red, 1 blue, 8 green; 1 red, 17 green; 13 red, 12 green, 7 blue 65 | Game 65: 4 red, 17 blue, 3 green; 2 green, 12 blue, 9 red; 2 green, 17 blue, 5 red; 1 red, 1 green, 4 blue; 9 red, 16 blue; 7 blue, 9 red 66 | Game 66: 10 blue, 10 green, 5 red; 10 green, 3 blue, 5 red; 1 red, 1 green, 10 blue; 2 green, 5 red, 20 blue; 8 blue, 11 green, 13 red; 2 green, 18 blue, 2 red 67 | Game 67: 6 red, 1 green; 5 red, 10 blue; 6 blue, 6 red 68 | Game 68: 4 green, 1 red, 5 blue; 5 red, 5 blue; 7 red, 6 green; 8 red, 1 blue 69 | Game 69: 2 blue, 11 red; 4 red, 6 green, 1 blue; 4 red, 1 blue, 14 green 70 | Game 70: 15 red, 8 blue, 5 green; 5 green, 2 red, 8 blue; 8 red, 3 green, 10 blue 71 | Game 71: 4 blue, 2 red; 12 green, 4 blue; 10 green 72 | Game 72: 3 blue, 4 green, 6 red; 6 red, 5 green, 8 blue; 10 red, 6 green, 5 blue; 1 green, 2 blue; 10 red, 5 blue, 4 green 73 | Game 73: 5 blue, 1 red; 1 green, 11 blue; 10 blue; 12 blue, 1 red; 1 red, 9 blue; 7 blue, 1 green, 1 red 74 | Game 74: 7 green, 6 blue, 7 red; 7 blue, 6 green, 15 red; 7 red, 5 blue, 1 green; 1 blue, 6 red, 8 green; 8 green, 14 red, 3 blue 75 | Game 75: 8 green, 3 red, 3 blue; 1 blue, 6 red, 7 green; 9 green, 3 blue; 3 blue, 9 green, 6 red; 4 blue, 1 red, 3 green; 4 green, 1 blue, 16 red 76 | Game 76: 4 blue, 3 green; 2 blue, 1 red, 6 green; 12 blue; 1 green, 14 blue 77 | Game 77: 5 green, 10 red, 11 blue; 3 red; 8 green, 6 red, 9 blue 78 | Game 78: 7 red, 7 green; 8 blue; 6 green, 7 red, 5 blue 79 | Game 79: 11 blue, 2 red, 4 green; 2 green, 3 red, 15 blue; 1 green, 15 blue, 1 red 80 | Game 80: 3 red, 17 green, 8 blue; 8 green, 10 blue; 4 green, 1 red, 14 blue 81 | Game 81: 17 green, 10 red, 10 blue; 9 green, 9 blue, 7 red; 11 red, 11 green, 4 blue; 15 blue, 5 red; 11 blue, 8 green, 15 red; 3 green, 16 red 82 | Game 82: 8 green, 9 blue, 1 red; 1 red, 8 green, 9 blue; 2 green, 12 blue 83 | Game 83: 2 green, 11 red, 20 blue; 20 blue, 1 green, 4 red; 2 green, 6 red, 20 blue; 17 blue, 10 red 84 | Game 84: 1 green, 9 red; 4 blue, 4 green; 1 green, 6 red, 14 blue 85 | Game 85: 5 red, 10 green, 9 blue; 8 blue, 3 green, 2 red; 4 blue, 14 green, 3 red; 5 red, 4 blue 86 | Game 86: 8 blue, 9 green, 5 red; 5 red, 10 green, 1 blue; 15 blue, 1 red, 2 green; 8 red, 8 blue, 10 green 87 | Game 87: 13 green, 2 red, 4 blue; 3 red, 11 green, 9 blue; 6 blue, 3 red, 12 green 88 | Game 88: 2 red, 7 blue, 3 green; 2 blue, 9 red; 9 red, 6 blue, 7 green; 6 green, 13 blue, 9 red; 6 green, 2 red, 15 blue; 1 red, 8 green, 7 blue 89 | Game 89: 11 red, 1 blue, 2 green; 6 blue, 5 green, 4 red; 15 red, 4 green, 5 blue; 11 red, 3 blue, 10 green; 6 blue, 13 green, 12 red 90 | Game 90: 2 red, 2 blue, 4 green; 2 red, 2 blue; 9 green, 1 red, 1 blue; 5 green, 1 red; 7 green, 2 red; 2 green, 1 blue 91 | Game 91: 5 blue, 3 red, 1 green; 1 red, 4 blue, 6 green; 6 blue, 6 green, 5 red 92 | Game 92: 16 green, 1 blue, 12 red; 18 green, 14 red, 1 blue; 16 red, 1 green; 4 blue, 16 red, 18 green 93 | Game 93: 9 red, 8 blue, 14 green; 1 blue, 1 green, 6 red; 4 blue, 4 red, 14 green 94 | Game 94: 11 green, 4 blue, 2 red; 1 red, 1 green, 1 blue; 4 red, 1 blue, 2 green 95 | Game 95: 5 blue, 2 red, 9 green; 5 blue, 8 green; 1 green, 15 blue; 5 red, 9 green, 5 blue; 3 green, 17 blue, 5 red 96 | Game 96: 2 green, 14 blue, 1 red; 3 green, 3 red, 14 blue; 2 red, 2 green, 13 blue 97 | Game 97: 2 green, 2 red; 2 blue, 1 green; 7 blue, 3 red 98 | Game 98: 2 red, 1 blue, 12 green; 2 blue, 10 green, 5 red; 11 green, 9 blue; 6 blue, 17 green; 7 blue, 9 green, 9 red; 1 red, 11 green, 9 blue 99 | Game 99: 2 green, 9 red, 1 blue; 3 green, 1 blue, 14 red; 5 green, 6 blue; 1 blue, 2 green, 3 red; 4 blue, 10 red, 1 green 100 | Game 100: 4 green, 4 blue, 15 red; 3 green, 1 red, 13 blue; 5 green, 5 blue, 10 red -------------------------------------------------------------------------------- /day2/part2.txt: -------------------------------------------------------------------------------- 1 | Game 1: 1 green, 2 red, 6 blue; 4 red, 1 green, 3 blue; 7 blue, 5 green; 6 blue, 2 red, 1 green 2 | Game 2: 1 green, 17 red; 1 blue, 6 red, 7 green; 2 blue, 4 red, 7 green; 1 green, 6 red, 2 blue 3 | Game 3: 6 red, 15 blue, 15 green; 1 green, 4 red, 12 blue; 14 blue, 9 red, 1 green; 2 red, 15 blue, 12 green 4 | Game 4: 8 green, 10 blue, 6 red; 20 blue, 4 red; 17 blue, 2 green, 3 red; 4 blue, 2 green, 3 red; 10 red, 3 blue, 3 green; 5 green, 14 blue, 6 red 5 | Game 5: 3 green, 8 blue, 2 red; 11 red, 6 green, 11 blue; 8 red, 5 blue, 2 green 6 | Game 6: 2 blue, 12 red, 2 green; 3 green, 2 red; 3 green, 3 blue, 10 red; 7 red, 2 blue, 4 green; 1 red, 2 blue, 5 green 7 | Game 7: 1 red, 8 blue, 2 green; 1 red, 2 blue, 12 green; 1 blue; 3 blue, 3 green 8 | Game 8: 10 green, 4 red, 4 blue; 12 green, 1 blue; 1 red, 13 green, 2 blue; 12 green, 3 blue; 9 green, 7 red 9 | Game 9: 1 green, 1 blue, 3 red; 3 blue, 3 red, 8 green; 6 blue, 4 red, 6 green; 2 red, 7 green; 1 red, 10 green, 13 blue; 5 red, 1 blue, 1 green 10 | Game 10: 9 green, 3 red, 3 blue; 12 green, 2 blue; 18 green, 1 blue; 14 green; 2 blue, 9 green, 2 red 11 | Game 11: 14 green; 2 green, 2 red, 11 blue; 9 blue, 3 green 12 | Game 12: 9 green, 3 blue, 8 red; 1 green, 2 blue, 3 red; 4 blue, 8 red, 10 green; 3 blue, 7 red, 8 green; 3 blue, 5 red, 7 green; 2 blue, 5 green 13 | Game 13: 6 red, 1 blue, 10 green; 7 red, 1 green; 8 red, 2 green, 1 blue 14 | Game 14: 2 red, 4 blue, 2 green; 2 green, 5 red, 1 blue; 1 red, 6 blue 15 | Game 15: 7 blue, 3 red; 13 blue, 8 red, 1 green; 1 green, 5 red, 13 blue; 8 red, 5 blue; 4 red, 3 blue, 1 green; 12 blue, 8 red, 1 green 16 | Game 16: 5 blue, 1 green, 2 red; 2 blue, 20 green; 4 blue, 1 red, 17 green; 10 green, 5 blue, 2 red 17 | Game 17: 6 red, 13 blue, 8 green; 12 blue, 7 green, 9 red; 19 blue, 5 red; 2 green, 8 red, 14 blue 18 | Game 18: 5 red, 2 green, 1 blue; 8 blue, 17 red, 9 green; 2 blue, 1 green; 4 blue, 10 red; 5 blue, 4 red, 6 green 19 | Game 19: 5 red, 12 green; 8 red, 13 green, 1 blue; 1 red, 1 green, 3 blue; 5 green, 5 red 20 | Game 20: 11 red, 8 blue; 9 red, 2 green, 13 blue; 2 red, 1 green, 2 blue; 1 green, 9 blue, 13 red; 3 blue, 5 red, 1 green 21 | Game 21: 1 red, 4 green, 11 blue; 3 green, 15 blue; 6 green, 7 red, 14 blue; 15 blue, 6 green, 10 red; 6 red, 16 blue, 2 green 22 | Game 22: 2 blue, 15 green, 2 red; 3 blue, 6 green, 1 red; 2 blue, 5 green, 1 red; 6 green, 2 red, 2 blue; 4 green, 2 blue; 4 blue, 1 red, 15 green 23 | Game 23: 2 blue, 1 green, 12 red; 5 blue, 11 red, 4 green; 12 red, 4 blue; 12 red, 2 green, 5 blue 24 | Game 24: 4 blue, 7 red; 3 red, 3 blue; 1 red, 4 blue; 2 green, 6 red, 6 blue; 7 red, 1 green, 2 blue; 6 red, 1 blue, 1 green 25 | Game 25: 5 green, 9 blue; 6 green, 7 red, 2 blue; 1 red, 3 blue, 7 green; 9 blue, 3 red; 5 green, 9 blue, 2 red 26 | Game 26: 6 red, 4 blue; 2 blue, 4 green; 3 green, 5 red, 5 blue; 4 green, 6 red, 3 blue; 4 green, 7 red, 4 blue 27 | Game 27: 15 green, 1 blue, 12 red; 12 red, 1 green; 1 red, 1 blue, 5 green; 13 green, 6 red, 1 blue; 5 red, 1 blue, 1 green; 11 red, 14 green 28 | Game 28: 3 blue, 2 green, 10 red; 5 blue, 2 green; 4 green, 3 blue, 11 red 29 | Game 29: 10 blue, 2 red; 17 green, 7 blue, 2 red; 1 blue, 8 green, 1 red; 10 green, 2 red, 3 blue 30 | Game 30: 10 green, 8 red, 1 blue; 4 blue, 7 green, 14 red; 2 blue, 14 red, 11 green; 1 blue, 13 green, 12 red; 5 blue, 2 red, 4 green; 4 green, 5 red 31 | Game 31: 4 green, 11 red, 11 blue; 3 blue, 11 red; 5 blue, 7 red, 3 green; 10 blue, 5 green, 1 red 32 | Game 32: 4 red, 8 blue, 1 green; 14 red, 7 blue, 4 green; 13 red, 3 blue, 9 green; 3 red, 1 green, 8 blue; 8 green, 8 red, 5 blue 33 | Game 33: 6 red, 10 blue, 7 green; 19 blue, 1 red; 6 green, 11 red, 11 blue; 2 green, 2 blue, 12 red; 3 red, 13 blue, 7 green; 6 green, 4 red, 2 blue 34 | Game 34: 3 red, 3 green, 15 blue; 7 green, 15 blue; 3 red, 2 green, 8 blue; 19 green, 18 blue 35 | Game 35: 2 green, 1 blue; 2 green, 2 blue, 1 red; 3 blue, 1 red, 1 green; 4 blue, 1 red 36 | Game 36: 1 red, 11 green; 1 green, 1 blue; 8 blue; 2 green, 3 red; 1 red 37 | Game 37: 4 blue, 3 red; 12 blue, 13 red; 2 red, 2 green, 8 blue 38 | Game 38: 8 red, 2 blue; 1 green, 2 red; 8 red, 2 green, 1 blue; 16 red, 2 green; 7 red, 2 blue, 2 green 39 | Game 39: 6 green, 1 blue, 5 red; 14 green, 8 blue, 6 red; 8 red, 10 blue, 1 green; 14 green, 9 red; 17 blue, 5 red; 1 blue, 7 green, 1 red 40 | Game 40: 4 red, 8 blue, 3 green; 13 blue, 1 red; 3 blue, 7 red, 3 green; 3 green, 8 blue, 10 red; 3 green, 20 blue, 5 red 41 | Game 41: 1 blue, 2 green; 11 green, 2 blue; 5 blue; 15 red, 8 green, 5 blue 42 | Game 42: 1 green, 12 blue, 1 red; 6 blue, 1 green, 5 red; 1 red, 11 blue, 4 green; 3 red, 17 blue, 1 green; 1 red, 11 blue; 9 blue, 6 green, 3 red 43 | Game 43: 16 blue, 13 green, 1 red; 17 blue, 7 red, 10 green; 13 green, 5 red, 7 blue 44 | Game 44: 2 blue, 4 red; 15 green, 7 red; 2 green, 1 blue; 6 red, 13 green 45 | Game 45: 5 green, 1 blue, 8 red; 4 red, 1 blue, 5 green; 1 green, 3 red; 1 green, 2 blue, 6 red; 4 red, 3 green, 2 blue; 2 red, 2 blue, 5 green 46 | Game 46: 1 green, 1 red, 6 blue; 11 blue; 1 red, 1 green, 7 blue; 8 blue; 1 green, 7 blue, 2 red 47 | Game 47: 7 green, 9 blue, 7 red; 11 red, 13 blue, 5 green; 12 green, 12 blue, 5 red; 4 blue, 8 green, 7 red 48 | Game 48: 11 green, 7 red, 2 blue; 2 blue, 10 green, 3 red; 1 blue, 2 red, 1 green; 4 green, 2 red, 7 blue; 7 red, 4 green, 2 blue 49 | Game 49: 1 red, 2 blue, 5 green; 2 green, 4 blue; 5 blue, 2 green, 1 red; 9 blue, 1 green; 7 blue 50 | Game 50: 8 green, 9 blue, 2 red; 2 green, 5 blue; 14 green, 1 red, 8 blue 51 | Game 51: 1 green, 2 blue; 12 blue, 1 red; 2 blue 52 | Game 52: 3 red, 2 blue, 2 green; 4 red, 4 green, 7 blue; 2 blue, 4 red, 1 green; 3 green; 1 red, 9 green, 7 blue 53 | Game 53: 9 blue, 12 red, 7 green; 8 blue, 6 green; 1 green, 8 blue, 9 red; 12 red, 6 green; 9 blue, 14 red, 10 green; 7 red, 3 green, 5 blue 54 | Game 54: 8 green, 5 blue, 5 red; 4 green, 13 blue, 2 red; 2 blue, 5 red, 1 green; 3 red, 3 green, 10 blue 55 | Game 55: 17 red, 15 green, 17 blue; 6 red, 5 green, 7 blue; 17 green, 6 blue, 5 red 56 | Game 56: 7 blue, 6 red, 7 green; 10 green, 3 red; 9 red, 3 blue, 5 green 57 | Game 57: 5 blue, 11 red, 1 green; 13 red, 1 green, 2 blue; 2 blue, 4 red; 1 green, 10 red, 1 blue; 1 green, 8 red 58 | Game 58: 1 red, 2 green, 9 blue; 1 green, 1 blue, 1 red; 2 red, 6 blue, 2 green; 14 blue, 1 green, 1 red; 5 blue, 1 red, 2 green; 14 blue, 2 green 59 | Game 59: 9 green, 2 blue, 5 red; 9 red, 5 green; 10 red, 1 blue, 8 green 60 | Game 60: 8 blue, 6 red, 4 green; 3 red, 12 green, 9 blue; 4 blue, 5 red, 5 green; 4 red, 8 blue; 7 green, 12 blue, 6 red 61 | Game 61: 5 blue, 13 red, 1 green; 5 red, 5 blue; 1 red, 3 blue; 1 green, 9 red; 10 red, 3 blue, 1 green 62 | Game 62: 1 blue, 13 red; 4 blue, 5 red; 11 blue, 8 red, 1 green 63 | Game 63: 14 blue, 5 red; 9 blue, 14 green, 5 red; 3 red, 8 green, 15 blue; 4 blue, 15 green, 6 red 64 | Game 64: 13 red, 6 blue, 11 green; 12 red, 1 blue, 8 green; 1 red, 17 green; 13 red, 12 green, 7 blue 65 | Game 65: 4 red, 17 blue, 3 green; 2 green, 12 blue, 9 red; 2 green, 17 blue, 5 red; 1 red, 1 green, 4 blue; 9 red, 16 blue; 7 blue, 9 red 66 | Game 66: 10 blue, 10 green, 5 red; 10 green, 3 blue, 5 red; 1 red, 1 green, 10 blue; 2 green, 5 red, 20 blue; 8 blue, 11 green, 13 red; 2 green, 18 blue, 2 red 67 | Game 67: 6 red, 1 green; 5 red, 10 blue; 6 blue, 6 red 68 | Game 68: 4 green, 1 red, 5 blue; 5 red, 5 blue; 7 red, 6 green; 8 red, 1 blue 69 | Game 69: 2 blue, 11 red; 4 red, 6 green, 1 blue; 4 red, 1 blue, 14 green 70 | Game 70: 15 red, 8 blue, 5 green; 5 green, 2 red, 8 blue; 8 red, 3 green, 10 blue 71 | Game 71: 4 blue, 2 red; 12 green, 4 blue; 10 green 72 | Game 72: 3 blue, 4 green, 6 red; 6 red, 5 green, 8 blue; 10 red, 6 green, 5 blue; 1 green, 2 blue; 10 red, 5 blue, 4 green 73 | Game 73: 5 blue, 1 red; 1 green, 11 blue; 10 blue; 12 blue, 1 red; 1 red, 9 blue; 7 blue, 1 green, 1 red 74 | Game 74: 7 green, 6 blue, 7 red; 7 blue, 6 green, 15 red; 7 red, 5 blue, 1 green; 1 blue, 6 red, 8 green; 8 green, 14 red, 3 blue 75 | Game 75: 8 green, 3 red, 3 blue; 1 blue, 6 red, 7 green; 9 green, 3 blue; 3 blue, 9 green, 6 red; 4 blue, 1 red, 3 green; 4 green, 1 blue, 16 red 76 | Game 76: 4 blue, 3 green; 2 blue, 1 red, 6 green; 12 blue; 1 green, 14 blue 77 | Game 77: 5 green, 10 red, 11 blue; 3 red; 8 green, 6 red, 9 blue 78 | Game 78: 7 red, 7 green; 8 blue; 6 green, 7 red, 5 blue 79 | Game 79: 11 blue, 2 red, 4 green; 2 green, 3 red, 15 blue; 1 green, 15 blue, 1 red 80 | Game 80: 3 red, 17 green, 8 blue; 8 green, 10 blue; 4 green, 1 red, 14 blue 81 | Game 81: 17 green, 10 red, 10 blue; 9 green, 9 blue, 7 red; 11 red, 11 green, 4 blue; 15 blue, 5 red; 11 blue, 8 green, 15 red; 3 green, 16 red 82 | Game 82: 8 green, 9 blue, 1 red; 1 red, 8 green, 9 blue; 2 green, 12 blue 83 | Game 83: 2 green, 11 red, 20 blue; 20 blue, 1 green, 4 red; 2 green, 6 red, 20 blue; 17 blue, 10 red 84 | Game 84: 1 green, 9 red; 4 blue, 4 green; 1 green, 6 red, 14 blue 85 | Game 85: 5 red, 10 green, 9 blue; 8 blue, 3 green, 2 red; 4 blue, 14 green, 3 red; 5 red, 4 blue 86 | Game 86: 8 blue, 9 green, 5 red; 5 red, 10 green, 1 blue; 15 blue, 1 red, 2 green; 8 red, 8 blue, 10 green 87 | Game 87: 13 green, 2 red, 4 blue; 3 red, 11 green, 9 blue; 6 blue, 3 red, 12 green 88 | Game 88: 2 red, 7 blue, 3 green; 2 blue, 9 red; 9 red, 6 blue, 7 green; 6 green, 13 blue, 9 red; 6 green, 2 red, 15 blue; 1 red, 8 green, 7 blue 89 | Game 89: 11 red, 1 blue, 2 green; 6 blue, 5 green, 4 red; 15 red, 4 green, 5 blue; 11 red, 3 blue, 10 green; 6 blue, 13 green, 12 red 90 | Game 90: 2 red, 2 blue, 4 green; 2 red, 2 blue; 9 green, 1 red, 1 blue; 5 green, 1 red; 7 green, 2 red; 2 green, 1 blue 91 | Game 91: 5 blue, 3 red, 1 green; 1 red, 4 blue, 6 green; 6 blue, 6 green, 5 red 92 | Game 92: 16 green, 1 blue, 12 red; 18 green, 14 red, 1 blue; 16 red, 1 green; 4 blue, 16 red, 18 green 93 | Game 93: 9 red, 8 blue, 14 green; 1 blue, 1 green, 6 red; 4 blue, 4 red, 14 green 94 | Game 94: 11 green, 4 blue, 2 red; 1 red, 1 green, 1 blue; 4 red, 1 blue, 2 green 95 | Game 95: 5 blue, 2 red, 9 green; 5 blue, 8 green; 1 green, 15 blue; 5 red, 9 green, 5 blue; 3 green, 17 blue, 5 red 96 | Game 96: 2 green, 14 blue, 1 red; 3 green, 3 red, 14 blue; 2 red, 2 green, 13 blue 97 | Game 97: 2 green, 2 red; 2 blue, 1 green; 7 blue, 3 red 98 | Game 98: 2 red, 1 blue, 12 green; 2 blue, 10 green, 5 red; 11 green, 9 blue; 6 blue, 17 green; 7 blue, 9 green, 9 red; 1 red, 11 green, 9 blue 99 | Game 99: 2 green, 9 red, 1 blue; 3 green, 1 blue, 14 red; 5 green, 6 blue; 1 blue, 2 green, 3 red; 4 blue, 10 red, 1 green 100 | Game 100: 4 green, 4 blue, 15 red; 3 green, 1 red, 13 blue; 5 green, 5 blue, 10 red -------------------------------------------------------------------------------- /day7/src/input/input.txt: -------------------------------------------------------------------------------- 1 | Q4QKK 465 2 | 28555 580 3 | JJQK2 602 4 | 84448 722 5 | 7QQ7Q 734 6 | KKKAK 278 7 | JQ274 574 8 | 9J242 805 9 | A33AK 619 10 | TAK9T 659 11 | 34QK8 514 12 | 23273 199 13 | T8TT8 318 14 | 333TT 101 15 | 5A955 482 16 | TT5KJ 784 17 | 59K37 126 18 | T59TQ 890 19 | 3K549 806 20 | 37QQ3 655 21 | TJ5T4 958 22 | 8Q7KQ 148 23 | 888AT 868 24 | 4KKKA 67 25 | QQQ8Q 520 26 | 555Q5 325 27 | 8T4K2 132 28 | K32Q5 399 29 | QQ455 937 30 | 55QQQ 592 31 | 63T89 220 32 | 434Q4 254 33 | 88KK8 944 34 | 79799 793 35 | KJKKK 725 36 | 99J59 70 37 | 73777 788 38 | 5892A 641 39 | J8JJJ 26 40 | 76676 336 41 | 55T5T 354 42 | 5755T 431 43 | 22299 746 44 | 82462 803 45 | 3J63J 408 46 | 95999 711 47 | Q59K6 511 48 | QKJK4 977 49 | QQKK9 606 50 | QQ9Q9 47 51 | A2TQ5 214 52 | 68A88 281 53 | TQA64 453 54 | T4633 648 55 | 95959 53 56 | 23377 293 57 | 39993 844 58 | 8QTT8 974 59 | 95655 10 60 | AAQ4Q 773 61 | 69243 213 62 | 44244 953 63 | 6297T 850 64 | KAAK4 443 65 | Q77J2 865 66 | J4A3A 651 67 | 3Q7Q7 163 68 | 9A28T 129 69 | J2277 68 70 | AAAAT 568 71 | T33TT 907 72 | KA3Q9 942 73 | 67787 21 74 | 9TAJA 751 75 | K6KKK 485 76 | 5T4J5 900 77 | 3TKTK 207 78 | 4KQQ4 961 79 | TTQ4T 613 80 | K6TQ4 906 81 | A8K8Q 965 82 | 63QJ5 807 83 | 597Q7 634 84 | 64664 723 85 | 63479 505 86 | JQQ7Q 870 87 | JT888 185 88 | 7JTQ8 650 89 | 9888J 7 90 | 6646T 405 91 | 9J66J 140 92 | 2JT22 194 93 | K5KKK 361 94 | T7T79 274 95 | 33535 758 96 | 27638 314 97 | 99699 49 98 | K2QQQ 351 99 | 2K72K 92 100 | J63KK 702 101 | J7KT5 795 102 | J6KJ5 770 103 | 97K99 928 104 | K376Q 139 105 | 882AT 34 106 | KK8K8 995 107 | 98AQA 894 108 | 5928Q 364 109 | AA6A5 633 110 | T96Q4 249 111 | 96696 567 112 | AQ9A5 855 113 | Q6Q44 335 114 | 6K2A8 763 115 | 7665Q 295 116 | J7364 89 117 | 88848 875 118 | 285K3 623 119 | 6932T 735 120 | 999T6 484 121 | 77888 903 122 | J8888 261 123 | 324A2 610 124 | Q6Q53 662 125 | 83QTQ 499 126 | J6666 256 127 | 5Q5Q2 507 128 | T6A4K 787 129 | J5AT5 210 130 | AQ39Q 400 131 | 8K6K2 331 132 | J3Q44 280 133 | KK8KK 926 134 | 66784 923 135 | 87K88 142 136 | 7J235 445 137 | 4QQ44 676 138 | 84KKK 30 139 | 65J56 169 140 | 3AA3A 631 141 | QTQ4Q 760 142 | A5A5J 342 143 | 5QT5T 674 144 | 9K549 776 145 | T2232 343 146 | 96Q66 616 147 | 8J899 597 148 | J76A6 116 149 | 77388 321 150 | 53333 433 151 | KK797 394 152 | 9J53Q 545 153 | 5K9KK 985 154 | 66868 874 155 | J6T63 654 156 | 9A333 696 157 | 678JJ 738 158 | AATAT 812 159 | AAT6J 801 160 | JTTQK 441 161 | 75757 993 162 | JQ4QQ 523 163 | 222JJ 671 164 | Q5552 459 165 | 944J9 133 166 | 69A8A 588 167 | A75K6 872 168 | KKK44 661 169 | 2K43Q 83 170 | 3KKKK 350 171 | 47773 887 172 | 35858 710 173 | K65T9 731 174 | ATQ8J 496 175 | 8K484 397 176 | TT9QT 157 177 | 2J332 630 178 | 5K3K4 743 179 | 68J26 135 180 | 555J5 975 181 | K4KQT 452 182 | QAAAA 884 183 | 8J4J9 398 184 | 4TJ77 679 185 | 55585 93 186 | J9A4T 182 187 | 42942 503 188 | 5JK2A 151 189 | 2T2K7 672 190 | 4Q2T5 563 191 | 22422 291 192 | 28868 947 193 | KT7KK 759 194 | JQQ88 31 195 | 8273K 54 196 | 55588 418 197 | 5K28K 849 198 | 2Q279 896 199 | 65995 590 200 | 723A4 598 201 | 6KA74 127 202 | KK333 284 203 | 44696 714 204 | 777Q7 277 205 | K469A 673 206 | 433QJ 862 207 | A4442 512 208 | 66624 665 209 | 8AA88 536 210 | 7777J 268 211 | A7575 586 212 | 7K42Q 789 213 | 6A32A 159 214 | T97Q6 218 215 | KJA5J 108 216 | 363AJ 510 217 | 4JAT7 960 218 | 88898 534 219 | 2Q2J7 383 220 | 57A9T 852 221 | TJ9TQ 750 222 | 9T748 775 223 | QTA83 13 224 | 4KK5K 701 225 | Q8482 72 226 | 66655 109 227 | 6TTTT 381 228 | A33JA 779 229 | 62AAA 968 230 | 3KA2Q 924 231 | 2J54A 444 232 | 6A285 886 233 | 63697 595 234 | 459QA 134 235 | JK5KQ 41 236 | 34628 231 237 | 94544 446 238 | K6JK6 824 239 | KKTT6 815 240 | 22229 327 241 | 88TT8 916 242 | K6J56 2 243 | T7A73 945 244 | 2J222 555 245 | 727T2 106 246 | K5664 390 247 | KJ77Q 326 248 | 555A5 272 249 | 55757 943 250 | 33447 128 251 | 4A37Q 462 252 | 7JJ2T 609 253 | 5T2T5 920 254 | 49932 219 255 | 9J297 221 256 | QK2J2 332 257 | J23KK 745 258 | 8A5K4 854 259 | 374K5 371 260 | 35Q7T 663 261 | 666T6 721 262 | 9K9Q3 842 263 | J55J2 73 264 | AT6AA 969 265 | 2TAQK 689 266 | KQ9QQ 486 267 | 99KJ9 996 268 | 4894Q 774 269 | T9J8Q 61 270 | TK6T6 488 271 | 7777K 226 272 | 77767 922 273 | K5QK8 12 274 | 45444 740 275 | 4A448 752 276 | A8793 426 277 | 3393J 771 278 | 7JTTT 830 279 | 434J9 938 280 | 66656 470 281 | 6JJ66 333 282 | 444J4 170 283 | 33JJJ 800 284 | Q2K79 467 285 | 254JK 757 286 | 9994Q 186 287 | 94499 804 288 | J86K6 908 289 | J8K8K 946 290 | 4276T 164 291 | K9QAA 695 292 | 779AT 519 293 | 7K463 660 294 | 55454 208 295 | KK8K9 339 296 | QJJK9 146 297 | 6K3J6 538 298 | 38T79 732 299 | 6QQ6Q 474 300 | Q8J4K 299 301 | 99T99 475 302 | 3JK42 87 303 | T8Q8J 107 304 | Q4QQK 682 305 | 3J333 811 306 | 54662 744 307 | JJ4J2 972 308 | 2QA87 473 309 | 249TK 51 310 | 65JA9 251 311 | AAA6A 871 312 | QTT73 222 313 | 44J45 670 314 | 47747 3 315 | 2T299 604 316 | 9A922 122 317 | 4T428 359 318 | 4744T 814 319 | 944QQ 532 320 | 28JA8 522 321 | JJJJJ 230 322 | 88432 910 323 | K6TAJ 315 324 | K7AA3 544 325 | 6729J 600 326 | 95QQQ 300 327 | T7J77 976 328 | J448T 587 329 | 72J58 412 330 | T8888 168 331 | 83333 450 332 | 98Q9T 298 333 | 5249Q 352 334 | 58656 558 335 | 347JA 579 336 | 27222 893 337 | 4QK82 131 338 | 5TTT8 994 339 | 43494 454 340 | 474TT 458 341 | 22338 728 342 | 77AJ8 562 343 | 86633 410 344 | Q7J5A 501 345 | 955J2 242 346 | QQQ79 835 347 | ATAQT 525 348 | A5AAA 178 349 | 39287 289 350 | KTKQK 845 351 | 364K2 449 352 | AK3A2 259 353 | 627J2 138 354 | K8K82 285 355 | 66669 794 356 | 6Q2TA 911 357 | TTJTJ 24 358 | KKK33 997 359 | QKKQK 372 360 | 3K7QQ 264 361 | 62994 175 362 | 3T244 227 363 | Q77K7 14 364 | 88568 44 365 | 8JT98 404 366 | 7277Q 250 367 | 66555 529 368 | 2KJK2 709 369 | 94T85 263 370 | T6652 313 371 | 53555 113 372 | J5T88 432 373 | Q6949 624 374 | TKTA8 202 375 | 96667 748 376 | 4AAAA 491 377 | 4A4K4 329 378 | 6252K 998 379 | 4Q269 347 380 | Q3QQ3 95 381 | 488J6 262 382 | 99J9Q 100 383 | 82T77 591 384 | 35T22 362 385 | Q7KQQ 691 386 | A56A5 22 387 | 649Q4 898 388 | 53J22 301 389 | J4Q5Q 569 390 | 585QJ 81 391 | 82528 495 392 | K6TTT 32 393 | Q2222 737 394 | 2Q5T5 990 395 | Q888Q 341 396 | 8Q866 416 397 | 4449A 508 398 | 88KQQ 819 399 | AA274 879 400 | K8Q88 160 401 | 26TK5 237 402 | JJQQQ 492 403 | K52QA 490 404 | JJ974 223 405 | 7T846 136 406 | 32236 820 407 | 9AJ9A 239 408 | J6QQQ 380 409 | 97Q94 970 410 | 56552 856 411 | 6QQTQ 905 412 | JJ5AA 837 413 | K9TT9 103 414 | 8A9TA 267 415 | J8AA4 196 416 | 2ATAQ 897 417 | JQTJQ 279 418 | TTT2T 699 419 | T2TJ2 966 420 | JJ5J5 294 421 | J4K4K 60 422 | 63KKK 768 423 | AAAA7 38 424 | K4J44 502 425 | 23493 888 426 | 666KK 831 427 | TAQ58 434 428 | AK75T 319 429 | 565A8 769 430 | 58K88 705 431 | 97579 506 432 | TTQTT 120 433 | 5QQJ8 77 434 | 55KJ5 328 435 | Q6T3T 375 436 | KQ9T6 476 437 | 9K777 305 438 | TT5TT 581 439 | 5557K 955 440 | 69869 91 441 | Q6925 367 442 | 9624J 530 443 | 9A9A2 550 444 | 5854J 71 445 | T588T 857 446 | 74QA4 1 447 | 5TJ83 956 448 | T797J 413 449 | T6534 935 450 | T93T3 162 451 | 7A488 859 452 | 737A3 19 453 | 72877 195 454 | 3QAAA 78 455 | 44449 927 456 | 77792 420 457 | 43227 537 458 | K986T 84 459 | 3J444 754 460 | 83AA5 436 461 | 89T55 553 462 | 86JT6 603 463 | J22JT 461 464 | KQ8QQ 309 465 | 82292 43 466 | J6QQA 211 467 | T986J 62 468 | 38383 382 469 | 4AQ6Q 614 470 | 2223J 42 471 | 8T36A 435 472 | JTTAT 66 473 | 44QJQ 829 474 | 9TTTT 236 475 | JAJ4A 959 476 | 4QJ4J 621 477 | 34333 235 478 | Q2Q79 245 479 | Q2A22 388 480 | QQ44Q 635 481 | 58A54 539 482 | 26A87 440 483 | 727A9 149 484 | J33Q6 406 485 | 6479T 627 486 | KK66K 419 487 | 3333T 664 488 | KK9KK 317 489 | J2Q2Q 306 490 | K5K5K 201 491 | 44224 63 492 | 6644J 322 493 | QQQ3J 96 494 | A4AK4 212 495 | K46JQ 557 496 | J656J 608 497 | JAJAA 584 498 | K5KK8 615 499 | AAAA2 889 500 | T6T66 478 501 | QQTJ3 494 502 | 5QQ75 16 503 | 492QJ 909 504 | JKK9K 411 505 | 346KQ 144 506 | J27A7 403 507 | 88QQ4 707 508 | T6579 866 509 | TT669 358 510 | TKT84 847 511 | QAJQ4 848 512 | 9J9JA 229 513 | 3443A 479 514 | 455J3 154 515 | 43QQ3 762 516 | A9449 246 517 | JK666 417 518 | 5588J 448 519 | 5KAQ3 427 520 | 62A47 58 521 | K4Q74 632 522 | 9999Q 468 523 | 37537 785 524 | 8KT74 166 525 | K93Q2 428 526 | 2QQ5Q 688 527 | A6A22 873 528 | 5986A 424 529 | 74T36 677 530 | J3958 46 531 | 4J4Q4 451 532 | 64654 863 533 | 58TK3 409 534 | JK6KJ 348 535 | Q8QQJ 666 536 | QQQ53 35 537 | JAK28 839 538 | 6KKJK 713 539 | 23567 792 540 | QQ5QQ 147 541 | J9447 582 542 | 77QQ7 963 543 | 4T84K 204 544 | 44747 583 545 | K858Q 307 546 | 76J5A 542 547 | A57Q8 180 548 | 22262 252 549 | 7J689 105 550 | 44844 836 551 | 76674 23 552 | 7A22A 29 553 | 7JT56 570 554 | 7857J 456 555 | 9Q685 215 556 | 83878 190 557 | 277A7 172 558 | T5T5T 500 559 | 64464 477 560 | 4T445 65 561 | A43Q9 152 562 | JT5J7 310 563 | TTK55 715 564 | 7K85J 365 565 | 4A4AA 98 566 | Q68QJ 952 567 | 6T266 929 568 | 2442T 629 569 | 6A776 119 570 | Q57K2 369 571 | 555JJ 187 572 | 525TJ 438 573 | Q99K7 980 574 | Q9888 657 575 | 85854 967 576 | QK85T 930 577 | 332A3 667 578 | QJQQQ 243 579 | AAAA3 121 580 | 44TQT 270 581 | K35T6 637 582 | TJ7Q7 559 583 | TJT85 797 584 | J6J25 853 585 | J6348 593 586 | 7T6T7 498 587 | J222Q 877 588 | Q4QQQ 112 589 | Q93KQ 117 590 | 48934 258 591 | 44465 817 592 | AA66A 253 593 | TJTT2 167 594 | K67QK 384 595 | T2292 430 596 | 77337 344 597 | T99J8 192 598 | 334J4 982 599 | 2J939 833 600 | 23229 353 601 | TJ6Q5 912 602 | 36T8K 755 603 | 2822J 535 604 | 48446 5 605 | A8QA5 988 606 | 4J464 130 607 | K9K88 694 608 | A4777 266 609 | 888T9 17 610 | 33QQ3 639 611 | 67868 643 612 | T78T7 248 613 | 6382Q 577 614 | 444Q7 596 615 | 2222K 981 616 | 99KK4 288 617 | TJ4T4 575 618 | QTJTT 99 619 | 33QAA 97 620 | 525J5 189 621 | 24QQ3 864 622 | 8465J 936 623 | T48KA 571 624 | JT9TT 255 625 | 6Q6J8 517 626 | 24999 387 627 | TKAQJ 687 628 | 93944 914 629 | JT4Q3 158 630 | T76QT 481 631 | 48T9Q 225 632 | JJA6J 141 633 | 95555 549 634 | 4JK37 686 635 | 62662 197 636 | 68QA7 566 637 | J3742 747 638 | J8K9K 287 639 | QJ4J3 638 640 | AAKKK 607 641 | 72A6T 948 642 | JK2KK 878 643 | 67337 978 644 | TT8TT 895 645 | A8A8A 181 646 | 4K977 939 647 | K44AQ 102 648 | 5T264 33 649 | 54TQK 183 650 | 6K666 340 651 | KT9KK 366 652 | 3QQ9Q 742 653 | 5K829 311 654 | 2KK77 576 655 | 67A9Q 589 656 | J4A5Q 712 657 | 8ATTJ 345 658 | KK339 9 659 | 774J9 698 660 | 69996 652 661 | KQQKQ 548 662 | 43339 188 663 | J6585 681 664 | 62253 979 665 | 99J47 8 666 | 32522 425 667 | K43KQ 115 668 | 33Q33 483 669 | 55AA5 636 670 | 48Q54 973 671 | Q55QJ 184 672 | 9TTQ9 203 673 | 3J733 546 674 | 339JJ 556 675 | J62J2 48 676 | JT4Q5 780 677 | 99AA9 25 678 | KKJQJ 275 679 | 75A42 273 680 | QKTJ5 232 681 | 4JJ4T 808 682 | 7647K 786 683 | 22522 876 684 | 76737 599 685 | J8858 217 686 | 9Q45T 153 687 | 8JT2K 493 688 | 26634 913 689 | 7QJTA 302 690 | KK998 645 691 | 49TT8 840 692 | T22T6 904 693 | 9AK2A 899 694 | 3TQ7J 304 695 | 3A48Q 376 696 | 33TTJ 720 697 | 246A6 983 698 | 9TJ32 224 699 | 35343 605 700 | J4AQA 269 701 | 332T8 692 702 | KK9K9 949 703 | 87KJ8 917 704 | 56KK8 303 705 | 76K52 933 706 | AAJA2 82 707 | 38339 915 708 | J2299 391 709 | 677J7 826 710 | A22TA 316 711 | 69J6T 123 712 | 9JJ99 437 713 | J5624 730 714 | Q7QT7 292 715 | 5Q9QJ 547 716 | K876J 541 717 | 7JJ44 377 718 | K2435 901 719 | TK64T 228 720 | 8878J 902 721 | 99989 193 722 | 222TT 708 723 | QQ88Q 813 724 | 59294 668 725 | TKTKJ 50 726 | KQ893 932 727 | 3557T 265 728 | 7A396 110 729 | Q8888 85 730 | 36663 447 731 | 87A99 818 732 | 7442J 37 733 | TQ4T5 622 734 | 45J7J 20 735 | Q6697 414 736 | 2226Q 892 737 | Q7QQQ 233 738 | 5J395 429 739 | 22KJ6 986 740 | 662K6 94 741 | J7398 783 742 | AQJA8 843 743 | 78K8K 716 744 | Q4QTK 810 745 | J54J5 885 746 | 32223 238 747 | 97776 594 748 | 33693 69 749 | 47T2Q 286 750 | 2QA52 781 751 | Q4J22 761 752 | 99A6A 685 753 | 9A999 11 754 | 444Q4 200 755 | TAK95 56 756 | 7Q363 528 757 | KA99J 809 758 | QQTQQ 991 759 | 2KAK2 4 760 | 599K8 28 761 | TT27T 717 762 | 22525 165 763 | 78222 349 764 | A6667 838 765 | 3Q39T 393 766 | 87868 741 767 | 8AAJK 513 768 | TQ555 543 769 | 79777 925 770 | 866J6 560 771 | 72788 931 772 | 23TTT 374 773 | AA66T 772 774 | K75K4 356 775 | J6JKJ 509 776 | K3K4J 891 777 | 44443 276 778 | K8A88 611 779 | 8483A 753 780 | KKKJJ 312 781 | AA6JA 463 782 | K9TKT 704 783 | JTT66 296 784 | 6A987 869 785 | 22232 951 786 | 7K9A7 385 787 | K2223 987 788 | Q24AJ 554 789 | 766J8 240 790 | 8Q9JA 114 791 | 7AKJ9 736 792 | QQ9QQ 851 793 | 28AA2 124 794 | 3939K 179 795 | 3K284 324 796 | 94K3J 964 797 | 63333 883 798 | 89J45 143 799 | 8J2T2 471 800 | TT5QK 719 801 | JKQKQ 823 802 | A2898 407 803 | 4AK94 565 804 | K889J 260 805 | 8KQQT 950 806 | 59K59 104 807 | AA7TA 487 808 | 36666 308 809 | T64TJ 573 810 | 6864J 626 811 | 6Q4QQ 703 812 | AAQA4 75 813 | 9KJ9Q 649 814 | 26J22 257 815 | 99889 989 816 | KJTTT 881 817 | 83TK9 79 818 | 82828 765 819 | KKQK6 552 820 | J5JQQ 683 821 | A9A98 457 822 | KKK2K 290 823 | 49999 464 824 | 64QTJ 706 825 | 88Q7Q 55 826 | 23233 118 827 | 37333 739 828 | QTQTT 378 829 | AT8T7 767 830 | A687A 421 831 | 9A63T 15 832 | 325J9 749 833 | K7966 921 834 | AAAKK 489 835 | 29829 675 836 | 7377A 455 837 | KJ3KK 57 838 | 4QT2K 36 839 | J7384 718 840 | K3K77 656 841 | Q4J85 442 842 | 53AK9 39 843 | 53782 766 844 | Q4545 572 845 | 522TJ 330 846 | J4J42 472 847 | JA56A 497 848 | 64534 137 849 | 4J322 27 850 | 57777 111 851 | TT338 828 852 | 44J4J 984 853 | 8AAAA 612 854 | J7Q25 821 855 | Q7J57 368 856 | 88289 415 857 | 888JJ 646 858 | 36833 727 859 | T9TT2 271 860 | 44A88 802 861 | K33J2 155 862 | Q3TQT 59 863 | AK755 524 864 | 3J3J2 346 865 | AJ3TA 941 866 | 9635K 357 867 | 499JJ 234 868 | Q8884 337 869 | J8QJ8 678 870 | 3333A 860 871 | TT775 480 872 | AATAQ 882 873 | 5QQAA 247 874 | 95833 80 875 | 3TTQ8 690 876 | T32TJ 934 877 | QAQQ6 370 878 | A9998 684 879 | KTJ37 585 880 | 52JKJ 320 881 | 879A8 640 882 | 7KJ77 161 883 | 9QQAA 216 884 | 32J6T 373 885 | 389A5 76 886 | T988T 282 887 | 86865 518 888 | 45K45 578 889 | 8288T 796 890 | 96524 297 891 | 78J55 625 892 | QJQKT 954 893 | J4353 334 894 | 37KAJ 86 895 | 4J9TQ 401 896 | Q674K 940 897 | QQKQQ 617 898 | A2356 460 899 | 2A38K 825 900 | Q3TQ2 45 901 | 57AJ3 790 902 | 3A7J7 841 903 | A43A4 669 904 | 24AJ3 653 905 | 68666 466 906 | 33793 88 907 | 9J999 439 908 | 5J577 389 909 | 9Q7J6 173 910 | Q5T8T 540 911 | A7AT7 531 912 | T99TT 206 913 | 565A5 858 914 | 7935J 561 915 | A593Q 861 916 | 898A9 18 917 | A8887 392 918 | 424J2 40 919 | 36336 867 920 | 7J577 205 921 | 5JJ43 386 922 | TTTTJ 693 923 | QT624 628 924 | A7TT7 832 925 | K44K5 150 926 | 3J35Q 198 927 | 9T29A 726 928 | KK5J7 423 929 | AAJAT 396 930 | 37J7K 764 931 | 7TTT7 971 932 | 7K63A 647 933 | TT66T 515 934 | 4644A 798 935 | TJ944 177 936 | 2J6K9 323 937 | 47674 880 938 | AAJAA 379 939 | 86884 74 940 | 6J366 64 941 | ATQ2T 469 942 | 7J9QK 680 943 | TATT7 782 944 | Q7QQ4 52 945 | 52555 816 946 | AA9A5 156 947 | K2K8T 283 948 | 278J8 724 949 | 95Q55 360 950 | 3K332 516 951 | 7Q5A3 125 952 | TAATT 733 953 | 2K44K 363 954 | 58K74 601 955 | 7J77J 919 956 | 4474J 191 957 | 7T4JJ 521 958 | 22A6K 620 959 | 33T3J 244 960 | JTAJT 551 961 | 879Q5 338 962 | 67324 1000 963 | JJ333 918 964 | 887AA 957 965 | QTAKK 504 966 | 22A22 999 967 | A336A 700 968 | 4J93T 729 969 | K5555 992 970 | QTTAJ 846 971 | QT59A 791 972 | 42J4A 145 973 | JKK9T 526 974 | JA887 658 975 | J2255 618 976 | JQJ3Q 6 977 | 6A4JT 176 978 | 683J8 171 979 | A66Q6 533 980 | Q268J 527 981 | 8Q2K9 241 982 | 792T2 778 983 | QJJQA 402 984 | AAT24 827 985 | A75AA 697 986 | 99444 209 987 | AKA99 799 988 | 77667 777 989 | 52275 962 990 | 7688K 422 991 | 72689 174 992 | 99929 395 993 | TJ444 642 994 | 22Q2Q 90 995 | AJ447 834 996 | 58545 564 997 | JT5J4 756 998 | 86888 822 999 | 9A563 644 1000 | 666QQ 355 -------------------------------------------------------------------------------- /day8/src/input/input.txt: -------------------------------------------------------------------------------- 1 | LLRRLRRRLLRLRRLLLLRLRRLRRRLRLRRRLLRRLRRRLLRRLRRLRRLLRRRLRRLRRLRRRLRRLRLRLRRLRRLRRRLLRRLLLRRLRRRLRRRLRRRLRRLRRRLRLLRLRRRLRLRRLLRLRRRLRRRLRLRRRLRRRLRLRLRRLRRLRLRRLLRRRLRRRLRRRLLRRRLRLRLRLRLLRRRLRRRLRRLRRRLLRLRRLRRLRRRLRRRLRRLRLRLRRRLRRLRRLRRRLLRRLRLRLRRRLRLRLRRLRRLLRRLRRRLLRLLRLRLRRRR 2 | 3 | FGF = (HTC, DTX) 4 | PTP = (MCL, BDN) 5 | LHL = (LJF, BDX) 6 | XMM = (KCX, JHL) 7 | GLD = (RNN, MXG) 8 | HSR = (JPX, CXF) 9 | CRF = (BMJ, FHT) 10 | QSS = (KPH, FVD) 11 | RHV = (LRD, XDS) 12 | KTT = (XPS, VCX) 13 | LQK = (TLF, VJX) 14 | MMK = (VJV, HQV) 15 | RKX = (RKG, XJB) 16 | HDM = (NFK, JNB) 17 | PFJ = (QDJ, NDH) 18 | JKB = (MDK, MRJ) 19 | BSP = (QBQ, JPM) 20 | FQH = (HJD, VHF) 21 | QQL = (VDB, KGM) 22 | TRB = (KTC, RGN) 23 | VXC = (NDK, MVK) 24 | BCS = (PSX, PLK) 25 | FHK = (MLK, RDP) 26 | TVB = (JXV, SSR) 27 | GXD = (KSF, BRK) 28 | MNJ = (MHG, CRF) 29 | RLC = (TGD, CHV) 30 | LBQ = (NQK, MHP) 31 | JLH = (FGB, KNM) 32 | PCN = (CQF, NDF) 33 | FVP = (NKS, RCB) 34 | GHL = (TTB, KLQ) 35 | MTB = (VDM, FKT) 36 | LLB = (VXL, TRT) 37 | RSS = (GDP, TKD) 38 | SFH = (FCM, GKF) 39 | KSF = (VQB, JXJ) 40 | LJH = (PNS, DGC) 41 | TJC = (KQM, BVL) 42 | PRL = (TCG, GCQ) 43 | NBG = (GNR, SRM) 44 | CST = (FXL, BDF) 45 | XXH = (KVH, KSM) 46 | FJP = (PKX, DSF) 47 | DTS = (FFF, DQM) 48 | CMG = (VBJ, DBF) 49 | NHD = (TCJ, DHF) 50 | KKF = (RVP, FVR) 51 | LDS = (VPJ, MPN) 52 | GHC = (DBK, SCS) 53 | KVK = (NFV, MXJ) 54 | NTN = (TDC, VNC) 55 | FCR = (DCR, FQH) 56 | PLK = (GHT, PBT) 57 | VJF = (VJN, PVB) 58 | TKR = (GHS, TTP) 59 | PQJ = (VGB, SGP) 60 | TGM = (JQM, PPK) 61 | LFQ = (QGB, QXB) 62 | RDP = (HSF, MQV) 63 | SGP = (HVK, XMV) 64 | FTB = (RFV, MLT) 65 | LCX = (RSB, RSB) 66 | VGD = (XJB, RKG) 67 | PFD = (RGK, JGB) 68 | DBK = (RMP, RSH) 69 | TTC = (NDH, QDJ) 70 | PVF = (QRG, QCV) 71 | BGV = (TDS, DRK) 72 | VHF = (XTB, TGM) 73 | DBF = (GGT, BRQ) 74 | TFG = (SVV, FCV) 75 | MDK = (THF, PLQ) 76 | NDF = (BSP, STC) 77 | SMZ = (KHB, TST) 78 | SLC = (BKM, BCS) 79 | NSV = (VVM, VQG) 80 | GCA = (XQT, RCD) 81 | FVD = (NXJ, MBJ) 82 | HCH = (MRF, RQJ) 83 | PLN = (BNK, CLF) 84 | TTP = (BCP, SLC) 85 | BRF = (SHR, CTK) 86 | KCX = (PDR, HHQ) 87 | GMG = (NFV, MXJ) 88 | SNN = (XDS, LRD) 89 | SBB = (JXL, BFK) 90 | NCV = (KVH, KSM) 91 | DQQ = (FFF, DQM) 92 | THT = (MFP, VSD) 93 | GVH = (KHF, TKB) 94 | HPC = (MKX, SVS) 95 | KSS = (QQQ, HSR) 96 | NCP = (FCV, SVV) 97 | FGB = (LGN, LKJ) 98 | TST = (DFV, GND) 99 | PJR = (VMQ, HPB) 100 | BHB = (VMQ, HPB) 101 | LMG = (SHS, XJC) 102 | GGT = (TQQ, XQK) 103 | PKR = (QQR, JGG) 104 | FLR = (LJP, VQT) 105 | NFK = (HKG, BPJ) 106 | MGG = (SST, MCT) 107 | BVD = (SNV, TTH) 108 | GHX = (GMK, JXG) 109 | PDR = (HCD, HNG) 110 | XJN = (NHR, CBN) 111 | XRG = (LBQ, MTV) 112 | VFM = (MMS, VXT) 113 | PPP = (LHR, HJH) 114 | FJG = (NLS, CCF) 115 | NDK = (RHD, BVD) 116 | VSB = (LKB, CCX) 117 | NJG = (PTK, MCD) 118 | MLS = (XCQ, FCR) 119 | QSM = (CBJ, GRG) 120 | PTC = (NJG, FLT) 121 | MRJ = (PLQ, THF) 122 | HJD = (XTB, TGM) 123 | XCQ = (DCR, FQH) 124 | HPN = (CQD, CTP) 125 | BDJ = (JND, JRB) 126 | PXL = (VXT, MMS) 127 | NFV = (SFX, BDQ) 128 | SNQ = (PQJ, TNG) 129 | LSL = (KFN, JFL) 130 | SMK = (FQS, FJJ) 131 | QDV = (BDX, LJF) 132 | GMK = (TSJ, SVF) 133 | GDP = (MML, MML) 134 | GRG = (PVF, CKG) 135 | CXF = (MNJ, TBZ) 136 | LKM = (HJH, LHR) 137 | GHS = (BCP, SLC) 138 | XBH = (BDS, NDQ) 139 | NLL = (NJT, QCJ) 140 | MXJ = (BDQ, SFX) 141 | FCF = (QQQ, QQQ) 142 | SXG = (LFQ, TTZ) 143 | PLP = (MJL, FPL) 144 | FSV = (SBB, JFC) 145 | NLH = (TDS, DRK) 146 | QDM = (GHX, GGM) 147 | JJB = (MSQ, MMK) 148 | TRS = (BXN, RLM) 149 | DMP = (RTP, CHG) 150 | XGG = (PCC, XKH) 151 | MCT = (NLK, DTM) 152 | DLC = (JTQ, BLF) 153 | VBJ = (GGT, BRQ) 154 | XQD = (NTN, XRC) 155 | FKM = (QKK, JBQ) 156 | PNN = (RGN, KTC) 157 | LCM = (DTG, GHC) 158 | LKJ = (LFV, RNG) 159 | HRR = (JND, JRB) 160 | BDN = (SNQ, NVC) 161 | RSH = (PJS, LHG) 162 | CTP = (DJM, NHF) 163 | XMV = (CFJ, MDV) 164 | HXM = (PTP, XVQ) 165 | CKG = (QCV, QRG) 166 | GKK = (CRG, MPJ) 167 | LNS = (VSB, GNQ) 168 | RVP = (JJB, LCN) 169 | DVH = (QLD, QGV) 170 | CPH = (PMN, QSC) 171 | BXQ = (CPH, DSQ) 172 | SDM = (DSB, CNV) 173 | RNN = (SHM, LSL) 174 | VQC = (GKH, DMP) 175 | KXV = (GKN, PTC) 176 | TNK = (NMK, PKR) 177 | TSL = (MTV, LBQ) 178 | VSD = (LGH, HNM) 179 | QRQ = (QXH, GRQ) 180 | NKS = (NSL, HPN) 181 | TQC = (JQK, TXF) 182 | THF = (TVM, KKF) 183 | VSL = (PLN, GDS) 184 | SSN = (FTB, NXF) 185 | NHF = (BFG, XTZ) 186 | HSP = (QRQ, DFC) 187 | JQM = (BNP, PMD) 188 | GDV = (RVK, MQF) 189 | MTK = (TGD, CHV) 190 | FFX = (DSN, XXJ) 191 | HKG = (THT, KNJ) 192 | RCN = (DCB, XFN) 193 | HCD = (TDF, BQM) 194 | TKJ = (JPV, GRR) 195 | RVK = (HXX, PRL) 196 | HDN = (TRT, VXL) 197 | KHQ = (DQQ, DTS) 198 | MPJ = (PLP, KBG) 199 | SFX = (KTT, NTG) 200 | NMJ = (BGV, NLH) 201 | LXK = (CRB, GXD) 202 | KBG = (FPL, MJL) 203 | GNQ = (LKB, CCX) 204 | MRV = (RVK, MQF) 205 | PKH = (NPN, MHQ) 206 | NLK = (LTJ, RXP) 207 | LBH = (VTP, SGG) 208 | NTG = (VCX, XPS) 209 | CCD = (GVF, SSJ) 210 | BBB = (SSR, JXV) 211 | NSL = (CQD, CQD) 212 | BNK = (SGS, JQD) 213 | TTB = (KVK, GMG) 214 | FDR = (RBS, TXD) 215 | PJG = (RTV, JQS) 216 | LGV = (LSB, NPF) 217 | XVQ = (MCL, BDN) 218 | BMJ = (KRT, XXN) 219 | XCM = (LXK, VKJ) 220 | CCF = (SDR, PTQ) 221 | GSS = (PJR, BHB) 222 | CJL = (QKK, JBQ) 223 | FBT = (VJF, SGL) 224 | DSB = (QKQ, RBK) 225 | SGS = (MLQ, PXT) 226 | PKX = (KPF, CNQ) 227 | JND = (SDG, SND) 228 | DJM = (BFG, BFG) 229 | LHK = (SBB, JFC) 230 | QLD = (SGX, KDP) 231 | NPF = (VDC, KHQ) 232 | BRQ = (XQK, TQQ) 233 | NGQ = (JNB, NFK) 234 | NFH = (MPN, VPJ) 235 | KHF = (LKG, GLD) 236 | XKC = (XTX, XTX) 237 | DJG = (XGL, BTF) 238 | LGN = (RNG, LFV) 239 | HQV = (CJL, FKM) 240 | JPV = (SVD, XJN) 241 | TSJ = (NMD, MGG) 242 | QRG = (HBD, CST) 243 | FXL = (PFX, HVV) 244 | TNG = (VGB, SGP) 245 | HXX = (GCQ, TCG) 246 | RTP = (CDD, QJR) 247 | RXN = (LFQ, LFQ) 248 | MVK = (BVD, RHD) 249 | PLR = (FVP, DHP) 250 | GRR = (XJN, SVD) 251 | DHJ = (VRN, DTR) 252 | HSF = (TSS, JSQ) 253 | TXN = (FGF, NMV) 254 | CBJ = (CKG, PVF) 255 | GHT = (RCN, NTR) 256 | SMH = (FJG, LQD) 257 | CVN = (PLR, DDF) 258 | SJK = (TTF, SLQ) 259 | LMN = (XHT, CFF) 260 | KLQ = (GMG, KVK) 261 | KXC = (CHP, NLL) 262 | KNM = (LKJ, LGN) 263 | QHK = (LNV, GKK) 264 | BTH = (KVR, FNQ) 265 | QFV = (PRK, LTV) 266 | DBH = (HND, HFC) 267 | CRG = (KBG, PLP) 268 | TCG = (DVF, BXQ) 269 | SJQ = (KPR, QKP) 270 | JMJ = (TTB, KLQ) 271 | RFV = (XBH, CGX) 272 | AAA = (QDM, GMV) 273 | JTQ = (HRR, BDJ) 274 | MHQ = (HPQ, KXC) 275 | SDG = (HGR, RJN) 276 | PNS = (FMC, JKB) 277 | KHB = (DFV, GND) 278 | NXJ = (MLS, HLT) 279 | HND = (LVF, BBJ) 280 | FCZ = (RCD, XQT) 281 | NFP = (FVD, KPH) 282 | NTH = (FVH, DJG) 283 | GMV = (GHX, GGM) 284 | FKT = (CLC, BTH) 285 | LTV = (BKP, HVT) 286 | VLF = (DLX, FMB) 287 | NNP = (NFH, LDS) 288 | GQV = (RTR, NMJ) 289 | MCD = (PFK, HPC) 290 | XML = (RNR, GJF) 291 | TXD = (LGT, QSM) 292 | DKG = (RTV, JQS) 293 | MQF = (PRL, HXX) 294 | XJB = (HKV, FLR) 295 | SHS = (VVH, CHN) 296 | PMD = (NSV, BMQ) 297 | TLJ = (DMP, GKH) 298 | CMA = (TST, KHB) 299 | CRB = (KSF, BRK) 300 | XQT = (TXN, LNN) 301 | QHF = (XKH, PCC) 302 | FQM = (PKR, NMK) 303 | DHP = (NKS, RCB) 304 | KSM = (DKP, SDM) 305 | LKB = (RQV, BRF) 306 | BVL = (TRB, PNN) 307 | GJF = (NTH, JRX) 308 | HTC = (HRL, HXM) 309 | JGB = (QVX, GMR) 310 | VJV = (CJL, FKM) 311 | RGK = (QVX, GMR) 312 | KPF = (JCK, XDV) 313 | LNV = (CRG, MPJ) 314 | QNP = (LXK, VKJ) 315 | MFT = (NJK, VVL) 316 | PBT = (RCN, NTR) 317 | CKV = (XHT, CFF) 318 | RCD = (TXN, LNN) 319 | MBJ = (HLT, MLS) 320 | QDC = (NMJ, RTR) 321 | SVV = (FJC, MJR) 322 | STN = (LQC, HFR) 323 | QXB = (RPJ, MHL) 324 | VJN = (TVB, BBB) 325 | GKH = (RTP, CHG) 326 | XGL = (PMX, FFX) 327 | KNH = (FGB, KNM) 328 | TVN = (QKP, KPR) 329 | JFC = (BFK, JXL) 330 | LHG = (TFG, NCP) 331 | HFT = (HND, HFC) 332 | DKP = (DSB, CNV) 333 | LGH = (DCG, QPN) 334 | LGC = (VVL, NJK) 335 | HSC = (NTJ, QQL) 336 | CFF = (JMJ, GHL) 337 | PFH = (SGL, VJF) 338 | LGT = (GRG, CBJ) 339 | JSQ = (SFH, RVQ) 340 | VDM = (CLC, BTH) 341 | NTR = (DCB, XFN) 342 | KVH = (DKP, SDM) 343 | BVQ = (LSH, SDX) 344 | NRC = (QCH, TRS) 345 | DCB = (KBT, TSR) 346 | DGC = (FMC, JKB) 347 | VMQ = (LJR, LJR) 348 | MXG = (LSL, SHM) 349 | CPM = (TRS, QCH) 350 | DLX = (LQN, TJC) 351 | GDS = (BNK, CLF) 352 | JRK = (PGJ, NHD) 353 | JXV = (DRH, CVN) 354 | SVD = (CBN, NHR) 355 | LCN = (MSQ, MMK) 356 | MJL = (RQL, RGF) 357 | JLT = (QRQ, DFC) 358 | BGP = (DPV, VXC) 359 | PSQ = (PJR, BHB) 360 | NTJ = (KGM, VDB) 361 | SGX = (VFM, PXL) 362 | QBQ = (MCM, VNV) 363 | CHV = (QJN, CMG) 364 | DRK = (BKT, LBH) 365 | SVS = (NPV, HCH) 366 | BCP = (BKM, BCS) 367 | BXN = (PSQ, GSS) 368 | GQJ = (SMH, XHX) 369 | NPV = (RQJ, MRF) 370 | NMV = (HTC, DTX) 371 | LKR = (SPG, SJK) 372 | HLT = (XCQ, FCR) 373 | SKX = (HSC, CFR) 374 | SDR = (BLQ, FKV) 375 | FCN = (FKT, VDM) 376 | VPB = (CJR, FHK) 377 | MHL = (PFJ, TTC) 378 | XQK = (BBK, PBQ) 379 | MDV = (SCJ, BKF) 380 | VDC = (DQQ, DTS) 381 | RTV = (LDP, PCN) 382 | GRQ = (FDR, DHG) 383 | NDH = (JGX, SSN) 384 | NCG = (GNR, SRM) 385 | LQN = (BVL, KQM) 386 | NHR = (FQM, TNK) 387 | LJR = (GDP, GDP) 388 | JXL = (VKV, MJQ) 389 | QCH = (BXN, RLM) 390 | QGB = (MHL, RPJ) 391 | DDN = (GLT, DHJ) 392 | SHR = (BGP, FCX) 393 | DPV = (MVK, NDK) 394 | XHT = (GHL, JMJ) 395 | QKK = (LCX, LCX) 396 | TRT = (QFV, NHT) 397 | PBQ = (DPX, LNS) 398 | JHL = (HHQ, PDR) 399 | DCG = (JLX, VSL) 400 | SST = (NLK, DTM) 401 | QPN = (JLX, VSL) 402 | GXS = (FJP, DCM) 403 | VJX = (DKB, FCZ) 404 | XXJ = (HDN, LLB) 405 | JPM = (VNV, MCM) 406 | QGV = (SGX, KDP) 407 | QNA = (QGB, QXB) 408 | CQD = (DJM, DJM) 409 | TTF = (TVN, SJQ) 410 | CHP = (QCJ, NJT) 411 | BBJ = (LVT, TKJ) 412 | VKJ = (CRB, GXD) 413 | LJF = (FFL, KXV) 414 | TKD = (MML, ZZZ) 415 | QKP = (CKV, LMN) 416 | CQF = (STC, BSP) 417 | PHM = (FHK, CJR) 418 | BTF = (PMX, FFX) 419 | JRX = (FVH, DJG) 420 | PMN = (NBG, NCG) 421 | LKG = (RNN, MXG) 422 | NXB = (JLH, KNH) 423 | MLQ = (FBT, PFH) 424 | JML = (XKC, GLX) 425 | NHT = (PRK, LTV) 426 | BLQ = (SKX, HGL) 427 | BDX = (FFL, KXV) 428 | DVN = (SCR, JML) 429 | FPL = (RQL, RGF) 430 | MMS = (SVR, KSV) 431 | FLT = (PTK, MCD) 432 | PTQ = (BLQ, FKV) 433 | DHG = (RBS, TXD) 434 | QSC = (NCG, NBG) 435 | LFV = (NXP, GMF) 436 | XDS = (KQP, STN) 437 | PVB = (BBB, TVB) 438 | JGX = (NXF, FTB) 439 | CNB = (PRR, JRK) 440 | TQQ = (PBQ, BBK) 441 | GMF = (MKH, CRH) 442 | SDP = (KCQ, PKV) 443 | MHP = (HMR, LCM) 444 | RRS = (QGV, QLD) 445 | PKV = (XKG, HTH) 446 | JLX = (GDS, PLN) 447 | RJN = (VGD, RKX) 448 | NMK = (QQR, JGG) 449 | PFK = (SVS, MKX) 450 | NXF = (MLT, RFV) 451 | VVM = (HDM, NGQ) 452 | VSJ = (QDG, VKM) 453 | RBS = (QSM, LGT) 454 | KFN = (RRS, DVH) 455 | XXN = (XMM, SKM) 456 | TXF = (LKM, PPP) 457 | DFV = (VLF, GPC) 458 | RMP = (PJS, LHG) 459 | LVP = (QDG, VKM) 460 | DFC = (QXH, GRQ) 461 | GPC = (DLX, FMB) 462 | LJP = (CCD, FSM) 463 | MPN = (PFD, RSN) 464 | SGG = (RHV, SNN) 465 | BDF = (HVV, PFX) 466 | QQR = (GVH, QSB) 467 | RPJ = (TTC, PFJ) 468 | NDQ = (NXV, XQD) 469 | RGF = (BVQ, GMB) 470 | TXM = (DCM, FJP) 471 | VRN = (XFV, MFG) 472 | FCX = (VXC, DPV) 473 | RQJ = (HFT, DBH) 474 | MLT = (CGX, XBH) 475 | TSR = (QSS, NFP) 476 | BCD = (VQC, TLJ) 477 | JQK = (PPP, LKM) 478 | DSF = (CNQ, KPF) 479 | CVS = (LDS, NFH) 480 | VTP = (SNN, RHV) 481 | FTA = (MHG, CRF) 482 | RNR = (NTH, JRX) 483 | DRH = (PLR, DDF) 484 | KSV = (SMK, NHC) 485 | VKM = (HFV, LMG) 486 | DTR = (XFV, MFG) 487 | MML = (QDM, GMV) 488 | HPQ = (CHP, NLL) 489 | GKF = (QHK, TDM) 490 | TDF = (DHX, LPT) 491 | PXT = (FBT, PFH) 492 | BRK = (VQB, JXJ) 493 | VXT = (KSV, SVR) 494 | HNM = (QPN, DCG) 495 | HHQ = (HNG, HCD) 496 | MPG = (JJS, SMZ) 497 | CGS = (QDC, GQV) 498 | GMR = (GQJ, RMH) 499 | BKF = (CNB, NKP) 500 | VDB = (VPB, PHM) 501 | DSQ = (PMN, QSC) 502 | DTX = (HRL, HXM) 503 | QXH = (FDR, DHG) 504 | LPT = (QDV, LHL) 505 | DKB = (XQT, RCD) 506 | QJN = (VBJ, DBF) 507 | FVR = (JJB, LCN) 508 | MFG = (CPM, NRC) 509 | FMC = (MDK, MRJ) 510 | JLL = (RXN, SXG) 511 | NQK = (LCM, HMR) 512 | KBT = (QSS, NFP) 513 | DHX = (QDV, LHL) 514 | SKM = (JHL, KCX) 515 | FSM = (SSJ, GVF) 516 | NVC = (TNG, PQJ) 517 | SRM = (HSP, JLT) 518 | FCM = (TDM, QHK) 519 | NPN = (HPQ, KXC) 520 | JGG = (QSB, GVH) 521 | DCM = (DSF, PKX) 522 | BLF = (BDJ, HRR) 523 | JXJ = (JCC, LGV) 524 | PSX = (PBT, GHT) 525 | CRH = (NXX, BCD) 526 | SCS = (RSH, RMP) 527 | LTJ = (FSV, LHK) 528 | PSV = (PKV, KCQ) 529 | TVM = (FVR, RVP) 530 | LSH = (DDN, HNX) 531 | XTX = (RXN, RXN) 532 | RKG = (FLR, HKV) 533 | JNB = (BPJ, HKG) 534 | GKN = (NJG, FLT) 535 | RLM = (PSQ, GSS) 536 | CNQ = (XDV, JCK) 537 | HFR = (TQC, KLB) 538 | RQV = (SHR, CTK) 539 | DSN = (HDN, LLB) 540 | FFF = (KSR, KSR) 541 | FJJ = (FCF, KSS) 542 | KPH = (NXJ, MBJ) 543 | KCQ = (XKG, HTH) 544 | PPK = (BNP, PMD) 545 | TKB = (LKG, GLD) 546 | JQD = (MLQ, PXT) 547 | BPJ = (THT, KNJ) 548 | RBK = (FCN, MTB) 549 | PDK = (GHS, TTP) 550 | SDX = (DDN, HNX) 551 | BQM = (DHX, LPT) 552 | KNJ = (MFP, VSD) 553 | CLC = (FNQ, KVR) 554 | XPS = (NXB, SXK) 555 | CLF = (JQD, SGS) 556 | DQM = (KSR, LQK) 557 | XKG = (MRV, GDV) 558 | RHD = (TTH, SNV) 559 | RTR = (BGV, NLH) 560 | QSB = (TKB, KHF) 561 | BKP = (PJG, DKG) 562 | RMH = (XHX, SMH) 563 | PGR = (PNS, DGC) 564 | GND = (VLF, GPC) 565 | PCC = (QNP, XCM) 566 | KDP = (PXL, VFM) 567 | SPG = (TTF, SLQ) 568 | SXK = (KNH, JLH) 569 | PFX = (MFT, LGC) 570 | BKM = (PLK, PSX) 571 | TGD = (CMG, QJN) 572 | NXV = (NTN, XRC) 573 | MFP = (HNM, LGH) 574 | MQQ = (RSB, MPG) 575 | TBZ = (CRF, MHG) 576 | XDV = (TKR, PDK) 577 | DVF = (CPH, DSQ) 578 | SNV = (GXS, TXM) 579 | DCR = (HJD, VHF) 580 | QDG = (LMG, HFV) 581 | MHG = (FHT, BMJ) 582 | NKP = (PRR, JRK) 583 | XRC = (VNC, TDC) 584 | JFL = (RRS, DVH) 585 | KRT = (SKM, XMM) 586 | CDD = (DVN, PDM) 587 | NXP = (MKH, CRH) 588 | LVT = (GRR, JPV) 589 | NJT = (RLC, MTK) 590 | HVV = (MFT, LGC) 591 | RNG = (GMF, NXP) 592 | SVR = (SMK, NHC) 593 | QDJ = (SSN, JGX) 594 | RQL = (BVQ, GMB) 595 | HMR = (GHC, DTG) 596 | CGX = (BDS, NDQ) 597 | MJQ = (LVP, VSJ) 598 | XJC = (CHN, VVH) 599 | FFL = (GKN, PTC) 600 | XJS = (SJK, SPG) 601 | JQS = (PCN, LDP) 602 | SHM = (JFL, KFN) 603 | HPB = (LJR, RSS) 604 | JXG = (SVF, TSJ) 605 | STC = (QBQ, JPM) 606 | FHT = (XXN, KRT) 607 | LRD = (KQP, STN) 608 | VCX = (SXK, NXB) 609 | KSR = (TLF, TLF) 610 | KQM = (PNN, TRB) 611 | KTC = (TSL, XRG) 612 | VKV = (VSJ, LVP) 613 | XTB = (PPK, JQM) 614 | BFK = (MJQ, VKV) 615 | GLT = (VRN, DTR) 616 | VPJ = (PFD, RSN) 617 | BKT = (SGG, VTP) 618 | BMQ = (VVM, VQG) 619 | KVR = (QHF, XGG) 620 | LNH = (QDC, GQV) 621 | SLQ = (SJQ, TVN) 622 | CJR = (RDP, MLK) 623 | JCK = (TKR, PDK) 624 | GVF = (XXH, NCV) 625 | LQC = (TQC, KLB) 626 | TSS = (SFH, RVQ) 627 | HRL = (XVQ, PTP) 628 | TDM = (GKK, LNV) 629 | BNP = (BMQ, NSV) 630 | BFG = (RNQ, PKH) 631 | CFJ = (BKF, SCJ) 632 | QQQ = (JPX, JPX) 633 | MQV = (JSQ, TSS) 634 | XHX = (LQD, FJG) 635 | PMX = (XXJ, DSN) 636 | KGM = (VPB, PHM) 637 | GNR = (JLT, HSP) 638 | NLS = (PTQ, SDR) 639 | MSQ = (VJV, HQV) 640 | FMB = (TJC, LQN) 641 | XFV = (NRC, CPM) 642 | RSN = (JGB, RGK) 643 | PRK = (HVT, BKP) 644 | HFV = (XJC, SHS) 645 | SVF = (NMD, MGG) 646 | QVX = (GQJ, RMH) 647 | TCF = (BLF, JTQ) 648 | MLK = (HSF, MQV) 649 | RVQ = (FCM, GKF) 650 | GLX = (XTX, JLL) 651 | PDM = (SCR, JML) 652 | HGR = (RKX, VGD) 653 | JRB = (SND, SDG) 654 | FKV = (SKX, HGL) 655 | TDC = (LNH, CGS) 656 | FVH = (XGL, BTF) 657 | NHC = (FQS, FJJ) 658 | BBK = (LNS, DPX) 659 | VVH = (NNP, CVS) 660 | NJK = (DLC, TCF) 661 | SGL = (VJN, PVB) 662 | MTV = (NQK, MHP) 663 | PJS = (TFG, NCP) 664 | DTG = (SCS, DBK) 665 | TCJ = (SDP, PSV) 666 | VGB = (HVK, XMV) 667 | MCL = (SNQ, NVC) 668 | NXX = (TLJ, VQC) 669 | HVK = (MDV, CFJ) 670 | NMD = (MCT, SST) 671 | TTZ = (QXB, QGB) 672 | VNC = (LNH, CGS) 673 | GMB = (LSH, SDX) 674 | CHN = (NNP, CVS) 675 | FCV = (MJR, FJC) 676 | HNG = (TDF, BQM) 677 | SCR = (XKC, GLX) 678 | DDF = (DHP, FVP) 679 | CTK = (BGP, FCX) 680 | CHG = (QJR, CDD) 681 | VXL = (QFV, NHT) 682 | SSJ = (XXH, NCV) 683 | RNQ = (NPN, MHQ) 684 | FJC = (XJF, XML) 685 | XTZ = (PKH, RNQ) 686 | CBN = (TNK, FQM) 687 | RSB = (JJS, JJS) 688 | TTH = (GXS, TXM) 689 | HJH = (LKR, XJS) 690 | VQB = (JCC, LGV) 691 | HKV = (LJP, VQT) 692 | RGN = (XRG, TSL) 693 | MKX = (NPV, HCH) 694 | JJS = (TST, KHB) 695 | JPX = (MNJ, MNJ) 696 | HTH = (MRV, GDV) 697 | VQT = (CCD, FSM) 698 | PGJ = (DHF, TCJ) 699 | DHF = (SDP, PSV) 700 | XJF = (GJF, RNR) 701 | LQD = (CCF, NLS) 702 | MRF = (DBH, HFT) 703 | FNQ = (XGG, QHF) 704 | GGM = (JXG, GMK) 705 | BDS = (NXV, XQD) 706 | MCM = (PGR, LJH) 707 | LDP = (NDF, CQF) 708 | QCJ = (RLC, MTK) 709 | CCX = (RQV, BRF) 710 | HBD = (BDF, FXL) 711 | CBA = (RNQ, PKH) 712 | MJR = (XJF, XML) 713 | JCC = (LSB, NPF) 714 | VQG = (NGQ, HDM) 715 | RCB = (NSL, HPN) 716 | QCV = (HBD, CST) 717 | TDS = (LBH, BKT) 718 | CNV = (QKQ, RBK) 719 | KLB = (JQK, TXF) 720 | XKH = (QNP, XCM) 721 | SCJ = (CNB, NKP) 722 | HGL = (CFR, HSC) 723 | BDQ = (NTG, KTT) 724 | PRR = (PGJ, NHD) 725 | KPR = (CKV, LMN) 726 | HFC = (LVF, BBJ) 727 | TLF = (DKB, DKB) 728 | SND = (HGR, RJN) 729 | VNV = (PGR, LJH) 730 | PLQ = (KKF, TVM) 731 | LVF = (LVT, TKJ) 732 | QJR = (PDM, DVN) 733 | HVT = (DKG, PJG) 734 | CFR = (QQL, NTJ) 735 | DTM = (LTJ, RXP) 736 | HNX = (GLT, DHJ) 737 | QKQ = (FCN, MTB) 738 | PTK = (HPC, PFK) 739 | FQS = (FCF, KSS) 740 | JBQ = (LCX, MQQ) 741 | RXP = (LHK, FSV) 742 | SSR = (DRH, CVN) 743 | LSB = (VDC, KHQ) 744 | DPX = (GNQ, VSB) 745 | ZZZ = (GMV, QDM) 746 | XFN = (TSR, KBT) 747 | LNN = (NMV, FGF) 748 | KQP = (LQC, HFR) 749 | LHR = (XJS, LKR) 750 | GCQ = (DVF, BXQ) 751 | VVL = (TCF, DLC) 752 | MKH = (NXX, BCD) -------------------------------------------------------------------------------- /day3/input.txt: -------------------------------------------------------------------------------- 1 | ........954......104.......52......70..............206.806........708..........................217...............................440........ 2 | .......@...................*.............................*.664..............677................@....459.........687......................... 3 | ..................378.....398........548..495..........983....*................*..282.................*...........$.248.....409.......165... 4 | ......261........................704.&.......*................943...615.504.....6....*773..........687..../973.2*.....=.311*....*..../...... 5 | 187..-....&...............828....*......*268..488....534.........................................................244.........722.286........ 6 | ........663.254.723.@.......*.842....696............../...163.512&.............797.......................749................................ 7 | 230.........*.....*.442...563...............................*.....................*716...................*...395............352..594&....... 8 | ...........468.522............................+33........660....&......................................891......-...#....................... 9 | ......929...........*261..680............-...........@.........29.312.............972.......................704.....545.56*274......537..... 10 | ........*.......................+.#158..311.........987............*................&....923................*...837.............561...%..... 11 | ......35....75.....715........382...........855............/440..890.224.....613............*......622./....810....*632.........%........... 12 | ............*.....%.......286........534.................$............*...........277.....851..14...*...645.............916../.......682.... 13 | .....189..641.%.........%....*..........$...694.214*......137.......16........26.....+..%........&.675.........511........*..848.184*.....55 14 | ..............760......323....167..674.......*.......604@..............-......*.........24.................$......*.....666................. 15 | ....99.....................................*.360.......................805..509../.........284.....&981..827....714.................410..... 16 | ...*.................+.601&..10&........202.......753...........................208..925...*..........................652...752.....#....... 17 | ...411......656...448..............................&......888.749..677...............=...970.................128....-....*..*....@.......... 18 | .............*.......................236.60...181..........*.....*....-.713.170................@.......839.....*....116.....79.431.=........ 19 | .689...542..46................483.....*....*...*.....#..289..348.483........*........=...731....376...@.....656.....................924.&... 20 | .........*.............340......&..@..92..314.3...572.........$.......408.177........728....*....................325...929..............852. 21 | ........824....323....*...........157....................126............*.....640...........404...................*......@........430....... 22 | .649..............*.723.......32............375......480*....537..637.467.....*....=598.............959.......263..136......718...*....#.... 23 | ..........931..316...........*...........78*................../..*.........611..........979.@...198....*751...*.........123./......579..733. 24 | .81&.....*..............772.884......809..................435.....940............162*........96...*............145....../......414.......... 25 | .......#.511......204....................706*.....442........*........213.............116......................................./........... 26 | 625...60............*..............@.........870.#...........17.......*.......725.....*...........-..696.......114......../.......=......... 27 | ............734..................482.................35*974.....%....227........@.....60........382...*.......-..........664....584...472... 28 | 288.....697*............................*614....975.............999.........599..........332..........978..60......./...................*... 29 | ...*............701..961..180........998..................211..............$...............*...310..................953.....$..153...861.... 30 | 356........%344..@....*....*........................267....+...421%........................697....*...........531.........776.....*......193 31 | ........#...........757.925................360.........................261......71.....950.........490....-../........+..........989........ 32 | 634...385....*70............................*.......%........311...457*.......%........*...640..........687.......=...946................... 33 | ...*......514....973....100...46..570..21....155.....692.575..../..............977.233........$.................931...........*..240+....... 34 | 332.............*........*........#....-................./.........944..............*............230.....+...........889.....462.......615.. 35 | .....&..531....77.435.427..437......*....=417.......................%..194.......385.........88-..#...174................................... 36 | ....951.............-............716.261.......................234....*..................&........................................439....... 37 | ................*.........563+............*.............805.....%....681..............393...909..247.$415.............=..+.................. 38 | ..954.644...-...35...%425........890....857.......%.521..+..438...............437..............@...@.........563.....133..696............... 39 | ...$........887.............&466.*..............547.%.........*...804....118...=..15.......302...............*......................80..%549 40 | ........610......877...990.......368.......................553....*.....*........-............*.....232...282..-...............264....*..... 41 | 410.....@.......%....*....*793.......946.....67*863.895.........511.....628..............945..764....*.........455...............$.....880.. 42 | ...*.......331....540.540.............*................*192.............................*.........103....................................... 43 | .311......*..................954......602.766.403...............#.....307..239..417......617..........959...416.........&521................ 44 | .....-..51.....732.......-...=.....$.........*......695........131....*...*.....................494@..*......*...............+...983........ 45 | ...284.....337....+......541.......345..........306.........%........111..677........679.............738..#...537............523...%..338... 46 | .......770...............................415.......*.........32...............@..................420.....32............................-.... 47 | ........+...........781.....................&.......459.............649*213....36..493.621..........*.......7..458*103.......921...491...... 48 | ............921.....*.........373$..............*..................................*...*.......114.473.......*.......................*...... 49 | .....*........=.473....+..38.........120.......294................+519.............899........*...........263...606/.545..............828... 50 | ..993.............$..76....*.........%.....302.........886+.513............................193...*....................@...........592....... 51 | .......783..............872....533......%..+....................../.............................425...387........%.......958........*..6.... 52 | ........*..440*155..588...........*...894.....*56...339............78.@493.............261.101..........*......340...*.....*....+.....*..... 53 | .......423.........*........771..902.......167.........*...665.988.........606.....30.....*..........469..=.........745.610..542.......679.. 54 | ...................611.....*........................553....*......*252........=....*...$.....665...........102.............................. 55 | ....333...103.409.......583.............................688..92.........-........415....615.....*519............805.493.......297........... 56 | 751*.........*...............926............899.............*........963..420................&...............*.....*.....286.......=495..... 57 | ..................244.......*.........784.....%..737.......942.962.........-...3..........909.............160.358...........*............832 58 | ........600.830....*..779....988......%.....*......*....................%..........$...............262..................335.433..81.....*... 59 | .151.......*......................$......271.302.34.....150............575.43..425.109...169........@.....@......63..25..+.............849.. 60 | ........*........................923..............................$560.....*............*.....167.......639............&.................... 61 | 573..551.855............201................*482.586.........677.........802..619........83....*.....22........#......................560*... 62 | ...*..............747..*.......699.....+........*.........*....&..256.........................998..*.....823...993.........&.............662 63 | .164.634#..........*..556.........*...286....437.......483.815.....*.....*................654.....67..................#.....633.8*.......... 64 | ...........998..855..........67..398.............107...............610.620...........721.-.............946.900.439.283............959.199... 65 | .211*916..*..........&...524*.............436...*.............518...............893.*................*.....*...*...........=..........-..... 66 | ..........235..%...473......................*....54..............*.....-......../....551............833..994.81......*640...70....74....*770 67 | ...$..........950........190..704.380....442.............@264.821...-.918......................427................275.............*..248.... 68 | ....443..................*...........*........738.................484......................691.+.........%949..........749.....658.......... 69 | .............678.....180.350........232...........................................934......#........315.........$....../..............+..... 70 | ...833...920....#....*........131..................717...............222.....858..*...........%........*.530....996...........*....109...... 71 | ......*.....$.......389.331..@.......................*.................*.*......*..612......168.....672...$..........%.....788.15.......625. 72 | ...815..........................40.589...98......./...574........451.403..327..140..............................945...136............64..... 73 | ..............124..*........49......*..........200.........162....+.....................914..........461......./....%.................=..... 74 | ..808.......=......363........*......27....397.........107...*.......739+....232....+........68*395.................322..166+...=.......471. 75 | ...........465..............893..355..........*....70......963................*..133..........................................419.499....... 76 | ..................336..62.......*...........798.......*885....../..431.851..176.............=.............583$.....................*........ 77 | ........429....../....%...........@.................18..........54...=.*.............245.171.......29.................=936.........657...... 78 | ........*................405.......405.......*689........*994...........328...980......*.....159..*.............256....................-703. 79 | .....444..................*......=........275.........421........479............*....54.........*..324....47.....#....332*855.946........... 80 | ..........233....735*325.162....900.............................*................725....@.....453............499...............*............ 81 | ...820....*..............................848..974..82............178...54..............688.....................*...340.810..749............. 82 | ....*...234.....187....*967....348......-......*.....*...&148............=..626...*.........589.....501.........82....*..................... 83 | .712........$....*..858.......*.................706...49......................+...653.......*.......*.......588..............168.313........ 84 | ..........776...740...........107........612..........................644.................242..................*695......236.#....*....761.. 85 | .....767..............995..................*.447*...........130......*...........513..................................#........384....*..... 86 | .......................*..........306............275..............372.....................779.......&....&.....457.....731.............650.. 87 | .......................161..........&...213...................726......866................*.......813..398......*..376...........607@....... 88 | ..93..860....469.905............%..........*494...../215..../.#................@...980....501.................839.*....@.................... 89 | ......*...&..&...*....278........286..............$......183................840...*............941........300......578.259.558.....*..389... 90 | ....804..669.....392...................422........743.........323..425..........774.........@....*.229.........*............*...711.8.*..... 91 | ........................559.523..6.673.................292+..#......./....871=...........638....97..*.........629............28........975.. 92 | ..................*283...*...*........*........................*................./.@287..............124...............258.2................ 93 | ...*80.........545.....991....765.....595...361.......785...111.582...#........890......388.....*209......964...+.....+............475...... 94 | 971....666.................................*...........%.............500...653........@....*.391..........+....882..................*....... 95 | ........*....-........................115...725.238*.....626...............*...-...987..680......342*.....................540........409.... 96 | .153*....925.439....#..........752.....*............634..*...500&..177....47....73...................74.................+..*................ 97 | .................844...........*....305.................425..........-..................445*566.........652...........732.14..581..219...... 98 | .....794..482=.................163........624.....206.............................223..................*....%158..121........&......*....... 99 | .......*.......&..687...732...............%......*......47...........$.............+.....+..........323...........*...27/...........738..... 100 | .......591....313..*...../.......763..858......67.......*......550..812...$............375....334................193........................ 101 | ..860............................./................47...934.....*..........749....7..............*..830...938..............795..........#... 102 | ...*..67...............678&..........791...........*..@......622....$..808.............$.......452./......*......................539..580... 103 | ..320...*223........................%...........232..171.714.......139...*..............909............606.........=......272............... 104 | ..............................88.........445..............*.....$........717.......+7.............450............874......*................. 105 | ..............%...383......+.............@..............807...668....................................*735.................218............... 106 | ........699..598..$.....851...&...41........651*346...................63..................89...801.........*394................&............ 107 | .......*....................25.....$...........................*965............771.............*.......741.............$......229.@707...... 108 | ........20.853....100..438...........606..............916....20................*...........75..388.....*.....840..104.859................... 109 | .............*...#.........&........%............%.....................105$....317...........@.......349..../.....&...........239..104...873 110 | ..751......715...........72..345$................881......328.38*......................465......541.................=.........&.....*....... 111 | ....*..............................422...............208....*.............................*549..*....313.430.....892.................274.... 112 | ..88...-.....28....440.........305*...................*...789.@...../222.......898.............571....=..*............183....856............ 113 | .....105............./..................578*........14........37..................*.......................981..........*.....*.............. 114 | .........754..............+...561..646......637...................................544..707...97.................363..231...848.........410.. 115 | ........*........270.727.789..$.......*334......787*...979..............422@..120.....*.....#...........98............................*..... 116 | .......107.989......*.....................................*612...512..........*.......515..........460.@...476......463.....730....703...... 117 | ...........................132....146............................+........83*..849...................*.....&....669*...........*............ 118 | 320*......$206.........491*......*.....171..919..........486.........966$..........230......25.......126..............906....234............ 119 | ....690........%...............223.................156...*....*678.........................@....234.......=...350.....*............596...36. 120 | ................717..511*...............322..108......*...280...........12......#......615........*.....755...*......682..904...........&... 121 | ....#....................345......%406....*.....%.....169..........858...*...763.............%181.274.......74....$........*..998........... 122 | ..167....230...................%........341.......................%.....827........................................814..374...........922... 123 | ..................471........73..................852........272................717.....@617...100.....@..................................... 124 | ...................=..................*.....769...#..........*.....545.863........$............@....791....403.....298........402*763..536.. 125 | ......................*............963.693.+............%..621............-...........579......................132*....................*.... 126 | .535.......675.....975.314.284*..................=....49.......$.............454..211............316......................989...@.....600... 127 | ............*..................528..........&...793...........700...................*.....770......*.........-....321.....*......277........ 128 | ...391..291..625..........................703.....................972@...797........24.92....*......822.900...703....*212.558............... 129 | ....*..=...................160.165..........................#.............+..4..........*.262.............*......................+.......... 130 | ...837........736-..........+.....*...217-.347....446....785.....897..546....&...555.898.......382......75...48......../.....655..586....... 131 | .......................503......678.........%..........................*..........................=............*..235..321...=.............. 132 | ........536../....204....+.............807....................*833.677.480...322=.939...............587.....575..*.............546.......... 133 | ........=...974.....@...........$........%.......672.......317......@................&....789.-....&.....$......268..................780.... 134 | .................*.....276...248..............87*...............................757........*..815.....129............*...................... 135 | ...*....776......951..*............*157.................254......&...628........*........104......................941.563................871 136 | ....586...............88........283..........100.986.......*...142...*.......567...............783................................663....... 137 | .........641..........................213....*...*........468........127..........%.............*....202.........340*.............*......... 138 | .367......#......274............445..*......96.232..............175.............403.726...642..561......*............790.........433........ 139 | ....*.......241..*...498.........*...64............698*357......*...#4.....*..........*.....*..........210...961&........................... 140 | ...152...........236.............95............................517......789.836.....236..194......................................202....720 -------------------------------------------------------------------------------- /day4/input.txt: -------------------------------------------------------------------------------- 1 | Card 1: 57 76 72 11 8 28 15 38 54 46 | 77 87 71 98 40 7 84 43 61 64 5 50 19 83 79 99 36 47 4 95 30 44 37 55 26 2 | Card 2: 44 69 14 83 54 48 21 6 20 26 | 80 26 86 3 9 4 62 34 15 87 60 88 90 29 65 46 92 73 24 12 40 10 99 37 74 3 | Card 3: 15 60 63 84 20 93 36 39 17 19 | 68 80 17 91 20 84 69 72 15 39 5 61 74 99 60 85 19 45 24 79 53 36 7 63 93 4 | Card 4: 22 74 83 58 88 46 7 52 84 5 | 75 20 95 8 37 56 31 42 73 43 40 48 4 28 99 45 90 63 81 93 68 50 46 30 7 5 | Card 5: 4 97 41 50 32 26 68 84 5 11 | 91 70 87 4 88 13 48 51 32 34 38 82 86 11 1 50 40 43 28 5 61 89 84 41 37 6 | Card 6: 79 97 39 26 57 69 38 87 60 44 | 22 92 80 38 27 66 54 2 9 62 3 4 71 99 24 97 14 7 93 28 53 50 77 68 73 7 | Card 7: 73 91 51 23 90 67 19 81 50 12 | 4 76 97 64 19 85 31 3 74 12 23 60 20 68 52 39 43 65 37 63 40 59 99 80 6 8 | Card 8: 23 64 38 82 68 79 49 56 5 76 | 68 25 64 30 40 52 16 53 95 96 85 9 4 7 26 80 62 67 73 35 32 44 90 69 93 9 | Card 9: 75 87 69 31 8 11 89 49 95 24 | 35 26 68 69 42 66 37 77 25 45 75 72 38 50 27 24 32 46 11 10 14 95 62 7 86 10 | Card 10: 37 25 47 36 57 81 44 6 79 98 | 67 34 86 70 39 97 80 69 27 17 7 50 99 84 45 32 49 53 15 95 19 18 47 37 41 11 | Card 11: 87 98 16 76 21 53 8 42 40 75 | 21 7 89 85 65 30 32 19 68 22 64 82 48 62 39 46 4 57 77 18 55 24 34 29 67 12 | Card 12: 60 11 44 35 9 56 93 91 15 32 | 31 45 37 63 26 12 15 14 48 92 81 1 97 65 29 95 57 77 99 93 27 25 58 66 61 13 | Card 13: 25 75 5 60 47 83 8 37 2 43 | 52 30 68 13 1 92 89 63 78 57 87 75 28 82 59 46 33 3 65 41 47 69 21 2 96 14 | Card 14: 64 44 89 88 1 38 20 99 9 81 | 71 68 91 21 92 75 49 22 27 12 9 26 57 13 66 45 40 37 16 4 44 90 98 85 61 15 | Card 15: 16 56 91 62 12 83 25 3 70 61 | 81 55 73 96 13 7 67 99 88 90 87 48 83 35 19 97 9 31 20 49 38 44 41 45 5 16 | Card 16: 78 68 81 18 76 41 88 45 24 87 | 59 84 67 36 33 57 42 32 11 74 65 31 54 46 72 39 98 40 16 49 79 19 3 44 22 17 | Card 17: 84 11 48 66 54 86 28 4 45 23 | 4 54 42 62 81 8 92 45 47 66 84 48 18 72 28 86 23 34 3 24 73 82 96 11 59 18 | Card 18: 46 40 41 22 75 92 68 10 52 3 | 84 73 9 22 7 19 3 65 32 6 99 77 97 63 62 59 57 17 8 68 91 28 39 4 41 19 | Card 19: 19 57 22 85 75 69 50 62 65 61 | 35 24 50 47 74 97 61 27 66 57 77 75 22 30 70 41 62 69 85 58 81 65 19 91 63 20 | Card 20: 18 13 96 41 20 44 62 97 57 52 | 18 59 96 40 23 58 20 57 41 97 44 62 75 54 85 78 94 52 64 34 37 45 84 13 53 21 | Card 21: 34 3 13 85 81 19 37 97 29 91 | 9 97 52 3 35 48 24 34 17 50 21 71 57 36 94 82 19 4 14 83 98 37 80 91 59 22 | Card 22: 18 14 95 74 23 71 31 83 51 57 | 94 14 63 18 16 73 57 31 5 23 51 69 85 45 70 35 74 49 79 27 40 95 83 13 71 23 | Card 23: 54 12 52 31 58 93 9 45 27 64 | 48 54 93 12 44 64 56 83 35 94 33 4 58 89 8 45 27 1 86 90 52 31 19 57 9 24 | Card 24: 56 75 17 67 59 37 76 94 25 36 | 24 14 56 53 82 35 92 96 17 34 25 1 16 86 41 95 64 45 38 63 31 18 80 33 66 25 | Card 25: 32 22 47 24 80 92 96 67 5 26 | 22 81 87 47 26 96 92 60 57 64 66 16 5 83 67 49 32 39 71 80 40 63 99 75 53 26 | Card 26: 62 36 66 9 3 71 75 67 29 61 | 9 31 66 82 29 41 67 71 38 36 28 76 14 75 69 61 99 57 62 88 70 95 63 10 59 27 | Card 27: 46 38 59 90 1 65 16 80 76 34 | 70 15 49 31 27 71 54 46 76 1 8 77 93 2 90 39 14 67 62 16 78 56 68 9 58 28 | Card 28: 47 85 54 21 37 14 44 73 12 51 | 78 70 14 77 98 88 25 49 9 79 58 23 52 2 43 17 12 84 59 51 56 89 47 48 6 29 | Card 29: 74 37 60 11 56 21 87 44 33 46 | 80 61 34 54 9 3 45 7 55 13 98 84 10 19 14 8 90 81 50 69 31 12 38 29 78 30 | Card 30: 29 20 44 62 79 34 52 15 49 48 | 17 84 34 1 33 9 23 55 94 10 95 69 42 79 78 44 51 82 20 25 81 29 15 13 32 31 | Card 31: 88 41 38 98 34 40 92 36 25 50 | 33 54 18 53 46 69 8 22 25 36 51 34 42 92 85 45 40 60 84 27 97 39 10 70 41 32 | Card 32: 5 28 85 29 95 37 60 34 24 16 | 74 8 48 73 34 65 66 56 64 85 78 17 39 67 92 30 75 22 95 12 29 24 6 2 51 33 | Card 33: 71 31 99 53 62 80 65 32 13 23 | 87 20 55 24 42 19 67 77 37 89 32 83 44 9 60 46 47 36 49 35 92 10 82 2 81 34 | Card 34: 78 61 12 81 96 82 7 30 80 32 | 62 8 56 89 11 12 39 31 17 18 79 51 30 92 48 5 45 78 41 44 77 98 71 67 73 35 | Card 35: 59 35 63 76 51 8 53 70 24 97 | 20 36 31 17 77 26 34 15 41 39 61 24 35 46 80 74 2 71 5 91 16 11 55 87 4 36 | Card 36: 46 51 79 66 57 52 21 11 75 33 | 88 64 74 99 22 39 42 11 14 65 1 56 86 8 26 16 72 13 55 20 60 40 19 85 58 37 | Card 37: 83 88 1 19 95 30 38 43 14 51 | 98 20 22 55 13 58 93 21 68 11 76 70 71 35 44 90 52 53 75 17 96 27 49 31 26 38 | Card 38: 87 49 43 19 16 34 88 66 67 9 | 70 46 63 58 7 53 96 1 59 35 91 85 18 21 93 68 90 73 11 92 60 61 98 38 15 39 | Card 39: 24 68 25 61 54 63 30 37 21 73 | 50 84 48 10 81 5 62 28 92 66 96 6 20 83 78 88 31 89 12 71 60 8 34 70 90 40 | Card 40: 18 72 44 15 3 19 69 63 73 57 | 14 3 52 76 71 12 50 13 86 21 55 31 27 29 43 47 90 75 9 97 6 32 96 37 18 41 | Card 41: 81 66 49 20 86 80 4 55 93 44 | 87 81 7 47 25 85 80 51 76 27 78 10 16 50 33 66 13 64 35 18 44 63 29 92 48 42 | Card 42: 27 21 14 28 69 89 94 9 19 46 | 92 13 27 99 96 19 43 54 4 14 45 16 44 83 24 61 2 28 5 90 49 51 63 64 73 43 | Card 43: 34 49 58 85 23 88 84 78 89 55 | 72 45 73 23 75 52 84 78 46 55 58 71 98 5 56 91 49 39 88 70 42 59 89 85 34 44 | Card 44: 18 69 46 58 73 59 56 23 12 40 | 71 23 87 93 21 84 10 79 47 92 91 13 52 1 32 78 59 95 72 55 97 56 43 61 75 45 | Card 45: 33 47 58 69 57 1 82 6 61 48 | 48 97 4 1 67 66 82 12 6 29 21 96 90 33 57 28 47 69 74 27 2 32 58 61 9 46 | Card 46: 42 54 98 50 36 86 27 66 29 60 | 32 23 40 62 38 91 43 98 29 85 18 30 66 28 81 35 68 61 11 27 50 22 41 46 42 47 | Card 47: 1 31 87 71 53 17 5 93 84 56 | 48 26 14 47 34 44 18 93 17 88 61 8 95 74 53 50 56 80 62 84 99 49 87 52 1 48 | Card 48: 40 75 79 29 64 57 33 49 95 68 | 7 39 63 79 89 10 23 40 22 86 92 13 57 29 9 19 90 87 58 12 77 16 75 4 91 49 | Card 49: 4 45 87 47 71 35 9 2 81 77 | 93 33 49 75 11 34 62 39 83 40 55 17 84 43 80 60 46 7 18 56 48 66 95 57 74 50 | Card 50: 88 42 2 30 24 89 15 93 16 45 | 93 45 72 68 30 28 17 82 64 91 29 98 14 24 88 70 55 48 58 10 42 83 66 2 77 51 | Card 51: 91 96 87 48 6 73 95 55 71 89 | 94 49 84 33 82 9 21 32 25 46 65 15 86 83 66 11 37 1 14 61 92 36 35 45 27 52 | Card 52: 48 3 94 56 41 13 34 8 96 25 | 40 88 46 14 68 25 75 66 87 55 64 78 92 43 19 97 53 90 83 59 69 31 84 95 13 53 | Card 53: 13 45 61 92 91 32 49 58 43 36 | 44 70 55 28 2 6 35 79 24 54 82 95 52 73 75 84 34 57 21 23 33 22 80 88 1 54 | Card 54: 61 52 20 8 73 54 83 60 29 6 | 74 40 27 46 81 75 3 42 47 69 22 59 58 49 90 63 57 50 79 70 82 5 53 91 39 55 | Card 55: 41 51 64 55 57 44 26 70 62 34 | 24 82 49 39 56 84 31 27 86 77 22 6 73 72 99 47 60 18 53 68 42 19 66 9 50 56 | Card 56: 30 89 82 17 72 46 98 5 54 58 | 4 86 18 15 84 41 16 63 44 91 12 31 66 96 94 87 49 59 67 64 80 33 5 11 40 57 | Card 57: 39 80 17 47 15 96 69 50 46 24 | 5 83 16 52 57 27 98 43 78 1 66 90 19 6 58 3 49 94 85 62 44 54 75 14 9 58 | Card 58: 42 77 37 13 74 40 31 92 36 46 | 16 74 80 59 51 31 95 85 40 93 23 15 32 18 46 97 36 13 79 10 37 99 77 25 92 59 | Card 59: 39 1 78 7 57 46 91 26 12 94 | 46 13 26 83 21 1 67 78 50 94 8 12 39 61 86 91 35 29 32 72 30 97 57 16 7 60 | Card 60: 62 32 18 51 40 96 93 36 80 84 | 42 93 65 8 2 52 84 70 11 1 92 21 80 99 18 14 17 47 56 90 49 67 19 48 97 61 | Card 61: 6 83 74 89 44 73 39 42 47 88 | 72 74 42 21 88 77 18 6 83 85 49 73 5 39 78 44 64 10 47 14 89 53 98 13 92 62 | Card 62: 91 86 35 23 30 28 77 88 56 41 | 54 26 90 20 96 78 14 5 47 98 31 55 74 83 33 15 67 92 19 40 73 72 52 81 94 63 | Card 63: 87 91 78 92 33 71 80 47 13 65 | 32 33 56 55 2 4 61 71 91 97 93 78 83 74 3 13 47 70 54 80 65 60 49 26 96 64 | Card 64: 70 61 63 52 32 35 85 46 54 4 | 42 54 32 84 56 46 29 61 63 78 4 36 80 86 26 17 3 87 48 21 85 52 35 70 22 65 | Card 65: 83 95 45 97 49 67 13 92 1 90 | 68 75 20 96 6 33 73 1 50 14 17 66 34 78 54 84 92 9 64 61 85 88 72 42 12 66 | Card 66: 1 7 99 75 17 21 48 70 30 13 | 70 80 45 89 75 7 21 99 20 54 42 46 67 85 61 17 1 16 30 92 77 48 13 68 90 67 | Card 67: 69 55 20 91 47 31 33 75 56 39 | 69 31 62 20 58 1 93 48 35 55 47 13 56 60 50 75 25 37 91 81 10 39 32 33 54 68 | Card 68: 14 97 54 28 73 64 81 32 47 17 | 86 48 88 25 47 65 22 81 28 95 41 14 27 26 46 64 79 61 45 96 32 9 21 54 53 69 | Card 69: 6 21 89 82 75 48 46 56 68 47 | 48 32 74 30 13 56 93 90 68 33 41 58 21 47 8 17 65 6 89 97 75 82 46 26 59 70 | Card 70: 35 48 78 92 64 30 88 77 76 10 | 76 33 48 67 78 64 24 69 36 14 77 85 30 73 53 91 3 35 96 88 43 84 10 95 92 71 | Card 71: 59 78 57 66 15 18 41 83 70 35 | 7 62 19 30 48 97 89 71 40 27 11 63 60 47 23 86 10 84 4 75 80 69 61 67 25 72 | Card 72: 80 82 46 70 10 14 55 49 62 9 | 31 76 62 17 8 49 19 50 85 72 77 75 42 48 33 60 54 45 12 91 20 92 15 3 25 73 | Card 73: 38 83 96 47 42 99 13 82 36 85 | 74 86 59 16 49 45 81 61 44 39 3 91 9 26 35 25 55 21 19 41 90 70 10 29 4 74 | Card 74: 92 36 96 65 24 6 98 13 33 86 | 17 83 30 5 46 51 54 81 44 99 33 56 45 14 57 34 8 16 77 48 40 94 82 73 75 75 | Card 75: 14 21 57 66 33 8 90 7 4 28 | 91 61 3 84 89 45 60 56 51 10 58 20 96 78 73 93 97 44 19 15 12 90 35 87 42 76 | Card 76: 37 91 60 44 43 3 40 33 95 51 | 24 39 81 1 46 83 97 88 87 6 67 40 22 96 93 2 71 33 29 15 41 16 89 21 68 77 | Card 77: 91 84 43 9 87 96 37 64 41 31 | 35 13 30 43 78 32 23 85 84 19 88 68 10 63 27 77 61 50 41 94 54 12 97 86 33 78 | Card 78: 9 78 53 16 80 56 91 3 62 70 | 85 64 21 88 51 16 15 4 69 30 13 1 70 17 52 23 90 5 24 50 19 81 41 67 12 79 | Card 79: 59 28 42 51 66 58 63 9 24 47 | 69 95 26 36 14 62 13 20 35 25 34 74 40 41 9 39 45 77 5 10 55 96 22 81 49 80 | Card 80: 72 83 73 23 85 2 53 22 3 43 | 14 50 67 63 19 76 39 60 31 33 62 92 29 12 49 75 69 78 44 8 96 95 34 65 20 81 | Card 81: 2 46 29 50 65 57 55 83 74 12 | 4 70 97 54 68 99 81 5 84 10 73 61 88 66 27 8 56 33 79 47 85 49 17 16 34 82 | Card 82: 37 30 10 3 8 34 44 24 57 13 | 42 17 25 65 48 71 4 64 51 83 75 27 72 96 45 18 11 15 70 53 91 14 12 87 59 83 | Card 83: 82 81 15 4 54 96 74 72 37 70 | 37 78 72 25 4 66 81 97 6 83 43 96 61 44 15 71 40 54 27 70 82 98 74 93 7 84 | Card 84: 97 52 96 23 80 53 57 83 16 62 | 5 31 89 91 84 33 52 83 76 23 64 67 10 97 29 63 96 58 74 53 62 57 80 81 92 85 | Card 85: 53 33 76 24 81 68 51 47 40 89 | 70 38 51 50 85 57 89 40 30 61 1 24 54 75 32 33 96 19 14 53 76 20 7 99 47 86 | Card 86: 19 96 52 18 15 53 82 16 86 13 | 69 27 32 85 87 30 33 83 11 47 3 21 68 70 42 61 46 2 64 65 44 1 97 48 74 87 | Card 87: 18 40 55 62 39 95 60 11 76 46 | 82 81 22 46 92 80 62 91 12 40 76 60 69 78 17 18 11 93 56 39 37 88 3 64 95 88 | Card 88: 72 65 91 61 57 4 49 24 45 31 | 28 49 91 31 19 59 65 36 34 87 72 24 60 89 17 12 57 30 75 32 63 8 21 4 25 89 | Card 89: 18 24 64 43 33 56 6 67 8 16 | 40 21 27 52 3 23 65 89 16 7 96 31 48 73 33 37 18 99 12 50 74 26 71 84 8 90 | Card 90: 75 3 92 35 12 26 49 59 60 55 | 65 58 39 73 3 56 11 44 4 47 68 24 86 10 61 6 72 13 82 42 29 93 97 77 8 91 | Card 91: 78 40 49 75 60 15 59 7 31 93 | 71 9 48 10 69 29 65 40 21 57 68 87 12 35 81 70 30 94 36 97 51 43 8 82 5 92 | Card 92: 3 53 23 43 15 4 98 11 67 29 | 35 3 93 87 83 60 5 92 1 90 67 23 78 98 20 37 81 71 31 82 95 47 53 75 21 93 | Card 93: 20 61 6 36 52 77 59 16 18 81 | 66 29 4 87 61 92 78 30 68 69 67 57 88 83 71 54 24 21 13 56 84 35 60 86 53 94 | Card 94: 25 52 87 17 94 41 23 30 72 53 | 93 62 38 77 31 24 21 36 75 64 45 83 56 39 90 29 55 43 71 54 42 98 76 74 28 95 | Card 95: 84 66 91 8 26 82 85 96 31 36 | 93 51 40 98 69 74 53 67 86 23 77 41 62 89 64 34 5 26 50 73 42 43 13 19 91 96 | Card 96: 7 6 90 39 14 73 66 81 33 67 | 63 26 1 58 29 10 3 13 94 9 85 68 69 19 53 96 90 36 49 99 31 74 54 45 77 97 | Card 97: 66 64 77 7 88 18 40 24 10 63 | 28 22 62 41 30 21 19 12 50 43 46 42 56 6 60 36 95 82 97 2 73 55 38 53 8 98 | Card 98: 48 10 16 15 93 40 37 72 57 88 | 10 59 38 19 97 23 51 40 35 31 56 54 21 27 28 81 15 67 12 57 37 65 9 22 74 99 | Card 99: 45 57 7 23 86 82 15 14 75 35 | 55 19 84 37 82 39 15 77 42 52 44 18 75 45 7 69 67 23 86 6 89 14 43 57 35 100 | Card 100: 68 85 29 69 17 44 19 56 92 8 | 8 4 20 98 36 39 78 79 72 81 51 22 13 47 2 77 30 28 64 41 89 57 50 34 16 101 | Card 101: 6 91 90 43 85 1 19 2 28 9 | 63 25 2 9 83 85 87 43 91 6 62 64 74 28 19 82 92 29 36 1 71 90 60 99 84 102 | Card 102: 20 72 12 52 58 28 30 76 42 55 | 30 47 59 29 20 93 90 33 76 58 78 28 52 83 48 72 54 42 67 17 55 12 36 2 37 103 | Card 103: 58 18 40 8 73 69 22 74 26 63 | 61 40 63 41 82 87 22 8 34 6 73 95 69 44 45 85 62 74 27 28 26 4 96 58 15 104 | Card 104: 42 71 57 39 22 79 43 80 90 37 | 43 37 76 94 40 67 4 55 74 21 7 42 3 39 28 12 80 57 32 61 95 58 64 90 13 105 | Card 105: 60 9 50 14 56 11 54 33 77 84 | 77 81 17 99 11 84 70 60 5 43 83 19 80 13 54 33 50 30 87 31 9 4 37 56 14 106 | Card 106: 79 87 86 96 1 8 63 43 39 91 | 6 2 75 63 67 38 11 96 90 91 87 97 86 9 21 77 43 36 79 8 40 85 39 1 13 107 | Card 107: 97 83 21 39 74 64 79 70 77 14 | 85 32 55 18 24 14 79 57 51 12 4 21 23 70 26 83 39 66 63 1 64 73 30 8 77 108 | Card 108: 18 41 11 62 88 38 73 4 47 36 | 82 53 41 92 65 15 42 47 85 96 26 43 58 62 11 3 54 55 89 63 30 17 20 93 2 109 | Card 109: 28 34 55 39 22 99 98 89 86 54 | 58 76 46 70 91 43 2 79 16 25 89 42 78 52 12 56 44 69 80 85 84 99 62 19 15 110 | Card 110: 32 38 50 41 8 97 84 60 92 40 | 43 7 51 76 69 38 92 34 41 71 8 49 95 79 32 45 42 58 60 40 4 3 98 31 20 111 | Card 111: 61 7 67 98 74 21 79 4 85 68 | 90 80 4 8 46 55 40 28 30 38 64 86 73 51 42 66 69 15 29 6 52 78 82 49 41 112 | Card 112: 13 92 98 37 72 52 1 30 42 36 | 17 65 49 6 5 33 40 10 57 72 12 53 7 15 44 18 90 46 81 99 26 16 23 52 66 113 | Card 113: 39 30 46 62 55 42 32 77 9 37 | 37 21 50 40 63 97 28 11 51 26 75 86 80 32 16 69 77 60 6 99 9 72 22 55 79 114 | Card 114: 54 6 72 17 56 76 23 78 7 38 | 15 76 40 56 8 50 51 97 94 64 13 3 69 24 54 66 14 25 82 1 71 41 47 74 92 115 | Card 115: 50 66 30 89 46 20 35 59 22 88 | 96 72 32 97 61 64 25 70 4 11 88 34 46 6 10 73 71 79 45 33 66 50 24 13 42 116 | Card 116: 83 33 99 22 90 32 11 28 47 85 | 80 58 57 7 15 1 23 59 86 54 67 36 83 38 34 18 37 35 19 90 45 24 46 4 84 117 | Card 117: 95 23 58 8 76 82 60 1 15 80 | 75 77 10 85 36 52 91 54 44 96 97 89 25 67 16 31 99 51 68 83 55 29 3 20 33 118 | Card 118: 53 7 99 97 39 37 80 52 18 77 | 76 78 83 34 75 69 39 14 27 44 89 56 23 30 43 48 57 61 29 82 87 93 67 62 12 119 | Card 119: 19 22 6 97 71 68 59 95 67 75 | 91 40 20 74 87 46 4 85 63 64 50 88 14 1 54 39 3 62 58 10 28 55 27 86 60 120 | Card 120: 37 76 87 74 15 84 14 11 99 60 | 24 15 92 60 25 3 86 1 33 5 62 65 79 6 91 45 11 14 10 2 43 4 68 85 54 121 | Card 121: 74 43 96 14 67 85 19 51 80 95 | 27 53 14 15 72 99 85 30 33 20 13 58 12 25 36 18 45 67 34 79 32 76 96 95 55 122 | Card 122: 93 51 95 32 2 18 40 72 31 45 | 8 98 70 17 62 22 63 72 69 73 3 26 42 25 1 41 28 13 77 92 32 60 56 2 65 123 | Card 123: 9 82 93 20 35 69 87 40 30 67 | 87 10 67 63 76 23 45 35 54 5 75 79 66 40 1 89 71 20 77 43 90 65 9 82 37 124 | Card 124: 93 48 59 54 75 8 83 35 4 64 | 71 59 41 35 4 65 49 5 98 91 54 45 76 64 93 75 8 83 48 87 94 32 16 89 82 125 | Card 125: 24 14 40 22 2 57 67 35 36 98 | 36 82 19 88 23 55 15 97 78 35 94 24 67 52 14 30 40 56 38 57 2 31 22 98 71 126 | Card 126: 22 7 97 12 95 66 69 51 59 88 | 94 88 59 58 70 64 95 29 7 93 68 21 16 19 36 39 41 66 10 76 78 82 63 34 56 127 | Card 127: 46 9 32 85 22 20 14 68 98 61 | 69 25 4 70 64 57 14 89 41 98 22 53 27 77 20 56 84 42 85 40 90 6 61 71 60 128 | Card 128: 53 84 81 45 23 13 93 34 42 80 | 80 74 39 50 75 49 7 61 43 5 1 51 36 54 57 97 26 32 82 98 68 45 93 37 86 129 | Card 129: 40 29 85 88 86 7 49 67 91 92 | 86 38 79 31 57 34 78 17 52 53 22 36 62 75 21 70 88 7 3 49 28 6 85 14 4 130 | Card 130: 63 20 36 62 43 98 99 12 46 57 | 14 32 99 22 17 70 5 91 57 95 49 15 28 46 84 89 78 79 43 98 45 50 88 16 23 131 | Card 131: 7 16 87 36 73 82 11 40 14 69 | 25 31 82 24 50 38 2 28 4 23 72 6 51 79 86 46 55 97 42 90 84 1 39 32 27 132 | Card 132: 67 56 15 63 40 9 59 23 94 27 | 26 65 80 40 46 23 37 78 27 12 34 98 41 59 94 16 50 79 90 15 4 7 6 62 17 133 | Card 133: 18 91 27 52 4 34 12 32 65 41 | 45 55 7 3 84 79 54 91 75 80 17 49 42 9 18 48 59 6 8 22 94 10 93 53 57 134 | Card 134: 78 75 48 26 14 8 91 41 34 68 | 18 29 57 5 17 22 56 97 74 34 13 50 40 33 62 20 10 71 58 1 21 88 87 8 25 135 | Card 135: 5 97 16 92 74 51 61 65 3 14 | 15 50 86 24 99 90 59 32 45 81 97 75 6 25 29 80 9 89 46 70 40 57 42 63 60 136 | Card 136: 81 35 23 70 51 14 31 50 67 7 | 32 28 40 58 4 99 18 95 11 90 86 13 84 74 61 5 44 47 24 38 21 1 77 48 78 137 | Card 137: 74 99 57 81 5 1 90 9 69 30 | 88 23 97 7 25 68 78 91 53 15 55 81 92 90 12 18 50 71 61 75 8 76 36 19 34 138 | Card 138: 37 2 84 13 78 51 29 15 42 71 | 49 30 16 88 79 67 76 75 38 80 91 6 28 83 14 26 1 19 40 18 32 98 74 17 44 139 | Card 139: 49 75 16 61 39 4 51 55 17 97 | 11 45 56 47 81 78 67 21 57 42 84 58 8 13 10 91 7 19 46 14 90 87 26 1 18 140 | Card 140: 39 19 41 45 17 30 29 66 61 25 | 61 53 29 41 37 30 95 93 45 17 8 21 66 10 14 78 65 18 39 5 52 91 19 25 4 141 | Card 141: 7 66 29 40 9 14 34 64 4 31 | 98 63 65 6 92 56 81 67 48 88 49 18 38 61 13 95 28 85 20 17 21 30 58 52 89 142 | Card 142: 32 88 54 27 21 86 49 87 44 45 | 15 44 67 75 87 79 21 10 34 70 54 49 88 3 28 32 65 27 43 98 53 64 45 86 9 143 | Card 143: 14 7 67 53 37 73 45 18 62 34 | 87 68 3 22 40 86 26 85 70 4 61 78 1 29 48 12 37 10 77 54 99 36 94 79 15 144 | Card 144: 92 35 52 27 19 16 58 4 22 85 | 47 37 30 51 96 28 58 81 85 9 19 10 46 22 27 7 35 52 16 60 4 92 53 13 84 145 | Card 145: 71 32 62 83 43 20 97 57 78 24 | 88 34 23 25 67 52 11 9 49 80 70 29 43 2 44 45 62 56 33 3 20 98 28 77 79 146 | Card 146: 99 11 17 93 16 77 1 46 55 68 | 25 17 77 99 35 53 3 84 98 2 21 74 27 58 16 20 33 22 39 28 69 9 92 46 52 147 | Card 147: 56 26 30 23 66 94 82 47 14 49 | 68 41 6 13 99 7 71 67 35 93 57 84 44 40 70 89 42 63 74 22 20 55 33 91 64 148 | Card 148: 21 6 43 36 7 44 61 23 93 57 | 53 20 51 59 74 77 16 92 47 25 62 58 18 85 3 63 46 81 99 5 79 70 69 75 34 149 | Card 149: 31 36 91 20 17 50 1 18 64 52 | 66 90 80 33 26 24 30 58 45 77 25 29 44 48 6 35 96 13 78 65 68 98 93 89 94 150 | Card 150: 81 91 37 66 12 33 59 97 38 32 | 61 38 91 95 75 85 48 44 37 47 84 66 35 62 79 94 25 22 97 17 10 31 96 5 78 151 | Card 151: 32 35 11 75 63 61 42 62 10 56 | 4 44 53 12 50 76 51 5 82 25 30 8 89 41 34 98 54 96 37 74 35 16 31 57 65 152 | Card 152: 96 60 29 43 99 19 80 8 5 2 | 87 52 19 11 99 35 20 60 55 80 24 21 8 61 38 78 42 28 95 6 64 65 49 59 26 153 | Card 153: 53 30 75 13 87 77 56 89 63 6 | 7 54 93 80 47 4 72 9 69 44 97 96 23 24 94 67 55 8 33 30 37 6 14 5 3 154 | Card 154: 10 65 46 58 13 25 69 52 19 3 | 47 41 9 3 40 79 89 21 33 73 14 7 74 65 31 62 24 69 60 87 12 16 53 80 82 155 | Card 155: 24 51 35 95 93 73 36 65 27 20 | 14 83 97 94 29 39 19 38 33 32 44 92 60 25 76 64 49 71 65 34 91 31 53 74 23 156 | Card 156: 52 31 50 54 82 42 23 9 39 3 | 29 64 88 70 48 74 12 90 75 57 23 25 58 68 36 33 73 5 84 28 47 92 50 41 21 157 | Card 157: 66 20 50 96 6 84 54 67 59 81 | 77 60 38 65 37 44 15 73 23 83 18 71 89 53 90 36 40 32 2 39 78 63 8 51 19 158 | Card 158: 38 46 85 81 87 86 98 90 37 34 | 41 71 35 26 12 19 51 93 39 20 76 24 7 80 50 56 49 2 57 84 68 92 54 1 75 159 | Card 159: 61 36 84 47 4 22 49 17 31 75 | 77 83 49 55 84 80 18 44 31 47 22 67 4 68 69 35 75 5 59 13 61 39 36 54 17 160 | Card 160: 90 70 62 65 87 95 15 77 76 35 | 70 94 97 10 90 80 35 27 84 87 42 62 54 26 95 57 82 63 1 18 92 25 49 64 21 161 | Card 161: 44 6 28 50 79 16 15 83 45 53 | 79 72 12 45 50 35 67 6 89 28 15 61 16 7 46 36 44 55 27 92 1 59 83 53 94 162 | Card 162: 29 51 46 64 4 75 37 78 81 71 | 83 71 37 39 74 66 32 1 51 93 43 46 20 3 15 50 81 64 75 73 78 29 33 4 22 163 | Card 163: 1 52 37 97 88 47 94 10 98 5 | 85 31 33 46 15 1 16 61 98 59 64 94 83 68 35 11 44 80 38 36 84 72 86 40 29 164 | Card 164: 60 40 94 62 18 71 92 25 21 64 | 64 18 58 76 38 55 40 45 71 92 73 75 25 62 12 94 68 79 23 91 21 60 72 39 7 165 | Card 165: 63 88 91 22 85 18 39 55 33 84 | 95 88 37 5 39 46 33 61 32 45 74 20 27 35 76 85 84 18 54 86 91 75 22 55 63 166 | Card 166: 72 11 31 50 53 82 41 74 62 87 | 42 34 50 11 96 3 77 7 37 22 44 38 62 1 87 68 12 54 74 53 47 82 69 89 85 167 | Card 167: 79 26 70 95 25 16 18 37 75 61 | 39 11 68 61 44 53 42 94 37 45 75 78 62 18 95 26 79 92 38 13 16 64 21 91 57 168 | Card 168: 94 86 69 88 31 15 62 44 19 14 | 3 24 29 8 44 61 89 7 75 15 91 36 45 70 66 4 35 6 71 22 25 39 55 33 18 169 | Card 169: 86 68 72 15 42 99 9 35 2 74 | 42 84 59 86 6 15 53 89 85 79 20 68 62 61 10 2 9 51 99 54 33 35 13 48 93 170 | Card 170: 83 6 15 80 93 63 79 50 69 5 | 15 25 6 93 69 50 83 68 16 40 66 58 63 79 52 7 80 34 61 95 5 33 78 91 32 171 | Card 171: 33 85 4 12 72 62 49 67 17 53 | 4 17 53 72 47 6 49 56 82 48 12 26 30 85 61 15 36 70 64 25 2 33 67 46 62 172 | Card 172: 98 63 26 82 12 61 56 95 27 99 | 76 30 14 95 26 97 71 19 57 67 73 48 63 54 82 18 98 27 61 5 12 44 1 56 74 173 | Card 173: 7 32 34 4 22 79 27 10 78 65 | 3 81 65 36 91 62 94 54 41 32 12 28 39 34 18 61 78 79 80 66 9 63 43 72 97 174 | Card 174: 14 78 60 32 26 31 15 80 11 72 | 1 31 33 35 73 83 97 36 21 3 26 9 91 23 51 84 82 70 22 20 34 90 98 87 69 175 | Card 175: 73 14 7 11 20 64 30 90 62 23 | 60 53 15 73 63 19 71 92 48 89 80 44 78 79 2 76 45 64 42 35 81 27 10 21 26 176 | Card 176: 32 30 39 10 1 3 67 66 94 62 | 86 95 56 54 58 35 90 19 74 43 5 48 17 2 46 65 97 71 36 31 69 8 47 94 42 177 | Card 177: 24 90 40 47 51 75 63 29 57 10 | 49 68 61 43 30 26 84 59 99 75 44 41 17 24 12 38 90 37 36 35 91 9 89 46 8 178 | Card 178: 73 74 31 76 10 21 70 3 30 41 | 39 14 30 70 79 75 97 44 87 20 92 12 86 56 18 46 8 90 23 98 2 59 28 53 3 179 | Card 179: 78 44 89 84 50 97 55 90 77 99 | 79 1 88 65 2 50 72 68 7 15 85 41 64 93 37 16 53 44 42 48 89 97 59 60 8 180 | Card 180: 55 98 13 45 33 91 88 4 49 37 | 18 44 64 83 56 79 81 26 78 54 72 75 11 70 66 57 73 61 62 34 19 95 93 94 76 181 | Card 181: 94 47 65 55 8 45 1 67 71 25 | 99 34 43 64 36 50 6 51 27 59 37 40 3 98 72 78 38 74 82 46 85 90 48 32 84 182 | Card 182: 78 75 63 31 30 70 84 50 28 19 | 61 18 58 87 77 48 71 50 91 92 60 86 73 94 85 57 97 15 1 25 74 67 11 68 47 183 | Card 183: 94 27 68 41 8 72 48 85 97 49 | 81 35 90 69 76 18 53 1 59 25 88 31 4 93 84 32 9 55 66 50 22 62 43 60 17 184 | Card 184: 40 31 56 54 59 98 93 81 24 44 | 62 42 93 56 99 10 81 59 37 6 41 66 44 72 31 30 20 54 51 24 27 83 40 73 98 185 | Card 185: 38 73 79 48 3 46 99 93 50 24 | 65 34 40 2 20 92 10 32 67 57 22 47 96 11 7 31 87 6 28 95 77 25 58 29 27 186 | Card 186: 47 65 99 98 90 68 13 49 51 10 | 90 82 27 68 84 83 57 50 18 5 49 65 85 10 46 13 21 81 73 51 71 47 98 88 99 187 | Card 187: 25 56 18 15 59 47 20 86 50 83 | 25 57 83 36 56 87 50 34 9 70 4 64 77 45 92 13 20 47 48 15 97 18 86 28 59 188 | Card 188: 99 16 44 2 85 17 71 45 49 11 | 94 13 45 36 77 89 26 6 39 27 84 1 80 21 73 41 33 90 46 72 65 96 34 71 83 189 | Card 189: 34 24 76 68 47 19 85 15 50 46 | 43 67 4 44 14 34 19 61 47 68 50 46 99 94 16 76 15 28 36 27 52 85 88 24 89 190 | Card 190: 56 20 43 86 2 88 87 30 14 4 | 43 14 19 92 3 23 87 74 50 97 2 88 18 80 20 86 36 41 95 27 57 98 49 30 26 191 | Card 191: 47 2 18 84 91 66 24 6 42 56 | 12 93 7 50 42 45 2 91 66 4 32 47 19 56 49 18 15 24 44 84 97 6 16 31 25 192 | Card 192: 42 88 68 56 93 48 9 52 20 70 | 30 93 42 4 68 70 36 56 9 15 88 98 64 67 33 91 20 61 50 27 13 94 52 48 85 193 | Card 193: 46 57 19 40 9 7 47 33 86 11 | 65 54 38 43 82 55 79 51 77 73 74 97 75 96 6 47 62 88 92 18 84 48 41 29 52 194 | Card 194: 58 23 35 79 82 72 44 93 12 43 | 43 60 2 24 77 48 61 25 44 75 35 12 93 51 36 72 6 31 29 50 37 80 19 14 87 195 | Card 195: 15 77 78 50 36 83 68 52 86 26 | 16 72 67 88 14 81 34 24 71 32 91 77 90 1 98 95 7 28 49 84 86 20 44 73 56 196 | Card 196: 25 3 32 15 1 56 27 51 82 81 | 87 79 15 11 98 54 56 88 18 92 69 25 66 27 60 58 44 1 51 3 32 81 12 72 41 197 | Card 197: 3 99 81 8 93 28 76 7 27 48 | 78 98 85 5 93 77 72 62 69 82 50 9 35 74 18 10 33 67 90 31 79 84 58 29 17 198 | Card 198: 26 81 19 24 59 82 8 95 86 17 | 13 22 10 96 19 20 88 3 90 78 24 9 50 34 6 94 7 60 44 76 31 81 26 33 43 199 | Card 199: 77 91 58 16 47 94 23 30 88 5 | 38 66 12 25 95 67 72 89 36 45 63 15 54 98 74 57 32 39 59 28 7 62 82 13 26 200 | Card 200: 82 47 52 12 83 4 26 93 33 9 | 31 30 91 2 6 27 28 1 81 8 75 92 56 57 41 24 72 85 53 74 59 11 66 32 54 201 | Card 201: 4 13 26 57 84 17 63 10 98 56 | 72 85 68 47 44 60 54 34 38 16 8 11 23 84 32 18 69 13 26 35 9 73 43 15 89 202 | Card 202: 11 9 1 42 71 78 97 89 8 10 | 33 17 81 48 60 96 69 37 12 46 73 4 76 54 86 91 28 5 51 98 99 84 13 85 32 203 | Card 203: 37 80 7 87 79 60 6 49 16 12 | 23 34 15 46 38 20 27 45 33 97 37 14 68 83 49 79 43 70 57 60 11 63 24 35 73 204 | Card 204: 84 24 48 76 7 18 77 37 69 5 | 88 39 92 94 34 37 11 40 85 35 2 81 73 58 42 66 83 9 56 12 14 51 62 20 7 205 | Card 205: 5 84 4 6 95 77 59 67 74 35 | 58 47 29 34 79 86 35 89 71 96 27 64 90 48 37 78 1 39 46 21 98 91 43 8 56 206 | Card 206: 56 21 34 13 1 17 99 11 76 60 | 36 24 83 31 50 19 82 32 61 9 98 71 79 39 97 37 29 13 27 10 52 22 41 40 59 207 | Card 207: 62 7 22 90 51 96 12 13 36 52 | 48 37 70 24 73 51 83 3 5 77 29 87 23 18 26 76 19 97 20 86 84 14 63 33 21 208 | Card 208: 40 42 5 91 29 59 70 49 23 94 | 82 81 30 61 64 65 19 9 67 75 92 16 26 52 73 43 55 35 17 93 39 90 74 53 51 -------------------------------------------------------------------------------- /day1/input/part1.txt: -------------------------------------------------------------------------------- 1 | sdpgz3five4seven6fiveh 2 | 876mbxbrntsfm 3 | fivek5mfzrdxfbn66nine8eight 4 | 554qdg 5 | ninevsgxnine6threesix8 6 | 4fivehmg614five 7 | three6sdnttwothree3 8 | two26four2 9 | 586dntdbtmfourrjnjdzptcfrpr3 10 | dgkclmseven8 11 | onepeight8sqzkrvvn 12 | ninednnsjeight5c9hkzkhrgzcz4 13 | 42pchdjlnsxr688pvlgsr 14 | vmzkvb5six4fiveg2 15 | 517fourone7kthdrcxm 16 | sevenfourjgtwocsqzfbsqvb9flrlzxpx 17 | 3jqdxrqqzhkgg2fourthree9four 18 | qjgfbnqjeight4onejm84sevensix 19 | pgvthree1six15nineoneone 20 | 56ninefivefhnmmh5fdqcvttpsjseven2 21 | sixtrvj12twomq 22 | 2jmxzzm9xhxmndgbhjlblhsnine75 23 | pckdqrp8pgnmkgv9onetwoxlk 24 | 73mrflhnfzfxjqrqznj2 25 | tfourninegnjhhdzsix6sevenfive 26 | 35zrgthreetwonesz 27 | 9fivebstlx42 28 | 6threenine 29 | threebscrccrt94four3gvqdkdtjphmnmmf2 30 | 3seventwo3jmzxfmcnvjbnsgbgktwo 31 | vhljqhzpbtxcssix3dbvttwo 32 | 4ninefour6sixpccqltcpvh 33 | 5fourthreejngfour 34 | 33rgkkfiveeight4xq 35 | sixklhpptnnk8qvgbdcn 36 | 3bdtsjdfbmv8eightseven9sixqgfcmfpcone 37 | vhckknzlvcpfvttnmnk5zcvs1eightnine 38 | qheightwophxbnlv5nine8bknvnkdbps 39 | 7eight3gccqdgrltpkpt 40 | qvjqtqffvtp2six 41 | eight5ntzknggp5 42 | eightone6fourkf 43 | vlksmsxsljlnhtwo3mrc3five 44 | one2eight 45 | bqnjmjsznc67tdvtpdt 46 | 8five57sixfive 47 | one4zhhlncnbncvzrsbsslnh 48 | nqdftnsevenonellvpsdhrnrtrdjhbqscpd78 49 | 1fivefourffm3eightlcssevenclsjtb 50 | 7mqqgglzqmpk415gcggplprone1 51 | 2jprlqkpb1sixhfbvzjrgsrpjzbhtgrhpfour2 52 | 9twotwoqlvkrkhjthree44shvjxkpjgzgphgprflvn 53 | eightgsonefivefive2 54 | 7sixmpnbgtmzrdbfive41 55 | tkrcfive2eight23four 56 | vgbqvj5mjplnfdsqpfone2hpxz 57 | kvl7onehdvvfdghbsngrgn 58 | tlsbhjblnpdlrtfour6btjcfmgdvtfive 59 | 6qnfivehnt31qcpmnhx 60 | onesnqrgxstfmzhtln5bnldmvlqzsh 61 | fourgn5fourggbddjsj34zncxtmxxvsvs 62 | 4lnr6xjkpzdgvsevengplkjdjtns 63 | hzfplpdt9 64 | sf2twolj8 65 | 6zghkzbfdjctpfp1 66 | eight65 67 | tvzmxzstsixmkvjkjl6eightninefour 68 | fivephplggzkmfivetjfourmvcpnjxfvg58eightwoc 69 | 1fivehpleightfivethree4 70 | zeightwo8 71 | 1jfcztzr5sixoneshmlpgtwofour 72 | 3zksglknjmvqfqhfiveeight76onemldlltn 73 | 9four4vtg32srrbqfczmnxdchtbvc 74 | csdb92sevenvsnxdbd 75 | 4sevenseven6 76 | 8two8rm3fkbsvphhdrznine 77 | trp149zxzrkk 78 | 948two9ninenine 79 | cbmfivetwoninekqbkhkddc3rlfxlfh 80 | btvcshj4seven 81 | 964sjxonesixgcjxmtnine 82 | nb83fivegxnvxxrstqnine 83 | fgoneightljvnfour5gfsix4sevensixt 84 | 6one97 85 | three3two3sixtwoeight 86 | kxonesix59xtmbqd5 87 | dfqfcbv5mjeight 88 | nine2nqhrsvkvzzkkvnn6oneightlbq 89 | eight8rztdlm 90 | ttcfdskrxlqlggmgfourthree11two4eightwopgz 91 | 8seventwooneightfcj 92 | bmt8nine 93 | rjzkjlgone7four2cffkgq6eightccsmvxhkk 94 | 6qkdznvrcdltdgpn75vvmvf 95 | tcjhrgtlsixjsrbxdnseven3hkd2pnklcmshsf 96 | mzptwone7onethree4tzthree 97 | 1sixgnvzbhscjgcr1gxfzpm 98 | 15twoqzplbsmfcnznrgrnthreetwo4 99 | six815eightbdrone5five 100 | three9pp21h3hzzg 101 | fivetwothreezdhthree2dggsdgfdrx 102 | mrqpblvqvfour5zkvvfjjbr8plzkh 103 | cnxdvg8 104 | pzxeightwogxxmtgs6 105 | zcddqkhkjlfive4onexkdggcbfbqzxhfxqnb6 106 | 3jqncxxjjz7 107 | bcntgllhg4 108 | 9sixpbgnine 109 | eightsevensixfive45861 110 | qhrqsppdxdnseventwo3fiveeightfour 111 | fiveeight9 112 | qvbvjzbfzrtcsxdrsxlr1fourjtqckdjg3 113 | sixfour728onethree 114 | fjponeight728fourndlcrm 115 | 8fpbcvbone8ltzprklvgdcjhhsvq3 116 | 8sixhqmsixxqmclmgvhfive5 117 | sevenvvc376ckfrjjjcn 118 | 5onelxvs 119 | 6eightjtfphvprone1ztrxq2 120 | 6789bnfjqg 121 | zfrpr12two 122 | 8eight6jxmvxhchj 123 | 81fiveeightfourpxmdcfbqhf 124 | hpxnskbgbjm9hqllklsxq6fivecvsxvpl 125 | xjbtp57two5onefmkbzdtwo 126 | five6fourhpk1twosix 127 | sixxkqhckjdffmsjqgt4xjtgq 128 | five9rxrzgk1 129 | z2seven 130 | six6nine16three 131 | four66lzqjdpndp5four 132 | 2zzsdpx6vfckpgvlprx 133 | kmlfslspdkxp4smpqkcrdpfn 134 | seven7xqtszl3oneninetwo3 135 | ninethreegrxg78lpgstkpvckngrbd 136 | 746eighttwo8two3five 137 | one7nine2fourqctmjggsgtlvj8 138 | sqdvmfrssz9rglsczgbdk6djnvb 139 | jrnkffhkdseven86xvfkvlnv1three2 140 | 3jgjdzz887 141 | four6threefivetwohgfrcbtcpv1 142 | 8nine23twozhnbn2 143 | 3four9xmdqjnvscqvqftbbbqbgp8cpczg6 144 | 96twoh4lrczqsvtfrj3 145 | hgjvlbzrdprtrfivedhhsevenfour8five 146 | threethree2sevenvsmlpxbsspxrgkfour2 147 | 4threethree7ptffzx 148 | 1eight3nktcptcs 149 | 545 150 | 2hvgvkrtqtdfk9rvnklqqjdfcvvmvx6 151 | qhzvtqlmghjjtpcjeightgbkqjpsjqjbhseven283 152 | dlqnqbreight64668jjcsoneightxfn 153 | 84lqtmgjxgcr 154 | 118 155 | hceightwobgcbsbtslf2onebhkdqlpvxxjpgsnmzfthree9 156 | fxhxhdlkfrdhfslllsevenjvzdcpkclxx6four 157 | 8ppsvxfxpbv87threefour 158 | lonenine4two2threenx 159 | xtvtjbspvcrlrhbczkqt199 160 | glspl5fivecfzjjqjktmvcnk2 161 | pfgcqxjkkx7sixjcgmgszzbv1gnpvjmckfour 162 | onebtvsctzzbxcvvvmltwotwo73 163 | hpxl9dgn22twordrsfk 164 | dsixbtsbccxgkheight6hfsix 165 | foursevenqztbvqhbghmtlq876two 166 | 7sevenzdhsmmrdrmvzddp7sixeight14 167 | one3fourtwoseven71 168 | hbzs5threeeightjkjmkg91rsthree 169 | 3jfshzmtdrsonejtonelmjfkkjrmhzfxttm 170 | gvcxznvtdtgkhrvbnlqsxbdq677 171 | ffjqbssh65mpvkpqcgvmlzsevenlrbhfourone 172 | 77khln 173 | 21sevenhnine4fivevclbksgpxxhsz 174 | fldn4oneeightknbvh43xjqnnkgxv 175 | 1fourtwo 176 | dbvskdoneoneone44gs6 177 | kqvmpr16twotfvjckstvg6 178 | 1msix522lbnt 179 | 2eightlgsfcttnchptgq1eight 180 | onesjpcjmss15vqlzlkfqtpmmrkkbseventwo 181 | 1pqzgkhhfltwozqls 182 | 28twothreelmgqkpnfourfivex3 183 | eightxvjtsevensevenpcrjtfcllzeight3mbjdjnklgxzzfdz 184 | 8brsfjhmbjl9hn 185 | 4eight68fivesix7 186 | ninethree3 187 | eightone4 188 | nhhrrvvcr5oneninesix 189 | 8fourdzzbsxlsnlqfsjjjlf 190 | one866onemgzhsix 191 | stwo56tj4two8 192 | 9fourndxfjdptt 193 | hgvxgninelbvvttxlqpljt77one 194 | 9sixsixbhtqsfgt 195 | tworvghztldrhz98xgdgkbpfj 196 | vfhtlmxkeightsxpfcvbvmmms5txnktxhj5 197 | 1njpfjngfone 198 | nine4xcjdsmbdl 199 | tdzjr493threeeight1 200 | 9eightgmcc 201 | dsmr83svmgltgkkzpvtfmdgfjff2 202 | qtm7four6fivejmbcnrfpv3pffqsrmcd 203 | 7zdmrnshs843sixfourfourfxxg 204 | d898two66eightbrfrxmvx 205 | 11twophvzjqhslk3ppcbqxpxq 206 | sevenqrfrngkndc8lrmtj3zhczpcrhxfjxrdp2 207 | brbpcldn7sevenone2six9 208 | jgsjnqjgmfcs7fourfive7dbtqsvj 209 | 2bb7hrtgbxsn5 210 | xqvhhlzkninexhgvfvfrpgjq812 211 | 17eighthggxphbzz8zxlcxdrvvkxgb39 212 | 4sixglxd 213 | dkeightwo1xmfjmvxxmglbsgkbphrll 214 | 558gprdd 215 | kzjnpmthree3three 216 | dkpjssgpsgglngk6zfrktlgchtqxbzcgxb 217 | 24four92fivegccfourxcnl 218 | 5xjc 219 | vhmxtlhcrlrk59jgsix3 220 | 59twokqpjp 221 | threefive65 222 | sixdnqlxcdg9six 223 | twoxgdmq7dhcxjnxr 224 | threelxtbtjdbtonecpxtwo5sevenfive 225 | fptqvt9onezqc 226 | threec24onedxcjhninesevenbjxlhtgfmf 227 | sixrmjbj87sevenn 228 | 8thltwosevenscjrsevensix9jhjvbb 229 | nine1bbpflkrjhgbrpeighttwoseventxfjmhjvsj 230 | snnddlskllxqcjtceight1gmm4tfcfccxmjg 231 | ddjr3549 232 | 8twoseven7kpseven2dj9 233 | hsmqtbrjgs5cbxjlsnzqcdldhlv4mf1 234 | hkdxzfjvzrxnjnbfgrg4 235 | cnjsnqmbzrnsbsevenfour3 236 | eight25three4five1 237 | jz5jxvmfrgttkkpxffbthreefive2nsix 238 | 4pdbdkx234 239 | fiveseventhree2nine1eightf 240 | pvgfour284mqtx2brsqgkgjlgvpkhxmd 241 | bhtlhjrgv94twofour 242 | dbbvkdhhqheight83xqfbhtxpqtsgpqmssevenone 243 | one6beightfivebzgmgdq4six 244 | bftwonekfgfsvdfxqlzrglm5cpmkpn 245 | five8fourtfltzzkvxzpzqhb1gvhqkcp 246 | 2vfrzrhnfx6799 247 | 5mndmdcjsr63 248 | 72fgbbctshbrsix3tpggclvpf9bgsc 249 | xdjqkrkfnh2threefvckhksevenfournx2 250 | nineninekfcdjmfqsrgpb61f 251 | 5threeeightninesix1fournine 252 | 7dzkzn 253 | two5twoxzngtwotwosixl 254 | pjmqfour81eight4 255 | rsjbbnqfrlppflstq3zxbhhn 256 | rlsrv1seveneighteighttwo47 257 | 55sffiveseven8two39 258 | 675kjvqfdszmdvztvkczxbr 259 | eightthreemrjtrfgqvsixtwo2kxnbzmnhnine 260 | twoseventwo9rcvqmkxdvsevenone7 261 | 2threesvvtztllvl52rzcscj3 262 | 424eighttpjzxtx 263 | 8jgfivextbkqvdhl 264 | tqrvp1gtpczqlpvr 265 | fsmvrkdrnine9pk 266 | jvfdlvnvsixthree8three22 267 | one5jzmdfh9phqkvb 268 | 7twoneklt 269 | 5nineeightxjgtnkfxknine1twofk 270 | 31lkhbnzckbcmxvdpmqqjtbn755 271 | 2txsixfivezrxvkktnxlnsfive 272 | bkjczmrcpqjxjfx4xkxfclthzthree 273 | eightsevenjscz7flvltvkmqkthreevqgsg 274 | tzlhm1lbmmnineqdpvxlv14threefour 275 | 1eightsmkmsqbs69x7chhmdd9 276 | three18onexvh31sevenone 277 | 24sixshjtwo4 278 | tjphmjzvfclddbfc4foursevenone9zrckvdqn 279 | rbffkrsntqj2tf24gfrlzzsr4 280 | 7ninerktmfsfoursixd 281 | four296six87five 282 | zkrxfsvm5ninenkhc8 283 | 96mgvzrmxzpjfourlnsninenine 284 | threepphgrmqlxone56 285 | plt372 286 | lgleightwojjvbkmhkvklscxrzpn6twovvsdzrsixxdcskxhn 287 | p7six 288 | sixthree1five6sixfoureight 289 | 2zjfndzqqzhkvqcfljpkdntdm4 290 | sjldrrnv6npzqdnpktkshcqfh 291 | four369xxvbqbrgvx42 292 | dlqtsthreebmt91vfmjxk47jpdbkjr 293 | gpdxdnine76nfrszxgnine 294 | 34seven 295 | 366tjcone6btwo 296 | fivelvvstsjvrxppznsxkmjr7gkpmhrsfxxvmxtlf8 297 | six1seven 298 | 5threernlthslpdjvjv1 299 | 1ninedbzjj 300 | oneeightrdhsfrcd7dfour 301 | 9seven92hlssjltd2four 302 | 934qjgrkczclghnine5kck 303 | hqk7pfqsbsevenseven 304 | threefourckvkbtwomnbrcv6flqr64 305 | qzmfhjdvjqjkrzdsvmdhpd61xphqddjgnsthree 306 | 96zspcjsixqzbcgmjrjbtk 307 | 6bgzmtlkhpsixfournrlrvghthreeeight 308 | 8qrvhrjlgjb3nine1ntcrx1 309 | 4onegk959 310 | fcsczdfkfour9seven 311 | ttkqsjgnrfive7vzbjr26pqlppfrxcndqlmrtpxqndgqp 312 | bxnxvlkhd9 313 | 46sevenvnbsqvqpcthreeninesix 314 | vdjltg8 315 | five3onevtxxtseventwoeight7 316 | 4seven684hcvm1 317 | two9klzeight8 318 | q259 319 | mfzsthree1 320 | zmqfivegfqzsfxnp5tdp 321 | zrpggrqldx221nineeightlbtjbtx 322 | fiveblninegkgfive3two8 323 | threetvlsjbmnfive83three 324 | tsixbqffhzfive8 325 | ctxbssevenbrcvxt9 326 | ft5ninetvh8 327 | fivegdqst1two 328 | three16oneqs 329 | ktfphzlgone7 330 | 884zjgkmtddggchgvfvg 331 | fourgsnone1ninefvltlzcgcrjhrp63 332 | threentwo92 333 | xjlttwo6 334 | nfhpnmff9foureight8 335 | 5nineqpdkbgdfourseven1three3 336 | ltnmsixnhzfnckdzpnheightnine6three 337 | sixthree9fourzflqn28 338 | dknzbthreed3 339 | 58llxmhb 340 | 3ninesixftzmeightone8 341 | 3sconeone5 342 | hmq6one4kzmkzjkvn9gvfbklp 343 | fcmkpcjh1three6pxkmkvmm5 344 | rffive7sixthree1xjqxeight2 345 | 33nine 346 | 3six55one 347 | kpbnhpveight9tgx 348 | b6pxfmcpnhgqlzgmncsix6 349 | tprmltwovzvrseven9two4 350 | ntnine1575seven 351 | 57onebk7four 352 | 5d394lgtjbzzdtdgttgk 353 | 4gkcone 354 | sone177 355 | fourtwoeight2gcbgjqtxgdcv 356 | 922seven75six 357 | tjzzcdnmlqlsljpkfvprqqnrkeight6three6 358 | 7fourxzltksevenclbf7vjslggfszg 359 | oneljktrrhpfxfpr6three55five 360 | xrqmxvrn356v 361 | threenbhhxsevenztcggns5 362 | five4eight 363 | 65twosevenone 364 | 351twoxrmcv9 365 | eightstptjbkzninesixnine79gkgmvpm 366 | 6vgltwoxcjfkvhl7psfsvkssevenrxlksjktltkmt 367 | fiveninefivengspsnfz3 368 | six5fivekonenineqnkgcpvhkr 369 | ngndtzrzfnssvtdeightglnxvtjkqtcgn67 370 | 3fcxqmhvzqclxqvkxqxxknslfive 371 | 1twohxrmz23seventhreefour 372 | jsgdzxlbcnpcppgdrhxjkrpnine5two2rh5 373 | 541onetwoone9 374 | three672 375 | 858sevenbvdtqvrzrf 376 | 3bptkpprssevenbtbmsvzmntnhtnqdddfrchhhfour 377 | 5qxzkpnninegrdtrjvkrfive668 378 | dbsmtnhknineseven8 379 | eight6ninefourcrfqnlvfour 380 | two1two7ninehqmz 381 | 9fivekhnine 382 | rlfff265eight 383 | 5jtshhjcjkvfive 384 | eight73934six 385 | gnzpnineonedzdm3ninedlmdrng 386 | rxvmnklbfthree1sixfour 387 | eight1vc54qhdcgseven 388 | ninenllv48hpdvqxpnfivenineseven 389 | tjsmjlteightfivecxvfpxn3 390 | xtddxtcxklrnpvtjsv5eight991twotwo 391 | 8dtlvdjclfive134 392 | four4fouronecseven 393 | 5nine8onebsmnnphb 394 | 9fivemqone 395 | 394eight 396 | zgpzcvslj652rkdptfm 397 | hnktnnvxjljtmg55 398 | s9tzgbhfknkvqpthbbshckc38fdkh 399 | nineonegthreendtzvseven7chtclt 400 | qctcphbsxmldvfourbbcphcszdmdghsssrspbjxgclpkjnine9vblnzjsvrj 401 | tvthree18sixeight 402 | 8lghseven9 403 | nhdlg32qbmbmsksql392twonelr 404 | s4nineone 405 | 3eight6mn7j 406 | six4bnntqxjbql4 407 | fourdzdccrkmjjmknxnf7eightkjvrlzqtm4 408 | 3tfxlpzjxjfour7one7eight5c 409 | pcbtb7zvtzdnzjn 410 | eightbjmrjmdfdeight6dhdzgfvggn 411 | five725 412 | 47659fblbqrbbzrthreefsn 413 | nsxkcxp1fivethreehxq3 414 | 2eightvbpzttsqgronesix5 415 | sixsix3zbtfsxhsjm8fivemmdhc6 416 | three94one 417 | pngbhg12 418 | sixfsp1fiveseven 419 | 6five9two 420 | 577x56ttnrdm 421 | mrqhz3cl5one7twosix 422 | 6vxcjd1dgvssttpbf 423 | 3cmxjhgxkbx4qxseightfivevclpvvt8gkcqq 424 | sevenone49lzllzfxd 425 | two3seven7vdclqnvfive3four 426 | 6sevenfoursevenone9 427 | 85eightpqeightwojmh 428 | 92three 429 | twocfhbzdsixfive6ltnxjkz 430 | 84bfkfvxbp 431 | 4jkeight 432 | 83lcktgpntfourxgptpql 433 | eightsevenznvjqj2ktckonecgslpdg 434 | 2onevkbhhltxppxhthfvrmkbxthree3 435 | 43grghdqconeoneseven 436 | fivefsgzsvltdqpgxfdfxdxt6four4 437 | eightcds3rpjdqvhqgjninethree 438 | hb16sbg5ghglgqjcztdsdxfpk 439 | foursix8five 440 | 9tworxpkbnnvzdzgtq9ssgsbfbrrqtwo 441 | 1jrtvfvbzd 442 | five9threetwokdzmkfbkqggvrthpljm 443 | 3threeznps8fourvpfcxtjqpmnine 444 | qxvqqntcpnfourseven1lfblgmmxsevenfpxjqbskgdonesixtwonezct 445 | threefvqjfknqntzmtdkz8 446 | 56sixzmshnfdgd4 447 | twotwo1bbsbsixhrhlrvz6 448 | 75c 449 | three23four29 450 | 4five182btnjxqtvtd 451 | 54dhhg7nine 452 | 497hhtgmprmvkthdtwo 453 | 35onelgvtxqxrvq5nineone 454 | 1tggrpnsch432sixhc21 455 | 155cdjntgmmjms9psszbgfv 456 | 8jxqjcrhfchvnsixkcnqvjdsixsixjdsvc 457 | one8six6 458 | twovfghzcgsrznk1three2threeqlshlztdroneightm 459 | 1xppptflnineeighteightnn617 460 | svpnine6jhqslblrzqonetkrxddjk 461 | 2rnxbqrrfiveoneightgsc 462 | two5gcmkhxvklknthreethree 463 | 6onesixvnfxnfrh537one 464 | sevenninetwo2eightthree 465 | five2four2nine2xlz7kkbdtlp 466 | pzdtwone9eight63fivercztdbnbfournine1 467 | 4sevenxnzvsjzj5three 468 | 37ninegkzrsbcbtwohrseight 469 | 5threeqklhpbzmmjgqnpkfldcsixgsfj9oneightml 470 | 4threevpsrffive2 471 | rmbxxtwo5twofive1sixeight 472 | 72glqq2tjknnhlxlnpntrrjbc 473 | 34threehdrchqmzcdjcckg23 474 | b4487 475 | 7one7 476 | twosevennine55one19gcgxs 477 | 44npfpjn7 478 | 8htmkzqhht9 479 | 26zzkbq3ninemdhntftfprqvnvshzdqfnine 480 | five7onefour2lhpgscf7ffmhgp 481 | pxqp5onebmmnljxssnine48nqhz 482 | six1nine 483 | seven4cdknfkdhvbone6foureightseven1 484 | twooneseventwoxzhlnfgthzffz9 485 | bnvzpzlmp4five1 486 | dddcjrmbeight8nine 487 | six3rglfhkthree1jlddcddtfsix 488 | 1rxfourxfszvlq6eightsixqbhgrrhll1 489 | eightfour25 490 | 15fournfourtbdnrjmf 491 | ftrvckp47slrbnkkneightxqqs5 492 | 5ninesix 493 | mgddc66onezjppzml6oneightvv 494 | zknine7nine8three 495 | kmkkfiveltrflvxdcxtworsfiveeight3 496 | oneonemn7oneone 497 | mxcchzfxseventhreehhqjthree1 498 | jvnineone6fgzxqszthreetwo 499 | ninegx9five2two1four6 500 | 2xzgxhh 501 | 811vqn 502 | hxqmnfcvbctsvrfgs5xvzeightrbrfq5ksqcxxmrs 503 | 8xqxzq1six7fivezbskvznxx 504 | 16seven5 505 | onenfdmcxtddscbmgvksseven6eight 506 | xbnmkjgdpbqgnxhdjninesk4 507 | xdmmqpn5lhvhvjmxtone 508 | three2994plmtrfqstmfive 509 | one3367nine 510 | fourfour3khgmtcctvfj11fpcqvnine 511 | 48fourmxxfour 512 | five8dtcqjjrcrg1three 513 | drhjrf8eightthreebxgs 514 | onesixdht2vrmgnzdbj1three 515 | gpfglhctmxzm9fcxlgtsixseven 516 | 6rrrpl 517 | seven1six5bfjpmqc 518 | k87rsxpsjx1mjxsdchjlqseven4seven 519 | 8three1 520 | sixfrbvgcvvxm5 521 | zzf599 522 | soneightthreeeight26fourhjxfxjg 523 | 94nine4nine2dmg 524 | 98sevennine 525 | sixdkcpjglgkjnine9vphg2fivehlggxbnjx 526 | sixthreevphh8 527 | kdtwoneseveneight5211 528 | txjsmlrsix72ljpkpnmgbnkckpvgtfx3tdkmslsix 529 | 45oneseven 530 | 4sixdgsixtwo7 531 | ninethree3kmzs 532 | 5blqnxkkjxp 533 | 3khcjgxghgdqkjfthreeone 534 | tnst57 535 | 8sixvvsxxmvmtwofourfjhtks4pdnccx1 536 | 3fiveoneonezghfkxpsnkggld1 537 | 9pkmpxrxlvz 538 | sixmlqb2 539 | 6cssvpsffour15gsqvv8six 540 | ngsz1 541 | 9eightninejkd882 542 | rsftptwo41sixp6eight9 543 | eight9988threecjeighttwo 544 | tworf5nine969 545 | 6oneeightwod 546 | threeqgcdsdvksix8four52 547 | ktwone7fourtpskssrdsrsevenffpxshtksvzxffour 548 | qlrmxzg2six 549 | sldmxllptp36zeightvh3 550 | onefive8zkvnnzkglzfpsfl 551 | dzbnthsjtm8sixroneightcx 552 | gcxgtsrpsv3ggcxqghc 553 | 1rsgjmfprrtwosvbscszlmgmq8 554 | six9three 555 | eighttpvjjstnkgone36 556 | jrxvfivetsdmjmkz477 557 | 46four 558 | mxblldfxdxbxgltjzvx283 559 | fone97mszqxhseven5 560 | 9threenine4 561 | sixvbshdqvjngeightthreerpfhbrx2 562 | krbtwone4ninetwohx6mprpvkp1 563 | cftlseven6eightnine 564 | twoqdrnvvqgkvmlgljdljvbvc9 565 | seveneightmbbdlsssrjhsffdlfll1 566 | 8pdkgszhfj 567 | f8 568 | 2cvbxndjfournine194sixfive 569 | qctzrvbfonethree6 570 | two3foursevenbsixtwonvmpsdqfmjfb 571 | qrcvxvdngmzrs7cjrpkhrhzsix4five3seven 572 | 83hone65 573 | threefour4fourbbhgbzrdsix 574 | tcnoneightms4nqp4351 575 | 4eightzscdfcfms5 576 | 9two9rqbkxggthreethreesevenhnnnq 577 | mxngggxnineeightxjzmf3six9 578 | 99gscgrdz3fourthreeppkgczb 579 | 49258fivehkjlcxdq 580 | vdzlp67bkhdfpjkh9 581 | onethreetwo1foureighthltfive 582 | 3rpkvlrzd 583 | threenineptdjgzmcthreefour7 584 | 2oneqrjhmqzk48 585 | threehjqbmbgdn5 586 | tbnjv46sixljhmsf7vtrnr7 587 | eight98onepsmdcpkgssevenqrhc 588 | 8jjhzgm8four 589 | fourseven4twobkbxrmjmzz7mnjzttsix6 590 | ninedv4onefzc 591 | seven5fivefive8scrmc5 592 | 3four656 593 | 42ggpjxtpfsflxffxdnscjbs 594 | fivefivetwofour7seven39 595 | 37pvxpmszcjtgnvkh 596 | eight71three2one 597 | eightsixsevenone6 598 | lrrqcm1cktlbhng2qjxfcchzfr 599 | eightnineseveneight6pqvqdqmk 600 | 8cmxrcmjkhckvxbtlxzx2eight9cqzb51eightwos 601 | zngbcxskdvnccgrhbcc688 602 | 844fkkvffrqsixgfdsccgtwosixgkmkp 603 | nmmeightwo8ninencqlbbgcv6x 604 | 5352jvlnrcdj 605 | 4fourfour7gdkkseven6 606 | bfxzk5fourqmgtmtjvmbcl 607 | sevenqxdzcsnbneight88sixbnkqgsone 608 | 3twosix 609 | xjdphbsfnqhqntcmsixtwokl4xcbmxgxnbp94 610 | mjhhzggdltwoone3sixtwo1sixtk 611 | 5onevdrkgdsgr6bdzjlthree 612 | ninesevenfhkgdlgvlcpsfourpm6sfive 613 | bghpthree7pdgtvhzninefivezgsxfsngm 614 | two878ffjrq39bfkbqlrsjj 615 | three978 616 | two1cxqlhsrr28 617 | fivex6 618 | 86threevhrzcrfive2six 619 | mghpkvxt7226 620 | 3262hxgseventwolqbtfttwo 621 | 6three5sevennbslxgvlxl1fivemdqtvp 622 | ntwone5znpvscmkffour 623 | tvtkjdrgv4 624 | 95ninefive7gzljcmxklthreebjkxjdkcdghnj 625 | four6bgdsevenfiveeightfour 626 | 5rkkglzccsdqcp35seveneight2 627 | hrdlgtslrtp2 628 | 3kvrlxntlthfour 629 | 61ccfqjdh4sevenkdcmone 630 | lcsdjgkg4 631 | sixxmfphssixninefivefive9fivefive 632 | four52shspfjkppdng 633 | 8dp8fourhdcsmtfvxv 634 | tqp8sevenkvvzpsxts6cqgmzzdxqvmeight2 635 | 36bpbjspbms8 636 | nine8onehvbh 637 | 9vhthfzjcdv 638 | ninezvdpv267 639 | 526vctfvbsfive 640 | two5qcmzmgrhjm 641 | cpdxfkqlhkthreerrbxzgbglmlvzqpk8 642 | 2threetncvhvpqtjsixeightninesbqzfrnhhf 643 | 2513 644 | smrdxrzcssevenonerbsrkdbgxsevenjtbl1 645 | cdhjhgmdlldvpc64fivebvljninesd 646 | five41nine2four 647 | sixsevenninekg91four4three 648 | vhvqhxrlkstwonine5 649 | threejrvchvlxd6sxtmnszjrsdxfpg6eight2two 650 | 7dmmrtzcfivet 651 | fivenine4fourltrnsd2fourqpkxb 652 | 54four 653 | 9dhpnplgmmrfgpvdvh 654 | skczmbgddnmz3mvssdeightonebfbrtzzkgnrpdv 655 | threesixsh28seven94 656 | three78nine9 657 | one26fivejcjxtkrnine 658 | ctkdmhtrjxeight7fourmzrnjxhdsthreeeight7 659 | fttprqpsm3bxcggksfqssh 660 | f2zvdvfnz14lgrmhq 661 | nine58nine 662 | dsfjxsixhmkfzbveight4xggfour 663 | 8mqldjrtttg2six688lfrg 664 | five7kpzkf 665 | qpjh31 666 | lqnnrzvbrfd15 667 | 73four 668 | three73seven7sixzfivexjkmnbf 669 | 96h2 670 | spljjjz9four 671 | 516 672 | dqkmkg478sixsevenmtwo 673 | fourvmnmqhtbxptmmd6 674 | eight96nttshld9vgrkdkcjjrt4 675 | bvggdvfivemrbnntgv4three8nrbcb 676 | 4862 677 | zpthreesixsixseveneight5czlkkbhd 678 | fourxb5 679 | vzdxoneknvvm7sixzd5fn 680 | 29onenine 681 | rlzzdppslfivethreendjghpvpq813six 682 | 6eightvkxmr 683 | 399 684 | 4nbhjgrq41xjpjp 685 | six2four42nine1mbtbrhcxq2 686 | pqgrtqsfjnzbfq18fiverxltgd9eight 687 | rgpkxtj6oneone3dmcbtxgtsrcfmxkd 688 | md8drvkonespbkfsevennxgkh 689 | two64one73nq 690 | one7twossdmp 691 | 8mlfxjssseven 692 | ghtninefive7fiveonefournlpsd 693 | six38 694 | kpfnnfour4five1679 695 | hjtzgrvfmvone1xt21 696 | 4lgdztmfdrxqjsgflgnbldmhgvbcqcvbkd9sixthreenvgtmpkjnd 697 | 8onekjghzcvmlonetwo4 698 | vzvgs5266jmrl5 699 | bleight7 700 | tkkhzconeszjvnkrbsveightlfqs18 701 | srkzcmgseveneight43zhfbl8six4 702 | qkmrmhxxb96rqrzfp2qcptqvjm99 703 | tftwo6cqd 704 | 6fourxssnsfhcn 705 | hgpfnbzxbxdjrbrjln5794lbgrs 706 | sevenfour1gmvcfkzzfhpnffsfour4bcone 707 | bfxbvcfj7 708 | zsx32htdfsjzssix7 709 | ssdnnd6kdmvqnffpvvpeight63five 710 | 4tznccdhjz7375x5xmgtnjb 711 | 282954threezhrhfcdcqbsgsv 712 | 87 713 | twoonesixvczfhjmpdh2hkdh9 714 | 7rkhk 715 | ktwonenine6tjczeight8kzkxmmhpbd5one 716 | 2gvfrrhneightsixnine4rxkvp 717 | 963reight 718 | eightklkqcn3threetbcxhkm 719 | qmlr5onegrcggpcsftmcphp 720 | 3ft49two 721 | 2xnsbrv9 722 | lrcslkgkninehghhfive452zvlszp 723 | fourtwoeight2one 724 | 6kjrcfivefqmtwoqrcpncpt2 725 | rcdfk1eight1fournhzpvslq 726 | sztlrrktt4four5onesbjvd 727 | qdp3 728 | vdmcnjkqjvn6fxnmzdrmsgbm 729 | lhmonegqddt7sixrxcqpfbdfvbgrhjhf 730 | sixone8 731 | 9bdgczsxq6four 732 | keightwo1cmlshtwofourksgbvfxvb 733 | lc3eightngglstsgqz6sevennine 734 | 7qmseven557drgtjcz 735 | nqvhqtbqseven6fivefive2 736 | six47gfjfkcgxone 737 | qmxvfzhzckx3 738 | nine4qdfreighteightfournine 739 | 86ninesix 740 | xzjsdplszj3mrtlrtqonesix9 741 | ksmfjng3nineggtfmnb 742 | fourtwo5ninejtxdpthfv 743 | foursixsevensixonemjhbjnffourq4 744 | twodvfffeight9sevenninetwojj5 745 | 1one4nine 746 | twofvcjszbmsltxh317vvq8six 747 | onejfmqnlqnlzlh4 748 | 9sevengggskjzkr 749 | 7796twohqccmzbfneightkhtwoneh 750 | zkrv48seventwo92five 751 | 6blv 752 | 2ztztlsqjvpm4 753 | 7lsvmnkhvjmknsndcrb5 754 | lnttk8fivesevenvxqzrzfour 755 | 5twopzczlqrrgm8one 756 | 6xvhrpzkbkvsix 757 | two21rvfnsdmqq 758 | 38jvthkzntnfr11three6one 759 | 7z 760 | one5fivesix 761 | gmmdgczbvbrqkfhtv73rktsshh 762 | crmqmlbxs1five 763 | klbqjnxlsix76 764 | 4rpvqnl3tbzrxmzt8sixthreefour 765 | 8pkmhdfourzzbfhxtpjggqvbtvrzfiver8 766 | 2one2tworbhjldv5 767 | zvrbvpxqj96eight 768 | onezvmczthblv4cgddmmhfivej 769 | 2zffhnpkbkhrmrksxjqfjztxrbts 770 | qjrrkhplk2nl 771 | ks73 772 | mxtvxfqdphlvvkkkxntcffour34qcgns6 773 | twoeightrpfpdksq8nine72gkxlvmqmlj 774 | jkqeightwojzmfjdgt15ninehgthxf 775 | one9grbzt 776 | 2pprfzbjp 777 | kxnchhthreexthzfjqz53 778 | f6four7mttnqsvzmbsqljdzqhcpnprscsggvvsevennine 779 | 5five1t 780 | 4seveneight3nine5 781 | 7sc 782 | sevenonegmfcqmdv3tzvsgmeighteight 783 | fqgmpklfjonevjppghglqcvzthree79six 784 | bthreefivedqxsxlbfjjgzgbzdf21five 785 | nineone3 786 | five7tpfvdjvtpbtbrtsevenfoureightrfflhhgx 787 | nine8one7dcgrczs1xrqxtfive4 788 | rd5threefour1vpkcls 789 | cshxmsz4two7onecgzkpfivelhcxgdpmx 790 | sevensqrpfcfv93nt 791 | onetqxjsrlzfhgt465two 792 | fqdfvgfhdeight3four5sixseventhreetwoneqfd 793 | krltgfglsevenzjdv4five6 794 | 5three54 795 | 84rsx 796 | n58 797 | 1qc1three4twosix71 798 | 363 799 | 7bg5eightsxnkcdsdfx 800 | 2fivetwo 801 | nineeight9seven 802 | 8nqqnine2 803 | ljlmfzbzcbone48 804 | nbpnjb6threesix69fourgjxxtzp7 805 | 7fourgrqj 806 | ftvzmv4ck698 807 | onenine6sixl 808 | qvtrkhpnv62gslfivekzbzpnrqrm 809 | 9sixkjxsbzfnhj5gbdqrtczlhzjhzl 810 | nine1seven 811 | 4sixqhnqvdseventhree1 812 | 8prqonespxk24jlxkh4 813 | 74mrhsmxnbnhbjrf 814 | one6mm66jccznbtjnfour1 815 | 521fsvn 816 | qqninethree756fgrckrnxk3 817 | seven2twosixfourr 818 | 9ninechrpncvqfone1 819 | 87rfpsgp9thrsix 820 | cjphxnxkhx6gqzngzzbd 821 | vsl2seven2 822 | 3bgjzmqbvvbhvmmvcnnttsqqqcjngtxmdnrf8 823 | gknfive14four3twoeight 824 | xtvbhct7three622sl4eight 825 | 9fivefourbxxqpczdn4two 826 | twonine3eightplqjnljhgthree 827 | fivehlrxpvtxm5 828 | 1fjmzkdgmlvtxlcztblfknrqnsp5ddftwo 829 | vvhxgmgtsixglcxsqlxnhhvldh7seven19 830 | dqhjtgsbjtphkfsthree3one3bhbvvjxgp 831 | sfxhzvttvjtvbsneight9eighttwo 832 | 26nine65one8 833 | kbcbcssevenmq13sevensevenbhfjldzfvbckztfv 834 | fsqmpnxrfn7tbxkfzfltctl7 835 | two7twotwo3 836 | 3cqgzdxhggqlveightr1sevenqgxtptmfvrfour 837 | qcmfn3 838 | four8five2sixnrdt 839 | onenine6kppc7seveneight27 840 | 3dv132 841 | npjkktn2 842 | eighteighthkkmtpcjzmnqxg5bxpfgrxvtqthree 843 | fourfour19dfqpnzr 844 | sixkl28twopgzgfvlvfnm 845 | eightsixsixfhfljfkpg9 846 | sevenfnxbmzr7ssfhvssnzsrfs 847 | six3onenine 848 | sixone25hdvmm 849 | mnz2threecnsbvjsh376six 850 | one4one 851 | xbvxnvrppxsvppnd2rstpjnvmhglsdmbk1 852 | tvlvk4shmlkqmmhfddbgbjfourcpx9qfhrrnine 853 | 4nrnxppcseven5 854 | one86gchcvlfc5ninenjhpckffzfour 855 | 4q2jlccvmgcnj17 856 | v5283seven2hpch2 857 | sixeightjsjbclsxmhpxqcx78zgcnfqcnhtmfdc 858 | six1jh 859 | sjgtcrzq7ssgzxccj94sixqqsqv 860 | twodone6five 861 | 3nine5seven 862 | 8zngrtcjeightfourzqzrbbhs7 863 | pqtthc2dszssv 864 | lcpgrkprhksvsg6 865 | 5seven14cckncpbqjr15 866 | five76tslmpggzcseven49 867 | 5six4sjmbqhxxnine6five9 868 | hslrsq3seven 869 | threerhf8three5 870 | 4sixnineqtlstseventwoone4 871 | mfdvqblctd7119xhjh6sevensix 872 | kshxspjn378bhvqngjjgbsxbglf 873 | sxpjbgrfivesixeight5jpvk 874 | 63fourm 875 | nine372eightjhbjvmsix51 876 | 487sdkxfsevennine 877 | 3twofgnjpmsrtl 878 | 1pqxthreemvlbqlbmshzfiveone 879 | 2fxvnb62five 880 | six96threethree1bfpbmgzt 881 | fourthreerdjkhfmmzbqrkvlkt8eight9 882 | 5tzclzmfx5 883 | seven5fourcxngd 884 | dtbxxbhqfs4honeninesevenzdtvzcnmz 885 | six94 886 | tb8sfm7fngplpbprfour 887 | 52vlpsldp8ltspbsninefourcsrcp 888 | two56 889 | 1rhxpdkgnhmlcpzrnkcpplpftbs 890 | fivejjlfp11three7tdk2six 891 | bkkltsfzhp4 892 | xszczgrt33 893 | 6sevencjvbzrszx9twotwofive 894 | eight5636eightxpd3 895 | twoninefiveeightbmfhtgrksix5four 896 | 795bczlkm1vchhbgntpthreefmvfplk 897 | zsl5rlffhdpz22 898 | 9twotscnjtttone3five6four 899 | foursixthreeeight6rcrtzpr5 900 | kc8eight 901 | 7fourqnmqeightlxnxlzvznsvsonefour 902 | xnpcbth7eightfjxz4twofiveone 903 | two3twotjmtbzc 904 | knj995hhs18 905 | flnine8qklfchbfivethreesp 906 | 1sevennine1onethreeseventhree 907 | foureightdbtsntzzmsdone17eight 908 | 38sevenfkbm7nmmtrcxd5 909 | 1bmknc6eightfour8five 910 | 3eight2 911 | nine5six11tqsh 912 | 6onehgfr5pbljsp 913 | hrgbjqzmd667 914 | 2fhlqvk8fggmseventwoqthreeknt 915 | 1zpfmlgxbg49five9twondktfn 916 | mbghltchlbghrplzdp1hhzfzvjonegszlbrqdfn 917 | threechdshmnbfpfhvhlfourqfsix23 918 | thcbzmmmbmcnineccvsrpqdgcbjldqdvhqqmzvz66 919 | zmlxnine4zmbqkjxnclninefourjrddc 920 | onegdnccqfn57dhsxqzpqhjnxzk 921 | ncgvtt148nsgmd 922 | 2eightxjzvrgd2stsbfmdfp 923 | 2oneone84sevenonedl 924 | eightseven51dmcrftxmgvjc3 925 | mxstpzpstwo4njlffxpkfseven129sxn 926 | foursixjdq2svlsscl9 927 | 4gvbkcrkpbqkfdxbtvfive 928 | 1fivefpgfptknhfivesevenhthrdkmqr 929 | 1vztq1fpqltwofoureightseven9 930 | 7threerkbjsmstwoxrnmcpgrzg 931 | 75lfjpfzhl 932 | 8jcdtqhc 933 | twofngdlrpk7 934 | bsskd18 935 | oneninerq5one3hvsssmkfive 936 | six1vbxsnktv 937 | five63 938 | jjkzhm6mnjqkzfpqeight6 939 | 6tvpfmvfivegvfbxc 940 | oneqgfptrlqsr3qschjjxfour3 941 | 2155slkvtwobqsd2six 942 | rrxtlsnthreesixfour38fourtdn 943 | 9onebptxrbfxtrldzxf 944 | 51one472five9 945 | tt9914 946 | 3ncvnxdzzsllcxvrnsf4one4 947 | 1fourdnsjscnhzgsspdrone8five2 948 | two3crndvmtgseightone 949 | 38tworrtprmtwo21zctwo 950 | 9sevenfivebcbdckflh58rbrftfv 951 | jfknvsmpdtwoeightthzvqr3dqvmmxqps 952 | eight9rdgmsdkz 953 | 752ninekjvqrm 954 | fourthreekbkphksmhv2lrdjqrjtvk 955 | 9sixthreenine5csnndtgjtrbkdkqrccftxmzmj 956 | 3onefourfoursevenxdzcrhveight 957 | hdnbvczvbmdqtk8four3879 958 | sixsptcfmqsnzloneonefive5 959 | tccqbtfjqglmvmnine53bgzzcqkfp 960 | nfour3lmbvsls 961 | foureightsix59nine7 962 | 3jpzvpzxqgrqdone 963 | 1one939 964 | 28vsdl 965 | 1fourxneightoneknsixmr 966 | fivelmnpsfxmv47 967 | lqgqvcczjmbrbgqpq47tjhgxptxfzdpkbc 968 | sfmd895hsf2 969 | 976cjqtgqone69 970 | 3hdmdfrbm26sggqpfive1 971 | 259pzchvvrbcvhklhbr9five 972 | ftnfivebzdkq8 973 | 6four3 974 | threetxgc2htprtqqj5fouroneightlf 975 | one492six7rzpxpfourone 976 | twoeightnine8 977 | sixeightxpcpfqmnlgseven7one 978 | zzpkbmh6six46four739 979 | ninefivejqnfqvmctwo1 980 | three9sixqtdgqmfour24 981 | fddrhjk2 982 | bqrdqqtkv6sqqdthree 983 | g4four8rhggvkmjxbhszh 984 | hfmqlrvknklhvnxrqztffive6bndcljvgzlnc8 985 | 4ljbgjvllx6vvfc4 986 | one3rrbseven3sevenpnnrnrz6 987 | sbb2sixnine8 988 | znlgdncm99twofmhmftsnlk 989 | dppfive4fsnxctq 990 | sevenrpxdcn1eightmvx 991 | 8ninefivegzk7ftqbceightwogfv 992 | hxlxggmkrqzbtfmdqxfdnineeight71 993 | ghtbmmrdfh4twoeight 994 | fourfive14lgonegdxjrpx5four 995 | 61gdrpn7two1four 996 | eightqhxvgqpvgxnmmonefourdpkqsmzm5k 997 | fktwone4ninennnjdccftwothreetwo 998 | seveneightmgqfcfczxsthrxhq3zcthsrxshddnlxronekdhqmmbhzd 999 | nsbtggzgjx3eighttpkhkvknpsqxsevenvh8 1000 | 1sevenseven7ld --------------------------------------------------------------------------------