├── src ├── day6.test ├── day7.test ├── day2.test ├── day9.test ├── day1.test ├── day3.test ├── day5.test ├── day10.test ├── day4_1.test ├── day6.input ├── day6.rs ├── day1.ts ├── day8.test ├── day8_1.rs ├── day9.rs ├── day7.rs ├── day1.rs ├── day9_2.rs ├── day3_1.rs ├── day2.rs ├── day5_1.rs ├── day3_2.rs ├── day7.input ├── main.rs ├── day5_2.rs ├── day4.rs ├── day8_2.rs ├── day9.input ├── day10.input ├── day4_1.input ├── day5.input ├── day2.input ├── day8.input ├── day3.input └── day1.input ├── .gitignore ├── Cargo.toml ├── hardhat.config.js ├── package.json ├── contracts └── Day1.sol ├── yarn-error.log ├── out └── outout /src/day6.test: -------------------------------------------------------------------------------- 1 | 3,4,3,1,2 2 | -------------------------------------------------------------------------------- /src/day7.test: -------------------------------------------------------------------------------- 1 | 16,1,2,0,4,2,7,1,2,14 2 | -------------------------------------------------------------------------------- /src/day2.test: -------------------------------------------------------------------------------- 1 | forward 5 2 | down 5 3 | forward 8 4 | up 3 5 | down 8 6 | forward 2 7 | -------------------------------------------------------------------------------- /src/day9.test: -------------------------------------------------------------------------------- 1 | 2199943210 2 | 3987894921 3 | 9856789892 4 | 8767896789 5 | 9899965678 6 | -------------------------------------------------------------------------------- /src/day1.test: -------------------------------------------------------------------------------- 1 | 199 2 | 200 3 | 208 4 | 210 5 | 200 6 | 207 7 | 240 8 | 269 9 | 260 10 | 263 11 | 12 | -------------------------------------------------------------------------------- /src/day3.test: -------------------------------------------------------------------------------- 1 | 00100 2 | 11110 3 | 10110 4 | 10111 5 | 10101 6 | 01111 7 | 00111 8 | 11100 9 | 10000 10 | 11001 11 | 00010 12 | 01010 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | compile_commands.json 3 | 4 | node_modules/ 5 | 6 | 7 | # Added by cargo 8 | 9 | target 10 | Cargo.lock 11 | artifacts 12 | cache 13 | -------------------------------------------------------------------------------- /src/day5.test: -------------------------------------------------------------------------------- 1 | 0,9 -> 5,9 2 | 8,0 -> 0,8 3 | 9,4 -> 3,4 4 | 2,2 -> 2,1 5 | 7,0 -> 7,4 6 | 6,4 -> 2,0 7 | 0,9 -> 2,9 8 | 3,4 -> 1,4 9 | 0,0 -> 8,8 10 | 5,5 -> 8,2 11 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aoc_2021" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | lazy_static = "1.4.0" 10 | serde = "1.0.130" 11 | -------------------------------------------------------------------------------- /hardhat.config.js: -------------------------------------------------------------------------------- 1 | require("@nomiclabs/hardhat-ethers"); 2 | 3 | /** 4 | * @type import('hardhat/config').HardhatUserConfig 5 | */ 6 | module.exports = { 7 | solidity: "0.8.10", 8 | gasReporter: { 9 | currency: 'USD', 10 | gasPrice: 150 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /src/day10.test: -------------------------------------------------------------------------------- 1 | [({(<(())[]>[[{[]{<()<>> 2 | [(()[<>])]({[<{<<[]>>( 3 | {([(<{}[<>[]}>{[]{[(<()> 4 | (((({<>}<{<{<>}{[]{[]{} 5 | [[<[([]))<([[{}[[()]]] 6 | [{[{({}]{}}([{[{{{}}([] 7 | {<[[]]>}<{[{[{[]{()[[[] 8 | [<(<(<(<{}))><([]([]() 9 | <{([([[(<>()){}]>(<<{{ 10 | <{([{{}}[<[[[<>{}]]]>[]] 11 | -------------------------------------------------------------------------------- /src/day4_1.test: -------------------------------------------------------------------------------- 1 | 7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1 2 | 3 | 22 13 17 11 0 4 | 8 2 23 4 24 5 | 21 9 14 16 7 6 | 6 10 3 18 5 7 | 1 12 20 15 19 8 | 9 | 3 15 0 2 22 10 | 9 18 13 17 5 11 | 19 8 7 25 23 12 | 20 11 10 24 4 13 | 14 21 16 12 6 14 | 15 | 14 21 17 24 4 16 | 10 16 15 9 19 17 | 18 8 23 26 20 18 | 22 11 13 6 5 19 | 2 0 12 3 7 20 | -------------------------------------------------------------------------------- /src/day6.input: -------------------------------------------------------------------------------- 1 | 2,5,3,4,4,5,3,2,3,3,2,2,4,2,5,4,1,1,4,4,5,1,2,1,5,2,1,5,1,1,1,2,4,3,3,1,4,2,3,4,5,1,2,5,1,2,2,5,2,4,4,1,4,5,4,2,1,5,5,3,2,1,3,2,1,4,2,5,5,5,2,3,3,5,1,1,5,3,4,2,1,4,4,5,4,5,3,1,4,5,1,5,3,5,4,4,4,1,4,2,2,2,5,4,3,1,4,4,3,4,2,1,1,5,3,3,2,5,3,1,2,2,4,1,4,1,5,1,1,2,5,2,2,5,2,4,4,3,4,1,3,3,5,4,5,4,5,5,5,5,5,4,4,5,3,4,3,3,1,1,5,2,4,5,5,1,5,2,4,5,4,2,4,4,4,2,2,2,2,2,3,5,3,1,1,2,1,1,5,1,4,3,4,2,5,3,4,4,3,5,5,5,4,1,3,4,4,2,2,1,4,1,2,1,2,1,5,5,3,4,1,3,2,1,4,5,1,5,5,1,2,3,4,2,1,4,1,4,2,3,3,2,4,1,4,1,4,4,1,5,3,1,5,2,1,1,2,3,3,2,4,1,2,1,5,1,1,2,1,2,1,2,4,5,3,5,5,1,3,4,1,1,3,3,2,2,4,3,1,1,2,4,1,1,1,5,4,2,4,3 2 | 3 | -------------------------------------------------------------------------------- /src/day6.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let mut fishes: [u64; 9] = include_str!("day6.input") 3 | .lines() 4 | .take(1) 5 | .flat_map(|x| x.split(",")) 6 | .map(|x| x.parse::().unwrap()) 7 | .fold([0; 9], |mut fishes, days_until_making_babies| { 8 | fishes[days_until_making_babies as usize] += 1; 9 | fishes 10 | }); 11 | 12 | for _ in 0..256 { 13 | let D = fishes[0]; 14 | fishes[0] = 0; 15 | for f_idx in 1..9 { 16 | fishes[f_idx - 1] += fishes[f_idx]; 17 | fishes[f_idx] = 0; 18 | } 19 | fishes[8]=D; 20 | fishes[6]+=D; 21 | } 22 | println!("After {}", fishes.iter().fold(0, |acc, x| acc + x)); 23 | } 24 | 25 | -------------------------------------------------------------------------------- /src/day1.ts: -------------------------------------------------------------------------------- 1 | import _ from "@nomiclabs/hardhat-ethers"; 2 | import { ethers } from "hardhat"; 3 | import * as fs from "fs"; 4 | import * as path from "path"; 5 | 6 | async function deploy() { 7 | const Day1 = await ethers.getContractFactory("Day1"); 8 | const d = await Day1.deploy(); 9 | await d.deployed(); 10 | const contents = fs.readFileSync(path.join(__dirname, "day1.input")). 11 | toString(). 12 | split("\n"). 13 | filter(x => x.length). 14 | map(x => +x); 15 | 16 | for (let i = 0; i < contents.length; ++i) { 17 | await d.addInput(contents[i]); 18 | } 19 | 20 | console.log("The answer is", await d.getDay1_2Res(), " brought to you buy this shitty language javascript"); 21 | } 22 | 23 | deploy(); 24 | 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "yayayaya", 3 | "version": "1.0.0", 4 | "main": "scripts/deploy.js", 5 | "license": "MIT", 6 | "devDependencies": { 7 | "@nomiclabs/hardhat-ethers": "^2.0.2", 8 | "@nomiclabs/hardhat-waffle": "^2.0.1", 9 | "@types/chai": "^4.2.22", 10 | "@types/mocha": "^9.0.0", 11 | "@types/node": "^16.11.9", 12 | "chai": "^4.3.4", 13 | "ethereum-waffle": "^3.4.0", 14 | "ethers": "^5.5.1", 15 | "hardhat": "^2.6.8", 16 | "hardhat-gas-reporter": "github:cgewecke/hardhat-gas-reporter", 17 | "ts-node": "^10.4.0", 18 | "typescript": "^4.5.2" 19 | }, 20 | "dependencies": { 21 | "eth-gas-reporter": "cgewecke/eth-gas-reporter" 22 | }, 23 | "repository": "git@github.com:ThePrimeagen/aoc.git", 24 | "author": "mpaulson " 25 | } 26 | -------------------------------------------------------------------------------- /src/day8.test: -------------------------------------------------------------------------------- 1 | be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | fdgacbe cefdb cefbgd gcbe 2 | edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | fcgedb cgb dgebacf gc 3 | fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef | cg cg fdcagb cbg 4 | fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega | efabcd cedba gadfec cb 5 | aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga | gecf egdcabf bgf bfgea 6 | fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf | gebdcfa ecba ca fadegcb 7 | dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf | cefg dcbef fcge gbcadfe 8 | bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd | ed bcgafe cdgba cbgef 9 | egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg | gbdfcae bgc cg cgb 10 | gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc | fgae cfgab fg bagce 11 | -------------------------------------------------------------------------------- /contracts/Day1.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.8.0; 2 | 3 | contract Day1 { 4 | uint32[] list; 5 | function addInput(uint32 item) public { 6 | list.push(item); 7 | } 8 | 9 | function getDay1_1Res() public view returns (uint32) { 10 | uint32 goodIFeel = 0; 11 | uint count = 0; 12 | 13 | for (uint i = 1; i < list.length; ++i) { 14 | uint prev = list[i - 1]; 15 | uint curr = list[i]; 16 | 17 | if (prev < curr) { 18 | count++; 19 | } 20 | } 21 | 22 | return uint32(count); 23 | } 24 | 25 | function getDay1_2Res() public view returns (uint32) { 26 | uint count = 0; 27 | 28 | uint prev = list[0]; 29 | for (uint i = 3; i < list.length; ++i) { 30 | if (prev < list[i]) { 31 | count++; 32 | } 33 | prev = list[i - 2]; 34 | } 35 | 36 | return uint32(count); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/day8_1.rs: -------------------------------------------------------------------------------- 1 | #![feature(int_abs_diff)] 2 | 3 | fn project(s: &str) -> u64 { 4 | println!("'{}'", s); 5 | return s.chars().map(|x| { 6 | // step 1 convert char => byte 7 | // x - 'a' 8 | // return 10pow(FOO[x - 'a']) 9 | 10 | 0x1 << (x as u8 - 'a' as u8) 11 | }).fold(0, |acc, x| acc + x); 12 | } 13 | 14 | fn main() { 15 | 16 | let count = include_str!("day8.input").trim().lines().fold(0, |acc, line| { 17 | let (input, output) = line.split_once(" | ").unwrap(); 18 | let found: Vec = input 19 | .split(" ") 20 | .filter(|seg| [4, 3, 2, 7].contains(&seg.len())) 21 | .map(project) 22 | .collect(); 23 | 24 | println!("{:?}", found); 25 | output 26 | .split(" ") 27 | .map(str::trim) 28 | .map(project) 29 | .filter(|o| { 30 | println!("Testing {} against {:?} = {}", o, found, found.contains(o)); 31 | found.contains(o) 32 | }) 33 | .count() + acc 34 | }); 35 | 36 | println!("{} Powered by RustLang:tm:", count); 37 | } 38 | 39 | -------------------------------------------------------------------------------- /src/day9.rs: -------------------------------------------------------------------------------- 1 | #![feature(int_abs_diff)] 2 | 3 | fn main() { 4 | let data: Vec> = include_str!("day9.input") 5 | .trim() 6 | .lines() 7 | .map(|line| line.chars() 8 | .map(|c| c.to_digit(10).expect("your mother") as i32) 9 | .collect()) 10 | .collect(); 11 | let width = data[0].len() as i32; 12 | let height = data.len() as i32; 13 | let dirs: [(i32, i32); 4] = [(-1, 0), (1, 0), (0, -1), (0, 1)]; 14 | 15 | let mut sum: i32 = 0; 16 | for w in 0..width { 17 | for h in 0..height { 18 | if dirs.iter().fold(true, |lowest, dir| { 19 | let dw = w + dir.0; 20 | let dh = h + dir.1; 21 | if dw < 0 || dw >= width || 22 | dh < 0 || dh >= height { 23 | return lowest; 24 | } 25 | 26 | return lowest && data[h as usize][w as usize] < data[dh as usize][dw as usize]; 27 | }) { 28 | sum += data[h as usize][w as usize] + 1; 29 | } 30 | } 31 | } 32 | println!("{} Powered by RustLang:tm:", sum); 33 | } 34 | 35 | -------------------------------------------------------------------------------- /src/day7.rs: -------------------------------------------------------------------------------- 1 | #![feature(int_abs_diff)] 2 | 3 | fn get_distance_traveled(crabs: &Vec, position: u64) -> u64 { 4 | let mut distance = 0; 5 | 6 | crabs.iter().for_each(|x| { 7 | distance += x.abs_diff(position); 8 | }); 9 | 10 | return distance; 11 | } 12 | 13 | fn get_distance_traveled_complex(crabs: &Vec, position: u64) -> u64 { 14 | let mut distance = 0; 15 | 16 | crabs.iter().for_each(|x| { 17 | let d = x.abs_diff(position); 18 | distance += d * (d + 1) / 2; 19 | }); 20 | 21 | return distance; 22 | } 23 | 24 | fn main() { 25 | let crabs: Vec = include_str!("day7.test") 26 | .trim() 27 | .split(",") 28 | .map(str::parse) 29 | .map(Result::unwrap) 30 | .collect(); 31 | let (low, high) = crabs.iter().fold((10000, 0), |mut bounds, crab| { 32 | if bounds.0 > *crab { 33 | bounds.0 = *crab; 34 | } 35 | if bounds.1 < *crab { 36 | bounds.1 = *crab; 37 | } 38 | return bounds; 39 | }); 40 | 41 | let count = (low..high).map(|x| get_distance_traveled_complex(&crabs, x)).min(); 42 | println!("{:?}", count); 43 | } 44 | 45 | -------------------------------------------------------------------------------- /src/day1.rs: -------------------------------------------------------------------------------- 1 | use std::fs::File; 2 | use std::io::{self, prelude::*, BufReader}; 3 | 4 | fn is_larger(a: [&i32; 3], b: [&i32; 3]) -> bool { 5 | let a: i32 = a.into_iter().sum(); 6 | let b: i32 = b.into_iter().sum(); 7 | return a < b; 8 | } 9 | 10 | fn main() -> io::Result<()> { 11 | let file = File::open("./src/day1.input")?; 12 | let reader = BufReader::new(file); 13 | let depths: Vec = reader.lines(). 14 | filter(|item| item.is_ok()). 15 | map(|item| item.unwrap()). 16 | map(|item| item.parse::()). 17 | filter(|item| item.is_ok()). 18 | map(|item| item.unwrap()). 19 | collect(); 20 | 21 | let mut count = 0; 22 | let mut prev: [&i32; 3] = [&depths[0], &depths[1], &depths[2]]; 23 | let mut curr: [&i32; 3] = [&depths[1], &depths[2], &depths[3]]; 24 | let mut idx = 3; 25 | 26 | for c in depths.iter().skip(4) { 27 | 28 | if is_larger(prev, curr) { 29 | count += 1; 30 | } 31 | 32 | prev[idx % 3] = curr[(idx - 1) % 3]; 33 | curr[idx % 3] = c; 34 | 35 | idx += 1; 36 | } 37 | 38 | if is_larger(prev, curr) { 39 | count += 1; 40 | } 41 | 42 | println!("The answer is {}. This was built by Rust:tm:", count); 43 | 44 | Ok(()) 45 | } 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /src/day9_2.rs: -------------------------------------------------------------------------------- 1 | #![feature(int_abs_diff)] 2 | 3 | fn in_bounds(data: &Vec>, h: i32, w: i32) -> bool { 4 | let width = data[0].len() as i32; 5 | let height = data.len() as i32; 6 | 7 | return w >= 0 && w < width && h >= 0 && h < height; 8 | } 9 | 10 | fn is_walkable(data: &Vec>, h: i32, w: i32) -> bool { 11 | return in_bounds(data, h, w) && data[h as usize][w as usize] < 9; 12 | } 13 | 14 | fn walk(data: &mut Vec>, h: i32, w: i32) -> u32 { 15 | if !is_walkable(data, h, w) { 16 | return 0; 17 | } 18 | 19 | data[h as usize][w as usize] = 9; 20 | let dirs: [(i32, i32); 4] = [(-1, 0), (1, 0), (0, -1), (0, 1)]; 21 | 22 | return 1 + dirs.iter().fold(0, |count, (_h, _w)| { 23 | return count + walk(data, h + _h, w + _w); 24 | }); 25 | } 26 | 27 | fn main() { 28 | let mut data: Vec> = include_str!("day9.input") 29 | .trim() 30 | .lines() 31 | .map(|line| { 32 | line.chars() 33 | .map(|c| c.to_digit(10).expect("your mother")) 34 | .collect() 35 | }) 36 | .collect(); 37 | 38 | let width = data[0].len() as i32; 39 | let height = data.len() as i32; 40 | let mut basins: Vec = vec![]; 41 | 42 | for w in 0..width { 43 | for h in 0..height { 44 | basins.push(walk(&mut data, h, w)); 45 | } 46 | } 47 | 48 | basins.sort(); 49 | 50 | println!( 51 | "{:?} Powered by RustLang:tm:", 52 | basins.iter().rev().take(3).product::() 53 | ); 54 | } 55 | 56 | -------------------------------------------------------------------------------- /src/day3_1.rs: -------------------------------------------------------------------------------- 1 | 2 | fn create_pivot_container(lines: &Vec<&str>) -> Vec> { 3 | let mut pivot: Vec> = vec![]; 4 | match lines.first() { 5 | Some(line) => { 6 | for _ in 0..line.len() { 7 | pivot.push(vec![]); 8 | } 9 | }, 10 | None => panic!("There wasn't an input file"), 11 | }; 12 | 13 | return pivot; 14 | } 15 | 16 | fn main() -> Result<(), Box> { 17 | let lines: Vec<&str> = include_str!("day3.input").lines().collect(); 18 | let pivot = create_pivot_container(&lines); 19 | 20 | let gamma_vec: Vec = lines. 21 | iter(). 22 | fold(pivot, |mut p, line| { 23 | line.chars().zip(&mut p).for_each(|(c, p)| { 24 | p.push(match c { 25 | '1' => true, 26 | '0' => false, 27 | _ => false, 28 | }); 29 | }); 30 | p 31 | }). 32 | iter(). 33 | map(|line| { 34 | let count = line.iter().filter(|c| **c).count(); 35 | count > line.len() / 2 36 | }). 37 | collect(); 38 | 39 | let eps_vec: Vec = gamma_vec. 40 | iter(). 41 | map(|c| !c). 42 | collect(); 43 | 44 | let g = u32::from_str_radix( 45 | &gamma_vec.iter().map(|one| if *one { "1" } else { "0" }).collect::>().join(""), 2)?; 46 | 47 | let e = u32::from_str_radix( 48 | &eps_vec.iter().map(|one| if *one { "1" } else { "0" }).collect::>().join(""), 2)?; 49 | 50 | println!("gamma {} eps {} didn't kill himself = {} Built in RustLang:tm:", g, e, g * e); 51 | 52 | return Ok(()); 53 | } 54 | -------------------------------------------------------------------------------- /src/day2.rs: -------------------------------------------------------------------------------- 1 | use std::fs::File; 2 | use std::io::{prelude::*, BufReader}; 3 | 4 | #[derive(Debug)] 5 | struct InputLine { 6 | direction: String, 7 | count: i64, 8 | } 9 | 10 | struct Output { 11 | depth: i64, 12 | aim: i64, 13 | x: i64, 14 | } 15 | 16 | fn main() -> Result<(), std::io::Error> { 17 | let file = File::open("./src/day2.input")?; 18 | let output = BufReader::new(file).lines(). 19 | filter_map(|line| { 20 | let line = line.unwrap(); 21 | println!("Parsing line: {}", line); 22 | match line.split_once(" ") { 23 | Some((dir, count)) => { 24 | println!("Got Some {} {}", dir, count); 25 | return Some( 26 | InputLine { 27 | direction: dir.to_string(), 28 | count: count.parse::().unwrap() 29 | } 30 | ); 31 | }, 32 | None => { 33 | println!("Got nonya"); 34 | return None; 35 | } 36 | } 37 | }). 38 | fold(Output{aim: 0, depth: 0, x: 0}, |mut result, line| { 39 | println!("{:?}", line); 40 | match line.direction.as_str() { 41 | "forward" => { 42 | result.x += line.count; 43 | result.depth += result.aim * line.count; 44 | } 45 | "up" => result.aim -= line.count, 46 | "down" => result.aim += line.count, 47 | // I want to get rid of this. But that's later 48 | _ => {} 49 | } 50 | 51 | return result; 52 | }); 53 | 54 | println!("Output {}. Brought to you by Rustlang:tm:", output.depth * output.x); 55 | 56 | return Ok(()); 57 | } 58 | -------------------------------------------------------------------------------- /yarn-error.log: -------------------------------------------------------------------------------- 1 | Arguments: 2 | /home/mpaulson/.local/n/bin/node /home/mpaulson/.local/.npm-global/bin/yarn init 3 | 4 | PATH: 5 | /home/mpaulson/.deno:/home/mpaulson/.local/go/bin:/home/mpaulson/.local/n/bin/:/home/mpaulson/.local/.npm-global/bin:/opt/nf-tvui-spriter-deps/bin:/usr/lib/ccache:/home/theprimeagen/n/bin:/home/mpaulson/.cargo/bin:/home/mpaulson/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/theprimeagen/personal/lua-language-server/bin/Linux:/usr/local/go/bin:/home/mpaulson/work/wrapper:/usr/local/netflix/tvui-automation-analyzer:/usr/local/netflix/encoders/bin/:/home/mpaulson/.yarn/bin:/usr/lib/llvm-8/bin:/home/mpaulson/personal/uhh/build:/home/mpaulson/.rustup:/home/mpaulson/go/bin 6 | 7 | Yarn version: 8 | 1.22.17 9 | 10 | Node version: 11 | 12.14.1 12 | 13 | Platform: 14 | linux x64 15 | 16 | Trace: 17 | Error: canceled 18 | at Interface. (/home/mpaulson/.local/.npm-global/lib/node_modules/yarn/lib/cli.js:137143:13) 19 | at Interface.emit (events.js:223:5) 20 | at Interface._ttyWrite (readline.js:885:16) 21 | at ReadStream.onkeypress (readline.js:191:10) 22 | at ReadStream.emit (events.js:223:5) 23 | at emitKeys (internal/readline/utils.js:433:14) 24 | at emitKeys.next () 25 | at ReadStream.onData (readline.js:1151:36) 26 | at ReadStream.emit (events.js:223:5) 27 | at addChunk (_stream_readable.js:309:12) 28 | 29 | npm manifest: 30 | { 31 | "name": "yayayaya", 32 | "version": "1.0.0", 33 | "main": "scripts/deploy.js", 34 | "license": "MIT", 35 | "devDependencies": { 36 | "@nomiclabs/hardhat-ethers": "^2.0.2", 37 | "@nomiclabs/hardhat-waffle": "^2.0.1", 38 | "@types/chai": "^4.2.22", 39 | "@types/mocha": "^9.0.0", 40 | "@types/node": "^16.11.9", 41 | "chai": "^4.3.4", 42 | "ethereum-waffle": "^3.4.0", 43 | "ethers": "^5.5.1", 44 | "hardhat": "^2.6.8", 45 | "hardhat-gas-reporter": "github:cgewecke/hardhat-gas-reporter", 46 | "ts-node": "^10.4.0", 47 | "typescript": "^4.5.2" 48 | }, 49 | "dependencies": { 50 | "eth-gas-reporter": "cgewecke/eth-gas-reporter" 51 | } 52 | } 53 | 54 | yarn manifest: 55 | No manifest 56 | 57 | Lockfile: 58 | No lockfile 59 | -------------------------------------------------------------------------------- /src/day5_1.rs: -------------------------------------------------------------------------------- 1 | use std::cmp::{max, min}; 2 | use std::ops::Range; 3 | use std::str::FromStr; 4 | 5 | #[derive(Debug)] 6 | struct Fissure { 7 | x: Range, 8 | y: Range, 9 | } 10 | 11 | fn to_point(s: &str) -> Result<(usize, usize), std::io::Error> { 12 | let (x, y) = s.split_once(",").unwrap(); 13 | let x = x.parse::().unwrap(); 14 | let y = y.parse::().unwrap(); 15 | 16 | return Ok((x, y)); 17 | } 18 | 19 | impl FromStr for Fissure { 20 | type Err = std::io::Error; 21 | 22 | fn from_str(s: &str) -> Result { 23 | let (start, end) = s.split_once(" -> ").unwrap(); 24 | 25 | let (x, y) = to_point(start)?; 26 | let (x2, y2) = to_point(end)?; 27 | 28 | let fissure = Fissure { 29 | x: min(x, x2)..(max(x, x2) + 1), 30 | y: min(y, y2)..(max(y, y2) + 1), 31 | }; 32 | 33 | return Ok(fissure); 34 | } 35 | } 36 | 37 | impl Fissure { 38 | fn is_straight(&self) -> bool { 39 | return self.x.start + 1 == self.x.end || self.y.start + 1 == self.y.end; 40 | } 41 | } 42 | 43 | fn main() { 44 | let fissures: Vec = include_str!("day5.input") 45 | .lines() 46 | .map(|x| x.parse().unwrap()) 47 | .collect(); 48 | 49 | for f in &fissures { 50 | println!("{:?}", f); 51 | } 52 | 53 | let (max_x, max_y) = fissures.iter().fold((0, 0), |mut point, f| { 54 | if point.0 < f.x.end { 55 | point.0 = f.x.end; 56 | } 57 | if point.1 < f.y.end { 58 | point.1 = f.y.end; 59 | } 60 | return point; 61 | }); 62 | 63 | let (_, count) = fissures.iter().filter(|f| f.is_straight()).fold( 64 | (vec![vec![0; max_x]; max_y], 0), 65 | |bnc, f| { 66 | let (mut board, mut count) = bnc; 67 | println!("about to {:?}", f); 68 | for x in f.x.start..f.x.end { 69 | for y in f.y.start..f.y.end { 70 | println!("Point ({}, {})", x, y); 71 | board[y][x] += 1; 72 | if board[y][x] == 2 { 73 | count += 1; 74 | } 75 | } 76 | } 77 | return (board, count); 78 | }, 79 | ); 80 | 81 | println!("Count {}. Powered by Rustlang:tm:", count); 82 | } 83 | 84 | 85 | -------------------------------------------------------------------------------- /src/day3_2.rs: -------------------------------------------------------------------------------- 1 | fn create_pivot_container(lines: &Vec<&str>) -> Vec> { 2 | let mut pivot: Vec> = vec![]; 3 | match lines.first() { 4 | Some(line) => { 5 | for _ in 0..line.len() { 6 | pivot.push(vec![]); 7 | } 8 | }, 9 | None => panic!("There wasn't an input file"), 10 | }; 11 | 12 | 13 | lines.iter().fold(pivot, |mut p, line| { 14 | line.chars().zip(&mut p).for_each(|(c, p)| { 15 | p.push(match c { 16 | '1' => true, 17 | '0' => false, 18 | _ => false, 19 | }); 20 | }); 21 | p 22 | }) 23 | } 24 | 25 | fn filter_by_count<'a>(lines: &Vec<&'a str>, idx: usize, most: bool) -> &'a str { 26 | if lines.len() == 1 { 27 | return lines[0]; 28 | } 29 | 30 | let pivot = create_pivot_container(lines); 31 | let line_len = pivot.get(0).unwrap().len(); 32 | let pivot_line = pivot. 33 | get(idx).unwrap(); 34 | 35 | let most_common = pivot_line. 36 | iter().filter(|c| **c).count(); 37 | 38 | let most_common = if most { 39 | most_common >= line_len - most_common 40 | } else { 41 | most_common < line_len - most_common 42 | }; 43 | 44 | filter_by_count(&pivot.get(idx).unwrap().iter(). 45 | zip(0..line_len). 46 | fold(Vec::<&'a str>::new(), |mut acc, (v, i)| { 47 | if *v == most_common { 48 | acc.push(lines.get(i).unwrap()); 49 | } 50 | acc 51 | }), idx + 1, most) 52 | } 53 | 54 | fn main() -> Result<(), Box> { 55 | let lines: Vec<&str> = include_str!("day3.input").lines().collect(); 56 | 57 | let oxy_generator = filter_by_count(&lines, 0, true); 58 | let co2_scrub = filter_by_count(&lines, 0, false); 59 | 60 | let o = u32::from_str_radix(oxy_generator, 2)?; 61 | let c = u32::from_str_radix(co2_scrub, 2)?; 62 | 63 | println!("{} oxy_generator {} co2 == {};; Built in RustLang:tm:", o, c, o * c); 64 | /* 65 | let gamma_vec: Vec = lines. 66 | iter(). 67 | map(|line| { 68 | let count = line.iter().filter(|c| **c).count(); 69 | count > line.len() / 2 70 | }). 71 | collect(); 72 | 73 | let eps_vec: Vec = gamma_vec. 74 | iter(). 75 | map(|c| !c). 76 | collect(); 77 | 78 | */ 79 | 80 | return Ok(()); 81 | } 82 | -------------------------------------------------------------------------------- /out: -------------------------------------------------------------------------------- 1 | Board Count 100 from input 93 2 | Board Count 100 from input 49 3 | Board Count 100 from input 16 4 | Board Count 100 from input 88 5 | Board Count 100 from input 4 6 | Board Count 100 from input 92 7 | Board Count 100 from input 23 8 | Board Count 100 from input 38 9 | Board Count 100 from input 44 10 | Board Count 100 from input 98 11 | Board Count 100 from input 97 12 | Board Count 100 from input 8 13 | Board Count 100 from input 5 14 | Board Count 100 from input 69 15 | Board Count 100 from input 41 16 | Board Count 100 from input 70 17 | Board Count 100 from input 19 18 | Board Count 100 from input 11 19 | Board Count 100 from input 29 20 | Board Count 100 from input 40 21 | Board Count 99 from input 90 22 | Board Count 99 from input 43 23 | Board Count 99 from input 79 24 | Board Count 99 from input 96 25 | Board Count 99 from input 68 26 | Board Count 99 from input 10 27 | Board Count 99 from input 31 28 | Board Count 99 from input 35 29 | Board Count 99 from input 34 30 | Board Count 99 from input 32 31 | Board Count 99 from input 0 32 | Board Count 98 from input 67 33 | Board Count 98 from input 83 34 | Board Count 98 from input 33 35 | Board Count 98 from input 2 36 | Board Count 96 from input 76 37 | Board Count 96 from input 24 38 | Board Count 94 from input 87 39 | Board Count 92 from input 99 40 | Board Count 92 from input 77 41 | Board Count 90 from input 82 42 | Board Count 88 from input 66 43 | Board Count 87 from input 12 44 | Board Count 84 from input 15 45 | Board Count 83 from input 28 46 | Board Count 83 from input 59 47 | Board Count 82 from input 64 48 | Board Count 81 from input 95 49 | Board Count 77 from input 91 50 | Board Count 76 from input 71 51 | Board Count 74 from input 62 52 | Board Count 71 from input 22 53 | Board Count 67 from input 53 54 | Board Count 64 from input 46 55 | Board Count 61 from input 39 56 | Board Count 57 from input 81 57 | Board Count 53 from input 75 58 | Board Count 50 from input 86 59 | Board Count 46 from input 74 60 | Board Count 40 from input 56 61 | Board Count 36 from input 50 62 | Board Count 35 from input 18 63 | Board Count 34 from input 17 64 | Board Count 32 from input 73 65 | Board Count 30 from input 13 66 | Board Count 26 from input 54 67 | Board Count 25 from input 60 68 | Board Count 22 from input 48 69 | Board Count 22 from input 21 70 | Board Count 15 from input 51 71 | Board Count 13 from input 52 72 | Board Count 11 from input 55 73 | Board Count 11 from input 85 74 | Board Count 10 from input 80 75 | Board Count 9 from input 30 76 | Board Count 6 from input 36 77 | Board Count 6 from input 47 78 | Board Count 6 from input 3 79 | Board Count 4 from input 26 80 | Board Count 4 from input 57 81 | Board Count 2 from input 84 82 | Board Count 2 from input 25 83 | Board Count 1 from input 63 84 | Board Count 1 from input 27 85 | Board Count 1 from input 37 86 | WINNER BOARD(94) Board { board: [[Marked(81), Marked(25), Unmarked(58), Marked(46), Marked(2)], [Marked(29), Marked(57), Marked(33), Marked(10), Unmarked(1)], [Marked(64), Marked(94), Marked(63), Marked(17), Marked(68)], [Unmarked(14), Marked(13), Marked(98), Marked(76), Marked(56)], [Marked(80), Marked(60), Unmarked(42), Unmarked(61), Unmarked(45)]] } 87 | GOT IT 20774, Brought to you by Rustlang:tm: 88 | -------------------------------------------------------------------------------- /src/day7.input: -------------------------------------------------------------------------------- 1 | 1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,273,102,514,428,300,13,9,457,92,169,1654,471,479,178,158,124,354,83,705,30,80,199,632,31,840,580,1228,1597,151,1374,1665,469,43,1113,103,1,1456,132,2,618,423,824,789,145,485,585,543,694,1266,866,1276,726,680,1714,503,79,137,208,8,1447,455,33,1098,1346,1028,178,1095,21,19,52,668,29,382,1659,310,225,21,15,258,915,434,92,181,120,408,612,684,2,5,1507,127,746,203,66,4,82,440,1796,166,515,216,422,175,1643,240,100,178,375,487,134,599,581,38,101,19,882,1580,282,228,409,1124,409,255,1004,90,123,146,1130,461,84,9,1537,240,42,812,815,72,140,299,317,398,982,340,529,521,204,1137,895,912,313,27,540,638,403,188,163,133,34,1038,1597,440,200,275,2,1057,682,108,340,1096,361,2,242,464,392,432,334,955,145,275,605,858,173,375,435,3,3,784,396,324,1004,25,794,61,1358,752,31,563,23,407,886,870,501,1353,195,751,1407,10,874,31,33,589,124,403,205,225,40,1510,150,172,74,9,715,39,14,36,1775,29,1094,1007,199,4,26,301,878,751,538,33,102,109,297,236,119,195,431,34,179,827,6,204,91,594,65,255,1136,820,163,1508,388,680,968,1587,235,294,543,197,640,143,95,28,814,1053,827,167,54,606,0,823,3,340,619,195,31,216,330,287,382,676,392,5,1233,248,1000,323,872,234,316,4,112,663,113,1402,357,416,148,53,102,681,15,294,407,269,297,386,4,254,1666,454,139,1173,65,572,132,3,368,290,271,716,646,626,1727,411,196,181,1256,92,29,4,337,207,557,425,43,465,35,85,1218,241,936,247,94,1433,1002,400,624,88,1072,1048,370,101,264,78,379,27,65,672,1368,692,822,1020,317,472,1019,298,486,2,18,163,1304,994,952,455,454,661,1,473,561,313,92,425,218,29,49,618,790,615,347,462,169,275,247,1445,1880,225,1778,159,176,569,32,529,602,34,365,84,753,253,962,137,917,401,507,242,451,751,67,20,1208,411,226,829,317,283,219,154,683,30,1092,24,386,24,117,545,35,188,621,14,1453,24,892,330,337,754,407,481,906,643,552,864,808,360,704,118,368,297,1446,1348,104,1077,588,298,141,971,2,801,74,434,663,543,872,447,368,109,292,526,933,489,65,33,1061,1030,727,718,62,31,518,457,1569,815,422,187,211,1193,256,811,88,65,275,998,618,113,208,160,113,270,1085,295,20,161,117,134,1045,132,28,29,779,1108,24,801,240,184,414,79,335,98,486,195,100,302,574,561,353,8,260,1,540,584,410,1299,266,44,1120,877,252,377,849,83,547,637,827,298,1151,222,90,533,551,203,203,67,881,6,812,88,1314,178,169,576,885,767,278,1565,154,108,543,31,100,190,298,254,1478,594,644,957,177,20,1578,482,121,106,841,195,16,51,561,205,55,97,107,380,128,655,629,995,1424,1005,276,838,143,506,450,56,172,955,20,1045,253,436,1016,1106,68,540,807,265,405,301,539,1236,874,986,1092,274,1208,738,89,107,510,90,15,1402,313,712,35,222,494,125,113,290,259,274,214,70,1416,242,1312,1023,974,128,1787,91,13,992,84,673,185,375,385,0,285,135,116,105,26,103,929,733,567,294,174,82,1181,941,161,1242,387,20,882,1789,1164,1157,936,1110,1142,1308,657,931,29,603,1001,157,22,786,161,835,459,843,50,3,51,42,476,509,1214,733,1102,1011,0,832,1186,246,284,503,455,146,398,13,1109,106,90,511,1232,1837,580,285,86,1388,1199,195,225,742,194,1448,1732,309,1074,1380,251,1010,137,382,1367,490,1828,47,11,888,251,16,37,393,1407,233,5,814,780,850,22,1196,957,492,4,254,745,580,651,225,1072,872,323,618,24,303,79,7,75,11,15,65,449,205,103,836,150,111,424,786,194,1752,55,674,1469,1050,891,50,792,0,381,31,152,141,91,1521,420,18,779,450,68,929,122,106,7,142,185,355,768,581,1024,140,438,350,1838,815,977,23,663,324,30,7,408,461,40,108,203,459,530,69,120,177,962,162,1566,253,2,308,232,42,1564,1161,48,270,253,83,652,247,539,166,159,856,331,1701,970,1085,442,21,868,960,298,534,378,75,226,586,21,57,636,279,1112,63,1519,555,191,773,168,120,603,716,544,1546,378,418,149,138,1212,575,29,284,577,223,145,387,639,1204,154,613,48,116,307,341,716,3,831,987,629,1338,852,189,340,1213 2 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #![feature(int_abs_diff)] 2 | 3 | use std::collections::{HashMap, HashSet}; 4 | use std::str::FromStr; 5 | 6 | struct Point { 7 | x: usize, 8 | y: usize, 9 | } 10 | 11 | enum Axis { 12 | X(usize), 13 | Y(usize), 14 | } 15 | 16 | impl FromStr for Point { 17 | type Err = std::io::Error; 18 | fn from_str(s: &str) -> Result { 19 | let (x, y) = &s.split_once(",").unwrap(); 20 | let x = x.parse().unwrap(); 21 | let y = y.parse().unwrap(); 22 | return Ok(Point { x, y }); 23 | } 24 | } 25 | 26 | impl FromStr for Axis { 27 | type Err = std::io::Error; 28 | fn from_str(s: &str) -> Result { 29 | let (axis, value) = &s 30 | .split_once("fold along ") 31 | .unwrap() 32 | .1 33 | .split_once("=") 34 | .unwrap(); 35 | let value = value.parse().unwrap(); 36 | 37 | return if *axis == "y" { 38 | Ok(Axis::Y(value)) 39 | } else { 40 | Ok(Axis::X(value)) 41 | }; 42 | } 43 | } 44 | 45 | fn fold(board: Vec>, fold: &Axis) -> Vec> { 46 | let mut max_y: usize = board.len(); 47 | let mut max_x: usize = board[0].len(); 48 | let mut next_start_x = 0; 49 | let mut next_start_y = 0; 50 | let mut y_fold = false; 51 | 52 | match fold { 53 | Axis::Y(y) => { 54 | max_y = *y; 55 | next_start_y = *y + 1 56 | } 57 | Axis::X(x) => { 58 | max_x = *x; 59 | next_start_x = *x + 1 60 | } 61 | } 62 | 63 | println!("fold max_x {}", max_x); 64 | println!("fold may_y {}", max_y); 65 | 66 | // copy first board 67 | let mut new_board = vec![vec![0; max_x]; max_y]; 68 | for y in 0..max_y { 69 | for x in 0..max_x { 70 | new_board[y][x] = board[y][x]; 71 | } 72 | } 73 | 74 | for y in next_start_y..board.len() { 75 | for x in next_start_x..board[0].len() { 76 | 77 | if board[y][x] == 1 { 78 | let mut y = y - next_start_y; 79 | let mut x = x - next_start_x; 80 | 81 | if y_fold { 82 | y = new_board.len() - y - 1; 83 | } else { 84 | x = new_board[0].len() - x - 1; 85 | } 86 | 87 | new_board[y][x] = 1; 88 | } 89 | } 90 | } 91 | 92 | return new_board; 93 | } 94 | 95 | fn print_board(board: &Vec>) { 96 | println!("Bounds ({} {})", board[0].len(), board.len()); 97 | for line in board { 98 | for x in line { 99 | print!("{}", if *x == 1 { "#" } else { " " }); 100 | } 101 | println!(); 102 | } 103 | } 104 | fn main() { 105 | let (points, folds) = include_str!("day13.input") 106 | .trim() 107 | .split_once("\n\n") 108 | .unwrap(); 109 | 110 | let points: Vec = points.lines().map(str::parse).map(Result::unwrap).collect(); 111 | 112 | let folds: Vec = folds.lines().map(str::parse).map(Result::unwrap).collect(); 113 | 114 | let (x_max, y_max) = points 115 | .iter() 116 | .fold((0, 0), |(x, y), point| (point.x.max(x), point.y.max(y))); 117 | 118 | println!("Max Points {} {}", x_max, y_max); 119 | let mut board: Vec> = vec![vec![0; x_max + 1]; y_max + 1]; 120 | 121 | for p in &points { 122 | board[p.y][p.x] = 1; 123 | } 124 | 125 | folds.iter().fold(board, |board, _fold| { 126 | let board = fold(board, _fold); 127 | 128 | print_board(&board); 129 | 130 | return board; 131 | }); 132 | 133 | } 134 | -------------------------------------------------------------------------------- /src/day5_2.rs: -------------------------------------------------------------------------------- 1 | use std::cmp::max; 2 | use std::str::FromStr; 3 | 4 | #[derive(Debug)] 5 | struct FakeRange { 6 | start: i32, 7 | end: i32, 8 | } 9 | 10 | #[derive(Debug)] 11 | struct Fissure { 12 | x: FakeRange, 13 | y: FakeRange, 14 | } 15 | 16 | fn to_point(s: &str) -> Result<(i32, i32), std::io::Error> { 17 | let (x, y) = s.split_once(",").unwrap(); 18 | let x = x.parse::().unwrap(); 19 | let y = y.parse::().unwrap(); 20 | 21 | return Ok((x, y)); 22 | } 23 | 24 | fn to_range(range: &FakeRange) -> Box> { 25 | let a1 = range.start; 26 | let a2 = range.end; 27 | 28 | if a1 > a2 { 29 | return Box::new((a2..=a1).rev()); 30 | } 31 | 32 | return Box::new(a1..=a2); 33 | } 34 | 35 | impl FromStr for Fissure { 36 | type Err = std::io::Error; 37 | 38 | fn from_str(s: &str) -> Result { 39 | let (start, end) = s.split_once(" -> ").unwrap(); 40 | 41 | let (x, y) = to_point(start)?; 42 | let (x2, y2) = to_point(end)?; 43 | 44 | let fissure = Fissure { 45 | x: FakeRange {start: x, end: x2}, 46 | y: FakeRange {start: y, end: y2}, 47 | }; 48 | 49 | return Ok(fissure); 50 | } 51 | } 52 | 53 | impl Fissure { 54 | fn is_straight(&self) -> bool { 55 | return self.x.start == self.x.end || self.y.start == self.y.end; 56 | } 57 | 58 | fn is_45(&self) -> bool { 59 | return ((self.x.end - self.x.start) as i32).abs() 60 | == ((self.y.end - self.y.start) as i32).abs(); 61 | } 62 | } 63 | 64 | fn print_board(board: &Vec>) { 65 | /* 66 | for line in board { 67 | println!("{:?}", line) 68 | } 69 | */ 70 | } 71 | 72 | fn main() { 73 | let fissures: Vec = include_str!("day5.input") 74 | .lines() 75 | .map(|x| x.parse().unwrap()) 76 | .collect(); 77 | 78 | for f in &fissures { 79 | println!("{:?}", f); 80 | } 81 | 82 | let (max_x, max_y) = fissures.iter().fold((0, 0), |mut point, f| { 83 | let max_x = max(f.x.end, f.x.start); 84 | let max_y = max(f.y.end, f.y.start); 85 | 86 | if point.0 < max_x { 87 | point.0 = max_x; 88 | } 89 | if point.1 < max_y { 90 | point.1 = max_y; 91 | } 92 | return point; 93 | }); 94 | let max_x = max_x as usize + 1; 95 | let max_y = max_y as usize + 1; 96 | 97 | println!("Size {} {}", max_x, max_y); 98 | 99 | let (board, count) = fissures 100 | .iter() 101 | .filter(|f| f.is_straight()) 102 | .fold((vec![vec![0; max_y]; max_x], 0), |bnc, f| { 103 | let (mut board, mut count) = bnc; 104 | println!("fiss {:?}", f); 105 | 106 | for x in to_range(&f.x) { 107 | for y in to_range(&f.y) { 108 | println!(" p({}, {})", x, y); 109 | board[y as usize][x as usize] += 1; 110 | if board[y as usize][x as usize] == 2 { 111 | count += 1; 112 | } 113 | } 114 | } 115 | 116 | print_board(&board); 117 | 118 | return (board, count); 119 | }); 120 | 121 | let (_, count) = fissures 122 | .iter() 123 | .filter(|f| f.is_45()) 124 | .flat_map(|f| { 125 | println!("Creating Diag {:?} - {:?}", f.x, f.y); 126 | to_range(&f.x).zip(to_range(&f.y)) 127 | }) 128 | .fold((board, count), |bnc, it| { 129 | let (x, y) = it; 130 | let (mut board, mut count) = bnc; 131 | 132 | println!("diag ({}, {})", x, y); 133 | print_board(&board); 134 | 135 | board[y as usize][x as usize] += 1; 136 | if board[y as usize][x as usize] == 2 { 137 | count += 1; 138 | } 139 | 140 | return (board, count); 141 | }); 142 | 143 | println!("Count {}. Powered by Rustlang:tm:", count); 144 | } 145 | 146 | -------------------------------------------------------------------------------- /src/day4.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug, Copy, Clone)] 2 | pub enum BoardSlot { 3 | Unmarked(i32), 4 | Marked(i32), 5 | } 6 | 7 | impl BoardSlot { 8 | fn is_equal(&self, value: i32) -> bool { 9 | return match self { 10 | BoardSlot::Unmarked(v) => { 11 | if *v == value { 12 | true 13 | } else { 14 | false 15 | } 16 | }, 17 | BoardSlot::Marked(v) => { 18 | if *v == value { 19 | true 20 | } else { 21 | false 22 | } 23 | } 24 | }; 25 | } 26 | } 27 | 28 | #[derive(Debug)] 29 | struct Board { 30 | board: [[BoardSlot; 5]; 5], 31 | } 32 | 33 | impl Board { 34 | pub fn mark(&mut self, value: i32) -> bool { 35 | for col in 0..5 { 36 | for row in 0..5 { 37 | if self.board[col][row].is_equal(value) { 38 | self.board[col][row] = BoardSlot::Marked(value); 39 | return self.check_for_win(col, row); 40 | } 41 | } 42 | } 43 | return false; 44 | } 45 | 46 | pub fn check_for_win(&self, col: usize, row: usize) -> bool { 47 | let mut all_true = true; 48 | for r in 0..5 { 49 | match self.board[col][r] { 50 | BoardSlot::Unmarked(_) => { 51 | all_true = false; 52 | break; 53 | }, 54 | _ => {} 55 | } 56 | match self.board[r][row] { 57 | BoardSlot::Unmarked(_) => { 58 | all_true = false; 59 | break; 60 | }, 61 | _ => {} 62 | } 63 | } 64 | 65 | return all_true; 66 | } 67 | 68 | pub fn values(&self) -> impl Iterator + '_ { 69 | let mut idx = 0; 70 | return std::iter::from_fn(move || { 71 | if idx >= 25 { 72 | return None; 73 | } 74 | let slot = self.board[idx % 5][idx / 5]; 75 | idx += 1; 76 | 77 | return Some(slot); 78 | }); 79 | } 80 | } 81 | 82 | fn parse_input(line: &str) -> Result, std::io::Error> { 83 | return Ok( 84 | line.split(",") 85 | .map(|item| item.parse::().unwrap()) 86 | .collect()); 87 | } 88 | 89 | fn parse_board(vals: &[&str]) -> Result, std::io::Error> { 90 | if vals.len() < 5 { 91 | return Ok(None); 92 | } 93 | 94 | let out = Board { 95 | board: [[BoardSlot::Unmarked(0); 5]; 5], 96 | }; 97 | 98 | let (out, _) = vals.iter() 99 | .map(|line| line.split_whitespace().filter(|x| !x.is_empty())) 100 | .flatten() 101 | .map(|item| item.parse::().unwrap()) 102 | .fold((out, 0), |(mut out, idx), value| { 103 | out.board[idx % 5][idx / 5] = BoardSlot::Unmarked(value); 104 | return (out, idx + 1); 105 | }); 106 | 107 | return Ok(Some(out)); 108 | } 109 | 110 | fn main() -> Result<(), Box> { 111 | let lines: Vec<&str> = include_str!("day4_1.input").lines(). 112 | filter(|x| !x.is_empty()).collect(); 113 | 114 | let input = parse_input(lines[0])?; 115 | let mut boards: Vec = lines[1..].chunks(5).map(|chunk| { 116 | return parse_board(chunk).unwrap().unwrap(); 117 | }).collect(); 118 | 119 | 120 | let mut total_cheat_because_i_suck_at_rust: Option = None; 121 | for i in input { 122 | if boards.len() == 1 { 123 | if boards[0].mark(i) { 124 | println!("WINNER BOARD({}) {:?}", i, boards[0]); 125 | total_cheat_because_i_suck_at_rust = Some(i * boards[0].values().map(|x| match x { 126 | BoardSlot::Unmarked(v) => v, 127 | _ => 0, 128 | }).sum::()); 129 | break; 130 | } 131 | } else { 132 | boards = boards.into_iter().fold(vec![], |mut boards, mut board| { 133 | 134 | if !board.mark(i) { 135 | boards.push(board); 136 | } 137 | 138 | return boards; 139 | }); 140 | } 141 | println!("Board Count {} from input {}", boards.len(), i); 142 | 143 | } 144 | 145 | match total_cheat_because_i_suck_at_rust { 146 | Some(v) => { 147 | println!("GOT IT {}, Brought to you by Rustlang:tm:", v) 148 | }, 149 | _ => println!("You suck") 150 | } 151 | 152 | return Ok(()); 153 | } 154 | 155 | 156 | -------------------------------------------------------------------------------- /src/day8_2.rs: -------------------------------------------------------------------------------- 1 | #![feature(int_abs_diff)] 2 | 3 | fn project(s: &str) -> u64 { 4 | println!("'{}'", s); 5 | return s 6 | .chars() 7 | .map(|x| { 8 | // step 1 convert char => byte 9 | // x - 'a' 10 | // return 10pow(FOO[x - 'a']) 11 | 0x1 << (x as u8 - 'a' as u8) 12 | }) 13 | .fold(0, |acc, x| acc + x); 14 | } 15 | 16 | fn contains(a: u64, b: u64) -> bool { 17 | return a & b == b; 18 | } 19 | 20 | fn missing(a: u64, b: u64) -> u64 { 21 | (a ^ b).count_ones() as u64 22 | } 23 | 24 | fn create_contain(b: u64) -> Box bool> { 25 | return Box::new(move |a| { 26 | println!("create_contain :: a: {:#010b} b: {:#010b}", a, b); 27 | return contains(*a, b); 28 | }); 29 | } 30 | 31 | fn create_missing(b: u64, count: u64) -> Box bool> { 32 | return Box::new(move |a| { 33 | println!("create_missing :: a: {:#010b} b: {:#010b} count {}", a, b, missing(*a, b)); 34 | return missing(*a, b) == count; 35 | }); 36 | } 37 | 38 | fn remove(list: Vec, f: Box bool>) -> (Vec, u64) { 39 | println!("list {:?}", list); 40 | let (idx, matched) = list 41 | .iter() 42 | .enumerate() 43 | .filter(|it| { 44 | return f(it.1); 45 | }) 46 | .take(1) 47 | .collect::>()[0]; 48 | 49 | let mut list = list.clone(); 50 | list.remove(idx); 51 | return (list, *matched); 52 | } 53 | 54 | fn get_value(proj_val: u64, numbers: &[u64; 10]) -> usize { 55 | let (idx, _) = numbers.iter().enumerate().filter(|it| { 56 | let (_, x) = it; 57 | return **x == proj_val; 58 | }).collect::>()[0]; 59 | 60 | return idx; 61 | } 62 | 63 | fn main() { 64 | let count = include_str!("day8.input") 65 | .trim() 66 | .lines() 67 | .fold(0, |acc, line| { 68 | let (input, output) = line.split_once(" | ").unwrap(); 69 | let input = input.split(" "); 70 | let mut numbers: [u64; 10] = input.clone().fold([0; 10], |mut numbers, seg| { 71 | match seg.len() { 72 | 2 => numbers[1] = project(seg), 73 | 7 => numbers[8] = project(seg), 74 | 4 => numbers[4] = project(seg), 75 | 3 => numbers[7] = project(seg), 76 | _ => {} 77 | } 78 | numbers 79 | }); 80 | 81 | println!("1 : {:#010b}", numbers[1]); 82 | println!("8 : {:#010b}", numbers[8]); 83 | println!("4 : {:#010b}", numbers[4]); 84 | println!("3 : {:#010b}", numbers[7]); 85 | 86 | let group5: Vec = input.clone().filter(|seg| &seg.len() == &5).map(project).collect(); 87 | let group6: Vec = input.filter(|seg| &seg.len() == &6).map(project).collect(); 88 | 89 | group5.iter().for_each(|x| { 90 | println!("group5 : {:#010b}", x); 91 | }); 92 | group6.iter().for_each(|x| { 93 | println!("group6 : {:#010b}", x); 94 | }); 95 | 96 | let (group6, nine) = remove(group6, create_contain(numbers[4])); 97 | println!("FOUND NINE : contains 4 {:#010b} U {:#010b}", nine, numbers[4]); 98 | numbers[9] = nine; 99 | 100 | // find 2 101 | let (group5, two) = remove(group5, create_missing(numbers[9], 3)); 102 | println!("FOUND TWO : from group5 {:#010b} missing 2 {:#010b}", two, nine); 103 | numbers[2] = two; 104 | 105 | // find 5 106 | let (group5, five) = remove(group5, create_missing(numbers[7], 4)); 107 | numbers[5] = five; 108 | println!("five : {:#010b}", five); 109 | numbers[3] = group5[0]; 110 | 111 | println!("FINDING SIX"); 112 | let (group6, six) = remove(group6, create_contain(numbers[5])); 113 | numbers[6] = six; 114 | println!("six : {:#010b}", six); 115 | 116 | println!("remainder from six"); 117 | numbers[0] = group6[0]; 118 | 119 | println!("{:?}", numbers); 120 | let output: Vec = output 121 | .split(" ") 122 | .map(str::trim) 123 | .map(project) 124 | .collect(); 125 | 126 | let res = output.iter().rev().enumerate().fold(0, |acc, it| { 127 | let (idx, val) = it; 128 | let val_idx = get_value(*val, &numbers); 129 | println!("val: {} :: val_idx {}", val, val_idx); 130 | return acc + 10_u64.pow(idx as u32) * val_idx as u64; 131 | }); 132 | return res + acc; 133 | }); 134 | 135 | println!("{} Powered by RustLang:tm:", count); 136 | } 137 | 138 | 139 | -------------------------------------------------------------------------------- /src/day9.input: -------------------------------------------------------------------------------- 1 | 6689921013498789902346789201997567893294212349421234789439898765498665457689964987654312357896565678 2 | 5578892154987699894559894399875478789989901268992345696598769896987543274597893298775201256987434789 3 | 3456789369876545689698976987754395678977892456789459987987654998987632123456789109764215345899676993 4 | 4997999878987679898987989876543234589456789567899998899498543129876542046797899919875636656789997892 5 | 9889999999398789987856899989954465694375899678999876789397684012987657657898999891986547789998789921 6 | 8679897679209899876545779998895578943234878989998765699989765123598798769999998793987698999989679910 7 | 6569793498999999876434568987679989776123567895987654678979543234679999978999998659798789319876559891 8 | 4458679997678987654323457898567897654234679934699875699568954345989899899578899548679895409654346789 9 | 3356567896542399543212345987678998966995989223568986789457895469898789764476798934567976598753235597 10 | 2123458999431298657423456798789319989879892101456797892346796598784679843345987923569987989632123456 11 | 4244567998910239776534867899992101299865679212359998901235897978663567932129876894678998976543436567 12 | 5656678997894349899646789978989212987654578996567989432346789865542358943098765789899019998957545978 13 | 9767789656789478998787896365678929897543456789789876543456991974321467892129954889902998999898656799 14 | 9879896545699567999998954234579998786532345678999987656569892985210276943339973678919877898789798899 15 | 0989965434568979889029532123767999654321534569989798787698789976371345894598982567898765675678999979 16 | 1999654322378998768998921012348998765210125778978659998987659876562656789697651486789654794567898767 17 | 9898932101489997654567892543459989876533259899765434879986545987978787899987632345689563123456987856 18 | 8767894212599988323456989656789878987844345998972123459865432498989898979876545467895432094667896545 19 | 5456789323459876512345678967896764398756457897894234598764301239895939567989876568976593989778975439 20 | 2345678934567965434456989878975321299897767966789355987654212345794323498999987678998989878999654328 21 | 1256799545679876545677894989764210989998878954878967898965345499895436579567898789109878767899876546 22 | 0127897656889987756789943299965329876419989543567899999876756578987677893478909899998765645794987657 23 | 2938949877999998987897892109876539854323497652459988999987897899498988912346912999876543134893298768 24 | 9899932989798999098986789919987698765635569763498767989999998912349999434959899989999432012954129878 25 | 9779891297687899129875689898998989896745679854999652878998769209498976569898798878998764123993299989 26 | 8656799986566798934993998767899876987856798769898741667899854398987897898767657767899875254789989995 27 | 6545678984345987899879899856798965499967899898765432456999765987656798979754346456789976465699878994 28 | 7656899975956986598766789867987532399878999979876573467898979876545899459863212367891987899895467989 29 | 8768999899899767454345679879998653589989998765987665678997899988734991398974334478910998978954349878 30 | 9979998798798654321236789998999764678999897654399876789976789999323789997899465699329879567965498765 31 | 1989987657549543210197899987789876789998789767999987899765857898915699876788976989598765457899987654 32 | 0996798743239765421989929876677999899987679979889898998974345987923986585687989878999976345678996543 33 | 9895697621029878439878913975456899939876567898765689687993253456899894344556798767899865456989886532 34 | 8784598534134989598768899894345998921999678987654598546989012345698789212345679878998976577899764321 35 | 7642987693257997699656799783245987892988999996543987434567993457987678905467899989567897689969865210 36 | 9831098989368998989745789610139876789877689899764965425378989579876587896567998793456789992456976321 37 | 6432139878999989876432596531299765679766598789999762101234578989865456789878987654798899891567897432 38 | 6543298967789975976563469642987654799654435678987653324345679998754345699989798765689989689978999545 39 | 7754397856678964988974678953496542398543212568998765435459798869543234789997689896789678567899989656 40 | 9865986743457893299985679764965321987698623456789897645689987654321045678976542997896543456789979967 41 | 7999875442446789101396989899876459898786546567890998796789998796532123489989659898989932139998767898 42 | 6987654321235679212987999989996598789898657678921249899899989987648234678998798759679893398797656799 43 | 5398765745347889329998999879989987678999788799843458967978976598757656789129989543498789987653345899 44 | 3129879856768995498999998967879876567899899897654567954567895439868787899998965432345678997632136789 45 | 4015989997878996987899997656768965446689975999868879883477989323979898999877896543456789876532012989 46 | 5124599998989989876789878543457987334456799899999997672376678901989999998766789654587898765432124678 47 | 3235678979999879965698765432346899212347987789989876541234567932399899989654578965698919887654289789 48 | 4999989657899767854569764321245678924479876579876995430123698949998789876523689896799324999765678999 49 | 9878996545987654323459843210236799734569965468994989921235679998754698765434898789895455699876989878 50 | 9967896434699543212349654321347897645698986356789878892356798999865789986545689578987579987987994667 51 | 8954594323498784329498967865458999767987658264598967799567987899876897987656895456799698976798923456 52 | 7863489914989895498987899878567898978996532123987545678979876789997896898967954345678977645899216567 53 | 6572378895678976987876989989678967899987644379976234789998765678998955679879879458789765439999928788 54 | 5451258789789989976765878999889456794598876569995445789987654367899543256989998669999879598987899899 55 | 4210145678991098765674568993992346789679997678986896896798765459969864347896549789013998977676789921 56 | 5543234569989998654643459982101256998798798989998987965659986578943985856798729892134987766545678910 57 | 6654346778979876543232368976342347899987659199989698954349997789894596767899913943245976553234578921 58 | 7787656989556997652101458975453458987898541019876549695298998896789987899999899876356985432123489932 59 | 8898767895447698787312467896784567896987632156995435579976689965678998956798789985459876541012567893 60 | 9989879964323479876523456998895678954296545247984323467894579754349999548987678976589987632123789999 61 | 8978989553212367995434678959976889992198654349976012389943019543202987659876467897678999843545678988 62 | 7869895432101456987655789545987899989239765698765124569652198654399898799865356899789798768798789767 63 | 6758789543212368998976891236898999878949876987654245778943239768989789986544237678995679878919898756 64 | 4345678965327456799988910123469998769899987898864345689659349879878678996433124567894579999109997645 65 | 1234599995496567893499899234567987656789998949765767998798957989964567894321034578943234767998754234 66 | 2876789989989878999987678995879876545678999656979878929987898999873456789432345689432123459876543125 67 | 3989898769878989998996566789999986534767899798989989219896789998731567896564556796543536567989754576 68 | 4599997654667899887987345678998897323458998999999999998765678986542879987875678897956787689998969697 69 | 5678989543456999766799456789986789214567897898998889897654568998753499998989989999878998999877698989 70 | 6799878932345678945988969899997894325678966987987679798532367899984578969998795689989989998766567978 71 | 7988967921234789029877798998998995434589245976798556689965456932975679456965634567998978997653456567 72 | 9877359890345678939965677987999987646789134985897434567896578921098794349874326678956767899432123456 73 | 8866238789467989997894356976789998657891095954986546789997789932129893198765435689545456899321012345 74 | 7654345679589999876795234954548998768932989893298656799219897893939954349879876789434349987432145956 75 | 9765656889678998965799659893237899899899878789109789898901956789898765599999988899621238996553234898 76 | 9878967898789987654678998765356789956789365678929898967992349898789896989989999967990126987664345789 77 | 1989878989899876543459999877867894345892134569946987648689498989678989879878933456789334599765456799 78 | 0199989877945988432345789988878954234789023456897898734579987674569876567767912345896545679876567898 79 | 9978998765432398543657999899989432145678934567998939923469976563498965434456899766799697893999878986 80 | 8767897654321987654798998756798555236789645878989029313498975432987654322345678979898989912499989775 81 | 9878999795690298765899976545987654345899756989678998901297654321298865401266899998976778923989997654 82 | 3989797989989349876999831036798765456789887896567987892999775410349876616477998987894569939979876543 83 | 2094596767878956989698752123459876798896998954349876989898765321299987726589997896943457898868988632 84 | 2123985454567899996569643234569988989987999769499965678789887532989699897699876545894568976757994210 85 | 9249874323879968995498755455678999878999899898989874465678998649876512998789765434789678985246789321 86 | 8956965314689256789379876898789434569898799987878983234589998798654323459897654123678989764137995452 87 | 7897975465892148993267987999896323479767679876567890123478999899876734789976543012569899892019896574 88 | 6798986576791027894356798998965213568955589987699921334569998967998965678976432123498789999198789689 89 | 5989998789892546789767999987654323479543456798989932456998897654559876789987543234987678998995678999 90 | 9878999893999656789899894398765434599212345679879893569876799943234987891098854569886567897684569679 91 | 7567898912498767899987789219876655678905479998768789798765688890123599992129765698765456796563499798 92 | 6456987201999978989875699323987868989999569895656578999874567789294689989939876799854347897412989897 93 | 2349876349899989976564568954598979399878998784343467899943248679989789877895987899965467893209878976 94 | 1298765498799999965443657965679999298966987673212456789650134568978998765634998929876588965398767445 95 | 2399976597678999874321347897989988997655696542102345678931246779769997643129899436988678976987654236 96 | 3982989976567898765210256789998967789943987664213456899545656895656897654298789545698789987998532145 97 | 9873498965456789874321387899876454677892199875354897987656987954346789865999679678939895499876543256 98 | 9964987654356699985453598998765333456789019765465789499967898943256899977899989899125954345987654367 99 | 9865698965234569876567679329874212345793129876576894329878969420123679998999896921034985456798798589 100 | 9878789210125679987798989212983101234895234989987893212989654321234567899998765432129876568999897678 101 | -------------------------------------------------------------------------------- /src/day10.input: -------------------------------------------------------------------------------- 1 | {([[[(<<[{[[[[(){}][()]][({}())]]]<{((<>[]){[]<>})({()()}(<>[]))}<{{{}()}{[]()}}>>})[<(<[[<><>][{}{ 2 | ([(<(((<[({{({(){}}<{}()>)((<>{})[{}<>})}}[{[(<>())[[]]]{{[][]}(<><>)}}{<<{}()>([]())>([<>][{}])}])](<[{[ 3 | {{[[<[<(<<<{((<>[])([]<>))(<{}><()[]>)}[(((){}){<>[]})<{(){}}<<>[]>>]>{[{{<>{}}<()<>>}<<<>[]>([]<>)>][ 4 | <[{<(({([[([({{}[]}{<><>})<<[]{}>>]<<<{}{}>((){})><{{}()}<{}[]>>>)](([<([]{})<{}<>>>(<[][]>{()()}) 5 | {{<(([<[[{<{({{}<>}({}()))<[<>[]](<>[])>}><[(((){})){[()]<<>[]>}][{{<><>}(<>{})}<<()[]>({}())>]>}<[{[(()<>) 6 | [<{{{({{[<([<{<><>}{<>{}}><<[][]>[{}<>]>]({<[]{}>[[]{}]}{([]())([][])})){<{[[][]]([]())}>([[[ 7 | {[<[<<([[<(<<<<>>({})>><({(){}}(<>{}))[{()()}(()[])]>}[<({[]})<[()[]](<>{})>>[<({}{})[()<>]><{(){}}>]]> 8 | [(<({{<[{<(<((<><>)<[]<>>)({<><>}<<>()>)><<<()<>>[()()]>{<<>{}>[()<>]}>){{[([]{})<<><>>]([< 9 | <<{{<{<{([{(<{<><>}>((()[])<<>{}>))({<{}>}<[[]()][<><>]>)}<{([[]()]{<>{}})}{(<<>()>{<>{}})[{<><>}{<><>}]}>] 10 | {(<{<({{([[{<({})[()()]><[{}<>][{}[]]>}<<<[]{}>[<>()]>({{}{}}[{}[]])>]<({[[][]]({}())}[(()[]](< 11 | <[<{[<<[(((<([()()]<()()>]([()[]][{}{}])>)[[[{<>}[<>[]]]][(<()()><<>>)<<{}{}>{<>}>]])([(<({}<>)[()()]> 12 | (<<{{([<[<[<[{[]()}[{}<>]]<(<>[])[{}]>><[{()[]}[()[]]]<([]<>)(()())>>]{{{{()<>}{()()}}[(<>< 13 | <[([(<[[[(<[(<{}()>{()()})<<()[]>{(){}}>]><<({[]<>}<{}{}>)[{[][]}{[]{}}]>{<{()()}(()[])>{[<><> 14 | [[([[({{{[[(<<()()>[<>[]]>)<[<<>{}>]([[]()][(){}])>]<(<{()<>}[[][]]>(([]{})[[]()]))[<({}[]) 15 | <<{[({<[[[[[{<<>()>{<>{}}}[<()()>]](<<{}<>>{{}<>]><[{}<>]<()<>>>)][((<[]{}>[[]])<{{}()}>)[((<>{}))<<<>{}>( 16 | [[<[[<<(({{<({[]<>}([][]))>{([[]()]{{}<>}){[[]{}][()<>]}}}({{({}()}[[][]]}(((){}){<>})}(<[{}<>]{()()}> 17 | {[{<[[(({<({[{()[]}[[][]]]}(({<><>}<{}[]>)))>}{[{(<{[]{}}{{}[]}>{<<><>>})}<{{[[][]]{<>()>}}<{ 18 | {[({<{<{[[([[<()<>}{[]<>}][<<>[]>([])]])]([({{[]()}({}())}([<>()](<><>)))])]{{<[<<[]<>>(()())>(<<>()>{<> 19 | ({([<({((<({<<()<>>[(){}]>[(<>{}){<>[]}]}){([{{}[]}])([({}()){<><>}]{[<><>]([]())))}><<[([{}[]])]( 20 | <{[{<{<<[<<<[(()<>){[][]}]([()<>]({}{}))>{(<{}{}>[<>{}])[{{}()}[(){}]]}><({<[]<>>[<>{}]}{([]<>)<[]{})})<([{}( 21 | <[<<(({<[{{(<[[]<>]<<>()>>([{}<>]{[]()}))}{<(([]<>)<()<>>)[({}[])<[]{}>]><<<{}[]>{{}<>}>({<>[]}[(){}])>}}<( 22 | [[[[[[(((<{<{(()())<<>{}>}>(<[<><>]({}[])})}{{<[()<>]<[]{}>>[{{}<>}[[]()]]}({<<>[]>}[<{}<> 23 | [(({{<{[<[[(<(()())<<>()>>[<<><>><()()>])(<[{}()]><{[]()}<{}{}>>)][<[({}())<{}<>>][({}[])(()[])]>((( 24 | (([<({{<{{[<<{[]()>(<>{})>[[{}]{{}{}}]>{<<[]{}>>[([][])[<><>]]}]<<[<<>[]>({}<>)]({<>[]}<{}{}>)>[{<{}<>>{[]()} 25 | {(<<[{<<{({(<(<>{})(()())><(<>[]){[]<>}>){[(<>[]){[]()}]{[<>()][{}<>]]}}{([[{}()]]((<><>)))[([{}()]([]())) 26 | [{({[[{{[<<{{[{}<>][<>]}([(){}]{<><>})}><(<[()[]][{}{}]><{[]{}}({})>)(<({}[])<()()>>{<{}{}>{[ 27 | ([(({{<[<(([({{}<>}[[][]])<({}[]){{}()}>]{[[{}[]]][((){})]})<[{{{}<>}([]{})}{{[]<>}}]>)[{{<([]())({})> 28 | <{{{<<(<{<(<{{<>()}}{({}<>)}>)>}((<{[<{}{}>([]<>)]<<[]()>[{}()]>}<{[<><>]<[]{}>}{{(){}}[[]()]}>>[({(()<>)<{} 29 | ((<[{<<{{{([[[[][]](<>[])]]{<({}[])([][])]<{{}{}}{()[]}>})}[[{<{<>[]}{<>{}}>}]]}{<[[((()<>)<()[]>){<()>({}[] 30 | ({[[{<{{<<([(<[]<>>{<>{}})<{()[]}(<>())>])<[{[<><>]({}{})}][<({}())><{()<>}(<>())>]>>>{{(([ 31 | <((<<(<(<<{{{[{}]<()<>>}{[[]<>]{<><>}}}<[[<>{}]{()()}][<()()>{[][]}]>}{[{[{}()][{}{}]}(<{}()>[{}<>])]}>> 32 | (([<({<[[(<(<([]())({}<>)>([{}()]{<>[]}))<{{{}{}}([]{})}<({}{})<{}<>>>>>[{{<<>[]><<>{}>}({{}<>})}{({[]()}(()< 33 | {[((<({[([(([{(){}}{{}()}][<[]()>{(){}}])[[[{}[]]{{}<>}]<{[]{}}>]){(<[<><>][[][]]>)[{{<>{}}((){})>[([]())[ 34 | [[<[<{({[({{([()<>]<()()>)}[<<[]()>>]}((({()()})(<{}>[<>()]))[(({}{}){[]}>(([][])<()()>)]))[{<[<[ 35 | [<<([((<<(([[({}{})((){})]<({}[])[{}{}]>]<{{<><>}<[]>}>)[<{{<>()}<()()>}{<<>{}>[[]()]}>[(([][]) 36 | {(<(<[[((<([{<[][]><()>}[[<>{}]]]<<((){}){[]())>[<()<>>(<>[])]>)<{<[[]][<>{}]>({<><>}[<>()])}({{{ 37 | (<{({({<[[((<<{}<>><<>()>>({{}}<<>[])))[<<{}[]><<><>>>{{[]{}}(())}])[<[([]())<<>{}>]>[[[<>< 38 | <[{[[{[({{{([<()()><<>[]>])([([]{})(<>())]{([]<>){()[]}})}<{({{}<>}{[]})([()()])}<[[[]<>><<>{}>]<[()()]<(){} 39 | <<[<[{{({(({(<[]()>({}{}))([{}[]][[]()])}{{(()[]){<><>}}([<><>]{{}})})[{[[{}{}]({}())]{<<>{} 40 | {{{[[[[[<(<<{(()[]){()<>}}<<(){}>(()())>>({(()[])}<<[][]>[<>()]>)>)[{[<(<>())>{<(){}>[{}{}]}] 41 | (([<[[{(([([<<<>{}>((){})>[({}{})<()<>>]]([((){})({}())]])[[{[()()][()[]]}([[][]](<>()))][<{()< 42 | ([<{{[[{<{[({<()[]>{[]<>}}([()<>]<[]()>))]}>{[<({({}{})})>{{<[<>{}][()<>]>({[]}{[]<>})}{<[[]{}](<>()) 43 | [{<<<{{((<{<<{[]()}<<>{}>>{((){}}{()()}}>}{[((()<>){<>})]({{()()}{(){}}}(<<>()>))}><[<{<{}><( 44 | (((<<<<{((((<{<>[]}{<>()}>)(((<>{})(<><>))))))}><<{<(<<<[]{}><[]>><{[]()}{[]())>>{{<{}<>>}{{ 45 | {{[{<(({[[[<[[(){}]]><<[{}{}]({}())>{{[][]}[()()]}>]<{<[<>{}][<>{}]>[(()[])<()[]>]}[{<{}<>>({ 46 | {[{{[<[(((([{{{}{}}}({<>{}}[[][]])]){[<([]<>)([][])><{()<>}([]())>](<({}<>)<()>>(<()[]>{{}()})) 47 | {{[(<<[<{<{[[<<><>>[()()]]]<(([]<>))<[[]{}]<[]>>>}>}>{{[<<<[()()]({}())>{<{}()>(<>[])}>([[(){}]<{}[]>]({( 48 | [[[<<(<[{<[[<{<>[]}{{}[]}>]{({<>{}}[<>]]<({}{})[<><>]>}]((([{}{}][{}<>]))[({<>()}(<>{}))]) 49 | {{((<<[({<<<{[(){}]({}())}([<>{}]<(){}>)>([(()<>)<{}[]>]<<[]{}><<>{}>>)>[[<{<>}((){})>[{()[]}<{}<>>]]( 50 | ((<<<<(<[{((<[[]{}](<><>)>{(()<>){()[]}}))}{<({(()())[(){}]}[[[]<>]<{}<>>])<([()[]])[{{}{}}{<><>}]>]}][<[{{ 51 | [[({<{{([([<{<<>()><()()>}>((<{}<>>{<>{}})[(()<>)[{}[]]])])[{{(([]())[<><>])({<>[]}(<>{}))}[[<[]><<>[]>]({[ 52 | [[(<(<[[(<{(({<>()}(<>[])){<<>[]>{()}}){({<>()}((){}))<<{}[]>[<><>]>}}{({<<>[]>[{}<>]})[[{( 53 | ({[<({<{<(<({([]<>){{}[]}}<({}{})[{}{}]>){{([]<>){(){}}}(<[]<>>{<><>})}><[[(<>())]{([]<>)} 54 | {{[[[<{<(<{[(({}[])({}{}))<<()<>>>][<[{}{}]{()[]}>(<[]<>>{<><>})]}<{[<<>()>]<([]())<<>()>>}>>) 55 | (({{{<(([[<(<((){})><[[]{}][{}()]>)<{[{}{}]}<(<>[])>>>]])({{{<[<()<>>{()<>}]>([<<>{}>(()())]<<<>{}>{[]} 56 | {{[[[[({<{[{<[()<>]<<><>>>({<>()}<<>{}>)}(({[]<>}([]))<<<><>>[[]<>]>)]<(<<()()>([]<>>>{({}{}){()()}})[[[<>< 57 | [<<{[[([(<{[{{[]()}{[][]}}{{[]()}{(){}}}]{{[{}<>]([]<>)}(<{}()><<>()>)}}<[<{{}<>}<[]<>>><[[]{}]([]{})>][{({ 58 | [[[<<(({(<<((<{}<>><(){}>)<([]<>)(()[])>)[((<>())<(){}>){{(){}}{<>[]}}]><<({(){}}{{}<>})>{[<[]{}><[]{}>](<() 59 | ({({{<[<<<[{{<{}[]>[(){}]}{(<>[]){{}}}}]{[[{[][]}{[]<>}]{(())([]{})}](<({}{})(()())><{<>()}>)}>>>]([({ 60 | <[(((<{<{[<{{{[]<>}{<><>}}{([][])[<>()]}][[[()<>]<{}[]>](({}<>)<[]()>)]>][(<{{{}[]}((){})}{{<>{}}({}() 61 | {<{[({<<(<[<([<>]<[]()>)<({}()){()[]}>>([{()[]}[{}{}]])]>(([{[[]<>][[]<>]}[[<>()]<<>()>]>(((()[]){<>{}}){ 62 | <(({<{[(<([(<{[]{}}{[]()}>){{(<><>){[][]}}[{{}()}<[][]>]}])>(<{{{[()<>][()<>]}({{}[]}[[]{}])}}(<{{[]{} 63 | {<[<[{{<<<([[[{}[]]{<>[]}](<<>[]>[()()])][(([]<>)]])>([[<{()}{<><>}>[(<>[])<{}()>]]]{<{<[]{}>[[] 64 | ([{[[<<<<{<[({[]{}}(<>()))[<{}<>>[[]{}]]](([{}<>]){{[]()}[<>[]]})>[{(([][])[{}[]]){(<><>)(<>[])}}(<{()<>} 65 | <<(([<{[((<[(<(){}>[<><>])[<<>[]><()())]]{<{()[]}(()<>)>}>)[<<{<(){}><{}()>}{[{}<>]<(){}>}>><[<{<>[]}{[][ 66 | (<<[<{<(<<({<([]{}){[][]}>{<[][]>{<>{}}}}[(([]())<<><>>){<{}><<>[]>}])(<{[<>[]]}>{<[{}<>}{<>{}}><{<><>}{()[ 67 | [[[[{<[{[<(<[(()())<{}[]>][(()())<()>]><{{()()}[<>{}]}[({}()><[]<>>]>)<{{[[]<>]<[][]>}{[<><>] 68 | {{<(({{<{(<([<[][]>(()[])])<<{<><>}<[]<>>><(<>{})>>><{[[[]{}]{<>[]}](<<>{}>(<>[]))}[[<()<>><()<>>]<{()< 69 | <[({<[[[(<{[(<{}()><(){}>)(<[][]><<>{}>)]<<{{}[]}<{}()>>[(<>())<<><>>]>>{<[([]{})[(){}]]{[( 70 | [{<<<({<[[[<{{<>{}}<()<>>}{[[]()][(){}]}>{(({}[])<[]{}>){<()>(()[])}}]<{<({}<>)<{}[]>>[<{}{}><<><> 71 | {<<[(<<<(<[<<{<><>}>({<>()}(()[]))>[([<><>][[]{}])(([]<>))]]>)>[({[<([[][]]({}))<((){}){[]<>}]>[[ 72 | ([<{<(<<{({<{<(){}>({}<>)}}{<[{}()][()<>]>{<[]<>>{<>[]}}}}<({[{}{}](<>[])}(<[][]>[{}<>]))< 73 | {([<<<<{[<<[[<{}{}><[][]>]<{{}()}[()[]]>]<[(()[]){<>[]}][[[]()][()<>>]>>(<[{<>()}(<><>)]{<<>{}>{ 74 | [[([(([[[<[((<()()>)([[]{}]<[]()>))]><{{[[[]{}]([]{})][(()<>)<{}<>>]}([{()<>}]{[<>()][{}[]]})} 75 | <<{<[<<<({{(<<[]>([])>{<{}<>><<><>>}){<<()<>><()<>>><(<>[])<{}<>>}}}{([{[]<>}{<>{}}](<()()>[{}{}]))<{<[]> 76 | [{{(([{[<{<{{<<><>><{}[]>}}{<(<>{}){[]}>[([]{})[[]{}]]}>(({[{}]<()[]>}))}><<[{(<{}[]><[][]>) 77 | [[[<[<[{{[<[{([]())[()[]]}{<{}<>>[()[]]}]<<{[][]}<()[]>>(<{}<>>{[]{}})>>{<<<{}()>><([]<>)[<>()]>>{{( 78 | {{{([{({[((((([][])[[]()])[(<><>)[()[]]])[[[<>[]]{{}<>}]<[{}[]]([][])>]){[[[[][]]<()<>>](<{}<>><{}{}> 79 | <<<[({{(<((<<{{}()]<()>>(<(){}><<>{}>)>(<{<>()}<[][]>><{<><>}{[]()}>))[(<([][])[<><>]>(<()()>{{} 80 | <[(([[(([[({[[[]()]{()()}](<<>{}>)}){<{{<>[]}{{}{}}}{<[]()>[{}{}]}][(<()[]>[<>[]])((<>{}))]}]{[<<<<> 81 | ({{[{<[{([[({[(){}]}[{[]{}}<(){}>])<<({})[[]()]>>]<(({(){}}<[]>)<[<>{}}(<>())>)>])}<<<<[[[[]<>][{}()]] 82 | {{{[[([<{({{{<(){}><{}()>}([()()]<<>[]>)}<<[<>()]{{}<>}><<<><>>>>})([(<(()[])({}<>)>([{}<>](<>[]))){(<<>> 83 | <([([[<{{({{[[<>[]]({}[])]}(<({}())><[<>{}]>)}{[(<{}[]>(<>[]))([[]{}]{[]})]({([][])(<>())})} 84 | [({({{[{<{{(([{}]){<{}[]>([][])})({[[][]]<<>[]>}[<()<>><[]>])}<<<<{}{}>{[]()}>({[][]}[()()])>({([][])[<>{}]}[ 85 | ({<{(<([<[{<{<<>[]>({}{}>}([()<>]<[]<>>)>({{(){}}<<><>>}[({}{})])}]><<[(<<<>{}>([]())>)[[<[]<>>( 86 | <[{<{<<<({[([({}<>){()()}][<()()>(<><>)]){<{()[]}<<>[]>>{{{}()}[<>[]]}}](((<[]()>{<>()})(({}<>)([]{})))({( 87 | <<{<[[[<[<[[({()()}({}[]))[<()()>[()<>]]]]>][{[<<({}<>)[[][]]>{{{}[]}<()[]>)>]<{{[()[]][[]()]}}{<[ 88 | <{<{({({[{<{[{()<>}]<<<><>><[]<>>>}[{<[]><(){}>}<{[]{}}(()<>)>]><{<{{}()}{(){}}>{<()<>>{[]()}}}((([]<>)<<> 89 | {(({[([(((<<([()()]<<>[]>)[<<>()>(<>{})]>[<<<><>><()>>]>[((<()()>((){})))[[<()<>><()()>)({{}[]} 90 | <[<[<{<[{[[([[()()]<{}<>>]){[[{}[]][<>()]]{[[]{}][()<>]}}]]<[{((<>())[[][]]>}([[()<>]<[][]>])](({[ 91 | ((<<[[{<({[([{<><>}[<>{}]]){(([]{}){(){}})}](<({{}()}<()<>>)({[]()}[[][]))>{{{{}()}[[][]]}<(<>{}){<>[]}>} 92 | <{{{[([({{[(<<[]<>>[{}<>]><<[]{}>(())>)<[[<>{}]<{}<>>]<{()}<{}{}>>>]}{{[<(<>{})<[]()>><[(){}]>][{([]())}[< 93 | [{<[<(<<{({[[<[]<>><()()>]([()()]<<>{}>)]}{(<{[]()}([]<>)><{()[]}>){<<[]()><{}<>>>({()}<<>[]>)}})}{ 94 | [{(({[{[{(<[(<[]{}>(<><>))]<[{()}({}())]>><<[({}[]){<><>}](<[][]>[()[]])>[[([][])([]<>)](([]{}])]>)}]<[<[ 95 | <({[([(<(((({(<>())<{}[]>}[(<>[]){()[]}]))){[([([]{})(<>()]]([()()][{}<>]))<<{{}}(<>[])>{{() 96 | ((({{({<{<({[(<>[]){()()}]([{}[]][{}{}])})(<<{[]{}}>{<[]<>>{()[]}}>)><{{{{{}()}}{[{}[]]<<>[]>} 97 | (<[<<[([[{<[<({}()){()}>(<(){}><<><>>)]>{{([()[]]<<>()>)(<[]<>>)}{[{<>[]}[<>()]](<<>()><()[] 98 | ((<<({<((<(<({<><>}({}<>))({{}{}}(<>()))>((([]()){(){}})[(()())(()())]>)>){{<([{<>()}(<><>)]<{<>() 99 | (({(<[({({([<{[]()}<<>()>>{(()<>)[[]()]}]{{[()()]((){})}{[{}<>]{(){}}}})}<<<(<()()>[{}{}])<([]{}){{}[] 100 | {({[[{([[[<((<(){}>{{}()})[(<>{})])([[<>[]]<()[]>][(()())<[]{}>]>>]((({[{}<>]<{}{}>})({<{}[]>}{(<> 101 | [[(({<<{[(<<(([][]){{}<>}){[{}[]]({}[])}>(({<><>})<(()<>)[<>()]})>{({[[]{}]((){})}[([]())])})(({([[][]] 102 | <[<{[<<<{[{(<[<>[]]>{{(){}}[[]()]})}[<{[{}{}]}><(<{}()]{{}{}}){({}[])}>]]}>[({{(<({}[])({}<>)>[{{}<>}])}{ 103 | -------------------------------------------------------------------------------- /outout: -------------------------------------------------------------------------------- 1 | Before Board(7): Board { board: [[Unmarked(3), Unmarked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Unmarked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Unmarked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Unmarked(5), Unmarked(23), Unmarked(4), Unmarked(6)]] } 2 | After Board: Board { board: [[Unmarked(3), Unmarked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Unmarked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Unmarked(5), Unmarked(23), Unmarked(4), Unmarked(6)]] } 3 | Before Board(4): Board { board: [[Unmarked(3), Unmarked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Unmarked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Unmarked(5), Unmarked(23), Unmarked(4), Unmarked(6)]] } 4 | After Board: Board { board: [[Unmarked(3), Unmarked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Unmarked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Unmarked(5), Unmarked(23), Marked(4), Unmarked(6)]] } 5 | Before Board(9): Board { board: [[Unmarked(3), Unmarked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Unmarked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Unmarked(5), Unmarked(23), Marked(4), Unmarked(6)]] } 6 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Unmarked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Unmarked(5), Unmarked(23), Marked(4), Unmarked(6)]] } 7 | Before Board(5): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Unmarked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Unmarked(5), Unmarked(23), Marked(4), Unmarked(6)]] } 8 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Unmarked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Unmarked(23), Marked(4), Unmarked(6)]] } 9 | Before Board(11): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Unmarked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Unmarked(23), Marked(4), Unmarked(6)]] } 10 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Unmarked(23), Marked(4), Unmarked(6)]] } 11 | Before Board(17): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Unmarked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Unmarked(23), Marked(4), Unmarked(6)]] } 12 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Unmarked(23), Marked(4), Unmarked(6)]] } 13 | Before Board(23): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Unmarked(23), Marked(4), Unmarked(6)]] } 14 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 15 | Before Board(2): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Unmarked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 16 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 17 | Before Board(0): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Unmarked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 18 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Marked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 19 | Before Board(14): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Unmarked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Marked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 20 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Marked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Marked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 21 | Before Board(21): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Marked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Unmarked(21)], [Marked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 22 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Marked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Marked(21)], [Marked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 23 | Before Board(24): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Marked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Marked(21)], [Marked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Unmarked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 24 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Marked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Marked(21)], [Marked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Marked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 25 | Before Board(10): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Marked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Marked(21)], [Marked(0), Unmarked(13), Marked(7), Unmarked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Marked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 26 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Marked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Marked(21)], [Marked(0), Unmarked(13), Marked(7), Marked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Marked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 27 | Before Board(16): Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Marked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Marked(21)], [Marked(0), Unmarked(13), Marked(7), Marked(10), Unmarked(16)], [Marked(2), Marked(17), Unmarked(25), Marked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 28 | After Board: Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Marked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Marked(21)], [Marked(0), Unmarked(13), Marked(7), Marked(10), Marked(16)], [Marked(2), Marked(17), Unmarked(25), Marked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 29 | WINNER BOARD(16) Board { board: [[Unmarked(3), Marked(9), Unmarked(19), Unmarked(20), Marked(14)], [Unmarked(15), Unmarked(18), Unmarked(8), Marked(11), Marked(21)], [Marked(0), Unmarked(13), Marked(7), Marked(10), Marked(16)], [Marked(2), Marked(17), Unmarked(25), Marked(24), Unmarked(12)], [Unmarked(22), Marked(5), Marked(23), Marked(4), Unmarked(6)]] } 30 | 31 | WINNER BOARD(16) Board { board: [ 32 | [U3, M9, U19, U20, M14], 33 | [U15, U18, U8, M11, M21], 34 | [M0, U13, M7, M10, M16], 35 | [M2, M17, U25, M24, U12], 36 | [U22, M5, M23, M4, U6] 37 | ] } 38 | -------------------------------------------------------------------------------- /src/day4_1.input: -------------------------------------------------------------------------------- 1 | 93,49,16,88,4,92,23,38,44,98,97,8,5,69,41,70,19,11,29,40,90,43,79,96,68,10,31,35,34,32,0,67,83,33,2,76,24,87,99,77,82,66,12,15,28,59,64,95,91,71,62,22,53,46,39,81,75,86,74,56,50,18,17,73,13,54,60,48,21,51,52,55,85,80,30,36,47,3,26,57,84,25,63,27,37,94,7,45,58,9,78,65,72,6,14,61,20,1,42,89 2 | 3 | 83 11 47 61 45 4 | 30 74 73 14 66 5 | 53 52 10 57 15 6 | 64 50 54 28 87 7 | 26 85 63 25 86 8 | 9 | 72 4 62 30 49 10 | 43 93 39 63 25 11 | 18 70 44 77 38 12 | 84 8 85 5 26 13 | 54 50 40 75 2 14 | 15 | 70 78 55 26 35 16 | 75 44 80 15 34 17 | 67 47 53 10 56 18 | 73 46 27 38 13 19 | 64 92 39 87 23 20 | 21 | 24 66 11 44 51 22 | 32 37 83 69 85 23 | 46 59 14 99 76 24 | 71 28 94 35 98 25 | 16 40 74 80 6 26 | 27 | 1 55 42 59 70 28 | 87 81 68 83 56 29 | 12 21 20 49 84 30 | 89 92 94 2 76 31 | 5 17 77 3 32 32 | 33 | 66 98 10 53 78 34 | 80 92 26 38 29 35 | 46 34 22 51 8 36 | 43 89 87 64 17 37 | 63 86 84 62 15 38 | 39 | 75 65 96 19 87 40 | 12 51 97 68 8 41 | 42 90 61 10 71 42 | 69 48 7 15 26 43 | 43 89 21 16 35 44 | 45 | 64 92 83 2 48 46 | 11 34 98 75 96 47 | 21 6 54 78 68 48 | 42 19 16 41 8 49 | 24 58 45 81 49 50 | 51 | 59 37 46 1 30 52 | 51 6 10 44 82 53 | 85 3 27 83 96 54 | 48 81 56 34 55 55 | 35 99 67 12 78 56 | 57 | 14 49 41 82 78 58 | 8 70 29 72 32 59 | 61 16 19 68 38 60 | 93 46 48 42 31 61 | 45 36 84 54 11 62 | 63 | 96 14 1 71 91 64 | 3 89 59 27 2 65 | 34 37 5 31 0 66 | 22 44 98 43 32 67 | 6 66 95 40 46 68 | 69 | 75 57 76 50 84 70 | 32 59 35 12 86 71 | 81 77 42 13 21 72 | 91 3 9 44 96 73 | 4 52 23 18 37 74 | 75 | 16 62 40 8 82 76 | 43 70 29 63 9 77 | 41 73 77 13 59 78 | 44 0 49 53 76 79 | 84 55 36 56 48 80 | 81 | 81 62 35 65 43 82 | 6 84 67 44 48 83 | 31 56 73 69 33 84 | 66 92 40 77 55 85 | 4 70 97 88 13 86 | 87 | 63 5 12 66 77 88 | 68 74 15 84 16 89 | 1 45 72 54 42 90 | 58 33 35 65 21 91 | 73 60 67 10 95 92 | 93 | 0 25 16 42 45 94 | 27 98 87 29 3 95 | 62 6 88 19 95 96 | 84 33 53 89 37 97 | 46 38 97 96 77 98 | 99 | 98 62 8 73 20 100 | 81 83 51 55 21 101 | 4 13 70 60 1 102 | 32 82 12 22 61 103 | 79 40 92 76 36 104 | 105 | 91 52 17 13 76 106 | 25 79 88 90 87 107 | 41 58 89 30 66 108 | 56 49 69 35 61 109 | 44 57 81 34 43 110 | 111 | 69 88 87 72 84 112 | 36 55 13 11 27 113 | 47 40 34 99 38 114 | 23 18 96 57 28 115 | 41 67 26 6 54 116 | 117 | 39 69 49 40 86 118 | 6 75 90 31 21 119 | 82 15 48 37 88 120 | 55 23 4 7 10 121 | 68 81 87 56 73 122 | 123 | 41 65 82 20 31 124 | 42 22 88 70 75 125 | 73 76 54 15 83 126 | 67 99 46 28 72 127 | 9 51 57 96 38 128 | 129 | 3 1 15 13 79 130 | 7 94 77 86 30 131 | 54 39 9 5 43 132 | 66 34 92 87 88 133 | 59 93 32 48 51 134 | 135 | 98 21 19 76 97 136 | 93 83 5 24 99 137 | 14 80 85 7 92 138 | 8 53 1 78 72 139 | 45 20 2 13 6 140 | 141 | 51 28 54 62 42 142 | 97 70 77 23 81 143 | 15 67 33 55 0 144 | 35 78 14 61 8 145 | 26 13 99 56 24 146 | 147 | 71 99 2 72 21 148 | 22 54 30 38 41 149 | 92 47 56 70 34 150 | 28 90 0 67 78 151 | 63 14 84 97 61 152 | 153 | 86 81 85 21 65 154 | 59 47 56 28 32 155 | 89 54 44 71 1 156 | 80 55 76 12 33 157 | 13 11 31 92 88 158 | 159 | 54 41 8 46 83 160 | 35 2 23 15 52 161 | 31 91 92 61 19 162 | 25 17 98 53 22 163 | 72 78 81 84 27 164 | 165 | 61 72 95 50 49 166 | 19 37 85 64 71 167 | 78 18 59 54 67 168 | 75 68 27 90 1 169 | 8 62 3 32 83 170 | 171 | 0 20 88 30 52 172 | 87 13 73 3 79 173 | 37 22 10 70 67 174 | 61 48 81 40 54 175 | 50 68 93 8 34 176 | 177 | 88 39 9 36 15 178 | 14 79 1 58 83 179 | 4 73 42 55 37 180 | 0 53 77 28 8 181 | 18 92 21 25 62 182 | 183 | 65 36 59 80 97 184 | 6 60 3 95 52 185 | 20 10 78 1 46 186 | 45 26 38 96 25 187 | 37 85 19 98 75 188 | 189 | 27 47 38 62 86 190 | 16 35 87 46 74 191 | 52 94 25 9 2 192 | 61 88 51 90 68 193 | 79 72 1 20 82 194 | 195 | 5 29 9 44 64 196 | 89 15 78 56 2 197 | 85 93 28 79 34 198 | 87 16 21 59 49 199 | 8 39 71 57 75 200 | 201 | 0 64 99 62 28 202 | 47 3 87 31 9 203 | 70 10 97 24 91 204 | 65 43 96 86 85 205 | 35 88 25 67 83 206 | 207 | 69 67 8 31 49 208 | 57 22 83 56 79 209 | 91 54 70 33 53 210 | 68 47 84 80 35 211 | 21 7 65 4 17 212 | 213 | 4 2 18 62 13 214 | 74 31 60 59 16 215 | 71 43 86 17 93 216 | 70 81 50 53 64 217 | 51 96 49 7 47 218 | 219 | 51 96 12 23 18 220 | 27 2 35 55 50 221 | 92 44 4 49 85 222 | 40 58 6 13 16 223 | 98 5 48 74 57 224 | 225 | 88 3 15 45 95 226 | 59 2 58 98 77 227 | 62 89 80 11 74 228 | 10 49 48 72 76 229 | 86 61 53 60 44 230 | 231 | 77 85 1 3 76 232 | 94 30 83 6 39 233 | 80 92 24 31 46 234 | 64 47 65 7 84 235 | 23 86 79 82 34 236 | 237 | 99 5 2 23 53 238 | 78 79 55 96 84 239 | 91 43 47 69 63 240 | 80 29 94 14 32 241 | 1 18 90 28 68 242 | 243 | 29 51 43 17 0 244 | 4 44 48 93 40 245 | 52 11 75 50 88 246 | 34 95 47 68 55 247 | 84 54 19 12 5 248 | 249 | 26 98 34 92 53 250 | 80 69 68 5 71 251 | 1 30 61 15 56 252 | 96 22 52 70 25 253 | 93 7 36 18 55 254 | 255 | 19 16 4 32 55 256 | 61 66 67 50 88 257 | 89 51 64 57 43 258 | 87 31 49 85 9 259 | 90 39 56 96 59 260 | 261 | 25 59 57 10 52 262 | 8 50 28 71 3 263 | 99 78 47 31 42 264 | 0 82 98 93 2 265 | 89 81 55 76 13 266 | 267 | 19 81 93 25 20 268 | 87 70 42 38 44 269 | 33 98 62 91 39 270 | 49 80 47 56 28 271 | 92 46 8 78 75 272 | 273 | 70 86 32 10 83 274 | 30 62 99 45 88 275 | 6 5 43 22 16 276 | 57 48 49 18 68 277 | 33 28 80 94 9 278 | 279 | 85 65 83 59 44 280 | 52 24 87 31 56 281 | 17 94 73 43 58 282 | 10 23 46 36 89 283 | 53 28 63 62 70 284 | 285 | 72 7 99 40 77 286 | 68 71 12 19 97 287 | 54 73 64 43 11 288 | 44 29 58 75 78 289 | 21 6 30 90 28 290 | 291 | 97 32 21 48 25 292 | 67 58 64 0 1 293 | 50 49 27 70 43 294 | 76 22 12 51 37 295 | 93 20 62 36 26 296 | 297 | 76 69 52 2 67 298 | 13 18 1 62 81 299 | 94 43 99 10 45 300 | 17 55 19 44 78 301 | 46 3 16 74 73 302 | 303 | 23 17 66 2 78 304 | 44 53 67 19 69 305 | 94 43 85 34 14 306 | 26 63 40 1 27 307 | 95 48 20 72 64 308 | 309 | 49 96 17 42 53 310 | 8 15 62 3 90 311 | 9 57 61 82 46 312 | 95 44 75 27 23 313 | 10 6 24 63 98 314 | 315 | 80 35 65 55 37 316 | 64 91 77 3 94 317 | 46 24 97 87 78 318 | 60 2 61 23 32 319 | 51 92 59 73 25 320 | 321 | 68 5 32 99 70 322 | 18 43 96 63 52 323 | 88 3 59 76 25 324 | 65 48 72 2 24 325 | 67 41 60 44 87 326 | 327 | 12 48 72 86 93 328 | 27 36 96 51 21 329 | 2 50 34 83 6 330 | 49 65 32 42 87 331 | 88 10 43 84 22 332 | 333 | 78 70 44 10 80 334 | 18 71 17 50 27 335 | 12 46 88 6 91 336 | 98 0 31 85 56 337 | 92 53 72 77 28 338 | 339 | 85 84 6 89 24 340 | 15 41 21 92 71 341 | 88 90 95 32 98 342 | 46 60 35 38 17 343 | 36 66 93 70 40 344 | 345 | 54 5 41 59 76 346 | 38 47 48 51 71 347 | 80 96 39 85 0 348 | 68 61 55 40 13 349 | 78 94 99 19 30 350 | 351 | 50 3 55 37 25 352 | 16 59 48 52 13 353 | 41 20 46 27 39 354 | 90 80 30 84 93 355 | 22 12 79 74 0 356 | 357 | 16 97 4 58 80 358 | 68 49 0 87 35 359 | 88 63 1 36 74 360 | 45 91 55 46 75 361 | 22 17 43 19 71 362 | 363 | 30 98 31 63 16 364 | 62 6 3 9 67 365 | 61 11 29 66 52 366 | 80 97 42 72 76 367 | 78 57 90 13 89 368 | 369 | 40 22 8 11 43 370 | 90 61 29 10 88 371 | 69 86 74 26 70 372 | 14 51 93 32 80 373 | 84 75 81 72 16 374 | 375 | 91 22 89 72 82 376 | 63 58 80 42 45 377 | 11 40 29 41 90 378 | 17 16 62 14 35 379 | 23 4 65 79 0 380 | 381 | 32 76 30 8 90 382 | 0 89 1 95 48 383 | 40 44 68 49 37 384 | 35 26 81 51 21 385 | 47 19 83 91 71 386 | 387 | 9 31 70 42 16 388 | 82 4 84 54 45 389 | 58 36 53 20 44 390 | 26 5 69 90 52 391 | 95 67 51 7 76 392 | 393 | 5 64 51 63 8 394 | 80 22 85 35 16 395 | 31 99 68 53 65 396 | 58 2 32 83 59 397 | 92 93 18 56 62 398 | 399 | 32 94 9 68 79 400 | 26 34 7 1 0 401 | 95 56 69 29 20 402 | 18 55 25 15 88 403 | 54 97 61 51 10 404 | 405 | 25 9 1 70 80 406 | 14 75 58 30 81 407 | 45 19 2 41 95 408 | 93 21 74 7 59 409 | 34 89 52 78 54 410 | 411 | 81 1 61 92 51 412 | 97 35 3 7 39 413 | 76 62 32 26 90 414 | 71 72 19 31 15 415 | 45 57 82 14 24 416 | 417 | 66 6 27 11 81 418 | 40 60 48 75 91 419 | 86 31 62 36 72 420 | 54 76 25 44 74 421 | 84 29 20 53 68 422 | 423 | 80 33 97 7 51 424 | 74 66 6 67 83 425 | 76 68 87 90 91 426 | 2 53 49 31 82 427 | 72 95 26 28 22 428 | 429 | 33 1 93 2 8 430 | 7 19 6 51 47 431 | 63 68 26 90 54 432 | 59 22 9 46 28 433 | 40 20 80 86 15 434 | 435 | 47 5 23 64 31 436 | 54 44 51 14 21 437 | 24 25 93 62 0 438 | 41 15 56 91 40 439 | 48 17 69 11 81 440 | 441 | 59 27 47 82 44 442 | 78 89 34 1 23 443 | 31 91 35 30 52 444 | 48 15 32 43 5 445 | 42 41 12 53 77 446 | 447 | 83 8 74 12 4 448 | 45 56 22 68 50 449 | 99 2 55 62 90 450 | 36 14 3 33 93 451 | 43 26 85 96 61 452 | 453 | 13 33 85 32 84 454 | 41 66 48 9 11 455 | 70 80 45 82 34 456 | 74 94 67 58 98 457 | 89 8 39 51 64 458 | 459 | 20 23 32 57 52 460 | 17 7 86 90 75 461 | 78 44 43 41 12 462 | 29 92 0 35 48 463 | 15 61 42 74 21 464 | 465 | 76 92 73 16 2 466 | 78 18 91 86 51 467 | 70 66 11 12 79 468 | 44 28 49 56 80 469 | 64 74 67 46 20 470 | 471 | 56 87 96 62 53 472 | 63 7 47 39 66 473 | 61 78 23 33 10 474 | 65 76 19 3 94 475 | 25 84 90 68 79 476 | 477 | 33 79 70 88 61 478 | 99 23 76 37 66 479 | 16 81 67 46 49 480 | 91 73 83 44 18 481 | 28 59 85 55 21 482 | 483 | 15 44 70 23 43 484 | 94 48 8 77 28 485 | 53 63 17 83 69 486 | 25 74 40 11 35 487 | 78 36 31 85 84 488 | 489 | 73 80 31 90 20 490 | 53 60 1 87 33 491 | 51 89 47 32 22 492 | 71 15 55 26 5 493 | 77 81 39 11 94 494 | 495 | 2 15 79 22 50 496 | 63 8 66 53 13 497 | 26 4 16 20 59 498 | 47 93 80 77 38 499 | 7 52 92 74 99 500 | 501 | 68 10 22 61 7 502 | 50 63 93 27 54 503 | 32 79 20 62 88 504 | 13 77 64 89 65 505 | 97 41 39 38 75 506 | 507 | 81 29 64 14 80 508 | 25 57 94 13 60 509 | 58 33 63 98 42 510 | 46 10 17 76 61 511 | 2 1 68 56 45 512 | 513 | 49 23 82 10 56 514 | 71 25 85 26 58 515 | 65 37 88 7 3 516 | 34 80 66 63 74 517 | 57 51 35 39 91 518 | 519 | 35 48 3 22 38 520 | 49 19 71 55 62 521 | 34 96 69 32 58 522 | 40 81 56 36 50 523 | 15 52 46 53 90 524 | 525 | 25 5 93 72 26 526 | 88 84 75 87 34 527 | 69 60 79 48 50 528 | 27 73 33 55 47 529 | 65 62 74 46 4 530 | 531 | 86 82 78 17 16 532 | 72 36 76 20 68 533 | 69 95 58 37 80 534 | 92 97 28 30 7 535 | 6 15 8 57 54 536 | 537 | 50 64 61 0 66 538 | 33 44 46 16 17 539 | 85 67 76 30 28 540 | 25 69 82 54 2 541 | 24 96 5 68 6 542 | 543 | 7 98 31 2 11 544 | 13 92 4 72 73 545 | 62 29 15 47 40 546 | 21 90 57 89 76 547 | 81 66 88 12 82 548 | 549 | 37 45 19 78 73 550 | 82 68 96 26 51 551 | 35 28 13 12 98 552 | 40 47 59 10 18 553 | 3 88 6 69 29 554 | 555 | 62 45 2 46 90 556 | 52 25 50 13 1 557 | 64 47 73 54 79 558 | 33 36 92 15 77 559 | 28 4 83 63 5 560 | 561 | 72 63 57 95 16 562 | 17 70 48 23 39 563 | 65 96 87 85 33 564 | 75 81 82 64 19 565 | 80 66 5 58 83 566 | 567 | 19 9 40 16 33 568 | 51 87 66 59 49 569 | 94 61 83 81 2 570 | 84 27 63 54 10 571 | 8 95 88 42 6 572 | 573 | 4 37 62 80 10 574 | 35 98 27 93 69 575 | 96 43 65 90 1 576 | 23 60 53 44 99 577 | 28 38 68 17 71 578 | 579 | 61 45 93 95 91 580 | 35 43 76 98 41 581 | 89 21 87 23 99 582 | 8 81 58 12 0 583 | 32 24 15 70 96 584 | 585 | 91 59 26 69 61 586 | 16 2 45 34 66 587 | 95 62 78 82 12 588 | 98 41 30 49 50 589 | 32 22 53 8 7 590 | 591 | 94 50 23 64 46 592 | 90 19 68 93 76 593 | 63 49 9 44 89 594 | 83 88 36 55 6 595 | 22 14 85 58 70 596 | 597 | 89 97 86 21 4 598 | 57 29 17 46 22 599 | 25 10 49 74 63 600 | 24 23 93 56 11 601 | 37 48 82 55 88 602 | -------------------------------------------------------------------------------- /src/day5.input: -------------------------------------------------------------------------------- 1 | 561,579 -> 965,175 2 | 735,73 -> 316,73 3 | 981,566 -> 981,11 4 | 631,588 -> 631,910 5 | 919,964 -> 70,115 6 | 122,463 -> 261,602 7 | 502,248 -> 774,248 8 | 636,797 -> 797,958 9 | 444,815 -> 444,554 10 | 734,97 -> 734,210 11 | 871,692 -> 368,692 12 | 842,261 -> 606,261 13 | 332,43 -> 206,43 14 | 371,220 -> 18,573 15 | 594,782 -> 127,782 16 | 952,953 -> 72,73 17 | 13,143 -> 755,885 18 | 827,741 -> 827,168 19 | 65,84 -> 839,858 20 | 299,598 -> 299,588 21 | 478,76 -> 607,76 22 | 656,748 -> 61,153 23 | 566,447 -> 857,447 24 | 497,19 -> 310,206 25 | 354,721 -> 538,721 26 | 124,17 -> 124,339 27 | 105,595 -> 843,595 28 | 686,902 -> 919,669 29 | 683,183 -> 776,183 30 | 415,45 -> 415,942 31 | 16,852 -> 843,25 32 | 945,954 -> 23,32 33 | 935,174 -> 485,624 34 | 712,297 -> 792,297 35 | 495,90 -> 497,90 36 | 836,259 -> 836,988 37 | 12,59 -> 916,963 38 | 72,648 -> 72,185 39 | 625,400 -> 507,282 40 | 809,206 -> 809,538 41 | 472,909 -> 472,213 42 | 847,162 -> 189,162 43 | 178,233 -> 178,777 44 | 404,276 -> 404,516 45 | 943,178 -> 400,721 46 | 882,429 -> 882,920 47 | 12,976 -> 900,88 48 | 33,53 -> 958,53 49 | 104,37 -> 609,542 50 | 207,736 -> 800,143 51 | 331,454 -> 331,715 52 | 956,52 -> 26,982 53 | 189,544 -> 189,368 54 | 194,258 -> 451,258 55 | 75,383 -> 75,642 56 | 770,861 -> 915,716 57 | 300,330 -> 300,683 58 | 649,175 -> 344,175 59 | 948,25 -> 42,931 60 | 245,313 -> 748,816 61 | 677,126 -> 677,204 62 | 507,948 -> 507,88 63 | 343,229 -> 343,677 64 | 946,933 -> 472,459 65 | 830,403 -> 830,660 66 | 626,651 -> 626,213 67 | 828,932 -> 828,487 68 | 792,101 -> 216,101 69 | 870,111 -> 50,931 70 | 770,464 -> 290,944 71 | 264,700 -> 941,23 72 | 894,846 -> 630,846 73 | 19,40 -> 957,978 74 | 911,425 -> 393,425 75 | 26,594 -> 26,475 76 | 754,287 -> 754,302 77 | 105,483 -> 807,483 78 | 25,902 -> 684,243 79 | 300,164 -> 532,396 80 | 79,346 -> 79,423 81 | 649,234 -> 649,331 82 | 113,115 -> 962,964 83 | 251,50 -> 531,330 84 | 908,177 -> 908,817 85 | 905,106 -> 905,570 86 | 958,55 -> 41,972 87 | 985,984 -> 62,61 88 | 794,802 -> 328,802 89 | 984,273 -> 370,887 90 | 271,758 -> 237,792 91 | 443,534 -> 835,926 92 | 367,762 -> 367,521 93 | 527,737 -> 717,737 94 | 89,921 -> 89,299 95 | 521,279 -> 108,279 96 | 810,344 -> 760,394 97 | 292,944 -> 292,941 98 | 265,471 -> 265,949 99 | 923,378 -> 415,886 100 | 125,656 -> 434,656 101 | 51,460 -> 51,542 102 | 297,178 -> 297,587 103 | 432,122 -> 241,122 104 | 916,855 -> 451,390 105 | 48,838 -> 636,838 106 | 802,659 -> 784,641 107 | 316,961 -> 417,961 108 | 342,675 -> 568,675 109 | 345,60 -> 352,60 110 | 495,595 -> 284,806 111 | 111,975 -> 815,271 112 | 315,239 -> 315,333 113 | 14,16 -> 930,932 114 | 380,373 -> 380,346 115 | 212,141 -> 212,691 116 | 415,555 -> 651,319 117 | 497,565 -> 96,164 118 | 902,451 -> 735,451 119 | 118,751 -> 521,751 120 | 923,680 -> 613,370 121 | 641,897 -> 233,489 122 | 804,447 -> 259,447 123 | 556,751 -> 968,751 124 | 409,638 -> 409,65 125 | 512,50 -> 432,130 126 | 28,25 -> 988,985 127 | 563,888 -> 563,502 128 | 912,691 -> 950,691 129 | 592,934 -> 592,433 130 | 465,886 -> 408,886 131 | 928,547 -> 671,290 132 | 486,953 -> 496,943 133 | 942,943 -> 42,43 134 | 672,759 -> 266,759 135 | 587,195 -> 763,371 136 | 95,354 -> 687,946 137 | 890,280 -> 734,124 138 | 945,906 -> 945,168 139 | 306,952 -> 306,257 140 | 143,160 -> 810,827 141 | 988,407 -> 167,407 142 | 274,472 -> 817,472 143 | 252,113 -> 430,291 144 | 294,767 -> 176,767 145 | 456,142 -> 423,142 146 | 908,107 -> 176,839 147 | 255,278 -> 447,86 148 | 100,44 -> 969,913 149 | 899,184 -> 899,986 150 | 872,877 -> 47,52 151 | 122,786 -> 228,786 152 | 132,777 -> 312,777 153 | 242,86 -> 36,86 154 | 726,671 -> 690,635 155 | 386,859 -> 790,455 156 | 468,62 -> 636,62 157 | 920,869 -> 920,790 158 | 610,66 -> 633,43 159 | 428,962 -> 428,717 160 | 935,881 -> 278,224 161 | 314,204 -> 458,204 162 | 906,515 -> 712,515 163 | 332,223 -> 744,223 164 | 707,802 -> 842,802 165 | 775,36 -> 946,207 166 | 906,206 -> 142,970 167 | 534,312 -> 534,622 168 | 26,687 -> 26,417 169 | 758,258 -> 688,188 170 | 830,591 -> 830,286 171 | 856,182 -> 924,182 172 | 78,755 -> 78,880 173 | 157,726 -> 157,904 174 | 316,30 -> 752,30 175 | 958,977 -> 10,29 176 | 831,813 -> 284,813 177 | 472,843 -> 989,326 178 | 133,99 -> 133,537 179 | 161,540 -> 846,540 180 | 176,739 -> 78,739 181 | 28,33 -> 969,974 182 | 65,160 -> 879,974 183 | 355,943 -> 355,685 184 | 893,512 -> 225,512 185 | 789,565 -> 789,81 186 | 253,832 -> 943,832 187 | 372,716 -> 372,605 188 | 781,293 -> 702,293 189 | 469,497 -> 469,149 190 | 692,499 -> 933,258 191 | 477,548 -> 477,849 192 | 131,894 -> 131,483 193 | 934,765 -> 13,765 194 | 830,55 -> 436,449 195 | 615,496 -> 531,412 196 | 78,634 -> 78,115 197 | 205,586 -> 205,661 198 | 871,742 -> 871,590 199 | 218,223 -> 218,741 200 | 56,897 -> 872,81 201 | 30,886 -> 728,188 202 | 369,877 -> 369,963 203 | 202,55 -> 930,783 204 | 251,131 -> 251,749 205 | 498,313 -> 498,126 206 | 688,876 -> 188,876 207 | 147,968 -> 607,508 208 | 400,693 -> 235,693 209 | 206,853 -> 206,211 210 | 401,158 -> 187,158 211 | 35,957 -> 973,19 212 | 517,822 -> 517,282 213 | 836,492 -> 433,895 214 | 751,114 -> 100,114 215 | 80,359 -> 710,359 216 | 302,871 -> 812,871 217 | 853,159 -> 853,548 218 | 351,663 -> 451,763 219 | 895,260 -> 307,848 220 | 369,455 -> 812,455 221 | 936,594 -> 393,51 222 | 55,696 -> 972,696 223 | 422,804 -> 192,804 224 | 110,893 -> 120,883 225 | 747,645 -> 747,181 226 | 636,344 -> 636,88 227 | 15,949 -> 543,421 228 | 985,948 -> 51,14 229 | 164,435 -> 164,27 230 | 30,966 -> 965,31 231 | 600,472 -> 985,472 232 | 119,161 -> 91,161 233 | 180,521 -> 180,802 234 | 98,70 -> 449,70 235 | 157,190 -> 613,190 236 | 816,501 -> 338,23 237 | 387,219 -> 387,75 238 | 115,579 -> 115,734 239 | 26,153 -> 26,450 240 | 733,783 -> 462,783 241 | 19,893 -> 759,893 242 | 646,726 -> 286,726 243 | 631,139 -> 631,664 244 | 490,668 -> 490,231 245 | 282,958 -> 282,816 246 | 338,55 -> 898,55 247 | 891,420 -> 443,420 248 | 222,917 -> 222,759 249 | 302,430 -> 465,430 250 | 946,49 -> 946,753 251 | 101,971 -> 879,193 252 | 329,122 -> 888,122 253 | 524,714 -> 154,344 254 | 89,769 -> 552,306 255 | 749,680 -> 749,536 256 | 161,510 -> 161,317 257 | 143,608 -> 543,608 258 | 677,526 -> 658,526 259 | 348,956 -> 512,956 260 | 851,973 -> 358,480 261 | 850,247 -> 56,247 262 | 284,274 -> 381,274 263 | 855,944 -> 101,190 264 | 338,102 -> 467,102 265 | 225,875 -> 225,303 266 | 120,944 -> 945,119 267 | 485,386 -> 305,386 268 | 321,866 -> 627,866 269 | 44,207 -> 44,244 270 | 514,763 -> 514,578 271 | 617,930 -> 617,371 272 | 963,838 -> 451,326 273 | 813,904 -> 174,265 274 | 901,983 -> 512,594 275 | 979,929 -> 527,477 276 | 533,383 -> 59,857 277 | 871,724 -> 828,767 278 | 174,133 -> 174,75 279 | 686,911 -> 15,911 280 | 361,406 -> 440,327 281 | 759,284 -> 275,284 282 | 231,431 -> 203,431 283 | 759,673 -> 839,673 284 | 914,897 -> 914,937 285 | 598,643 -> 598,722 286 | 697,297 -> 697,55 287 | 735,918 -> 735,81 288 | 375,538 -> 375,403 289 | 868,86 -> 170,784 290 | 390,142 -> 390,553 291 | 569,564 -> 569,800 292 | 514,276 -> 717,73 293 | 756,768 -> 182,768 294 | 349,428 -> 349,364 295 | 370,386 -> 370,621 296 | 191,224 -> 191,447 297 | 672,983 -> 209,983 298 | 281,854 -> 872,854 299 | 898,959 -> 898,207 300 | 961,597 -> 561,197 301 | 965,837 -> 338,210 302 | 120,675 -> 914,675 303 | 401,661 -> 401,167 304 | 706,536 -> 706,598 305 | 856,337 -> 283,910 306 | 980,535 -> 156,535 307 | 941,888 -> 179,126 308 | 585,47 -> 933,395 309 | 481,435 -> 481,818 310 | 989,978 -> 45,34 311 | 693,332 -> 693,528 312 | 863,605 -> 507,961 313 | 586,429 -> 252,429 314 | 37,61 -> 962,986 315 | 952,26 -> 16,962 316 | 926,492 -> 863,492 317 | 661,110 -> 279,110 318 | 524,879 -> 176,879 319 | 298,424 -> 858,984 320 | 498,627 -> 498,963 321 | 468,608 -> 256,820 322 | 61,491 -> 472,491 323 | 38,922 -> 938,22 324 | 361,938 -> 361,46 325 | 567,981 -> 567,973 326 | 399,575 -> 902,72 327 | 618,740 -> 818,540 328 | 79,115 -> 929,965 329 | 612,972 -> 612,698 330 | 217,626 -> 474,369 331 | 961,593 -> 961,70 332 | 287,450 -> 287,676 333 | 703,45 -> 871,45 334 | 756,778 -> 410,778 335 | 960,970 -> 42,52 336 | 254,513 -> 554,813 337 | 620,339 -> 601,320 338 | 650,344 -> 650,33 339 | 597,349 -> 597,491 340 | 761,106 -> 891,236 341 | 323,846 -> 883,846 342 | 678,190 -> 134,190 343 | 400,848 -> 400,271 344 | 198,68 -> 463,68 345 | 522,805 -> 522,445 346 | 979,134 -> 719,134 347 | 584,493 -> 584,471 348 | 635,10 -> 635,768 349 | 867,795 -> 31,795 350 | 157,824 -> 939,42 351 | 354,381 -> 653,381 352 | 45,628 -> 45,860 353 | 959,870 -> 808,719 354 | 587,810 -> 291,810 355 | 248,34 -> 83,199 356 | 656,505 -> 656,388 357 | 966,90 -> 966,934 358 | 957,834 -> 267,144 359 | 690,367 -> 447,367 360 | 153,948 -> 153,510 361 | 467,260 -> 467,332 362 | 69,43 -> 931,905 363 | 913,92 -> 913,827 364 | 226,504 -> 226,615 365 | 21,737 -> 21,819 366 | 391,289 -> 391,341 367 | 566,639 -> 723,639 368 | 160,824 -> 167,824 369 | 77,69 -> 379,371 370 | 756,864 -> 756,960 371 | 315,569 -> 927,569 372 | 964,864 -> 964,167 373 | 136,277 -> 136,184 374 | 524,450 -> 898,450 375 | 971,903 -> 222,903 376 | 962,958 -> 70,66 377 | 525,570 -> 45,90 378 | 164,352 -> 164,433 379 | 703,61 -> 668,61 380 | 289,136 -> 768,136 381 | 50,65 -> 861,876 382 | 676,199 -> 676,411 383 | 294,370 -> 56,132 384 | 299,840 -> 620,840 385 | 845,776 -> 845,66 386 | 61,18 -> 909,866 387 | 738,670 -> 738,438 388 | 974,618 -> 974,169 389 | 669,800 -> 607,800 390 | 935,427 -> 537,427 391 | 441,898 -> 441,462 392 | 490,768 -> 490,239 393 | 275,788 -> 947,116 394 | 650,412 -> 493,255 395 | 382,89 -> 950,89 396 | 865,194 -> 865,266 397 | 977,677 -> 459,677 398 | 128,18 -> 985,875 399 | 199,646 -> 199,611 400 | 666,149 -> 666,504 401 | 129,539 -> 129,266 402 | 332,364 -> 332,211 403 | 619,132 -> 619,580 404 | 426,69 -> 426,236 405 | 123,334 -> 22,334 406 | 792,57 -> 449,57 407 | 33,976 -> 987,22 408 | 221,614 -> 809,614 409 | 245,379 -> 280,379 410 | 895,238 -> 895,500 411 | 957,423 -> 119,423 412 | 917,50 -> 346,621 413 | 183,263 -> 708,263 414 | 452,174 -> 452,216 415 | 404,681 -> 287,798 416 | 931,54 -> 474,54 417 | 815,264 -> 151,928 418 | 736,507 -> 295,66 419 | 200,160 -> 901,861 420 | 709,975 -> 100,366 421 | 126,468 -> 393,201 422 | 822,627 -> 287,92 423 | 101,285 -> 176,285 424 | 250,581 -> 250,799 425 | 257,446 -> 257,927 426 | 436,423 -> 640,219 427 | 468,229 -> 987,748 428 | 394,245 -> 501,245 429 | 37,931 -> 684,931 430 | 123,54 -> 123,453 431 | 75,364 -> 758,364 432 | 256,62 -> 143,62 433 | 933,299 -> 933,410 434 | 313,887 -> 313,34 435 | 453,833 -> 457,833 436 | 614,87 -> 614,816 437 | 48,113 -> 48,646 438 | 977,571 -> 977,967 439 | 982,989 -> 32,39 440 | 773,749 -> 239,215 441 | 983,989 -> 218,224 442 | 885,606 -> 169,606 443 | 63,53 -> 63,29 444 | 96,870 -> 820,870 445 | 544,895 -> 389,740 446 | 61,246 -> 296,246 447 | 812,82 -> 53,841 448 | 749,399 -> 749,935 449 | 882,168 -> 274,168 450 | 566,673 -> 499,606 451 | 572,558 -> 806,792 452 | 923,79 -> 923,844 453 | 875,416 -> 875,112 454 | 393,18 -> 393,149 455 | 389,844 -> 147,844 456 | 207,157 -> 207,949 457 | 467,644 -> 728,644 458 | 36,29 -> 587,29 459 | 448,370 -> 448,247 460 | 43,283 -> 43,122 461 | 709,837 -> 709,265 462 | 294,273 -> 98,273 463 | 625,869 -> 26,270 464 | 156,26 -> 145,26 465 | 393,544 -> 393,456 466 | 708,536 -> 64,536 467 | 324,519 -> 324,950 468 | 138,788 -> 533,788 469 | 117,818 -> 254,681 470 | 953,766 -> 306,119 471 | 669,325 -> 669,940 472 | 421,416 -> 715,416 473 | 886,101 -> 886,371 474 | 786,656 -> 786,169 475 | 123,641 -> 622,142 476 | 658,504 -> 985,177 477 | 440,505 -> 74,139 478 | 300,616 -> 300,473 479 | 265,729 -> 983,11 480 | 501,396 -> 274,396 481 | 877,123 -> 113,887 482 | 544,78 -> 544,604 483 | 287,944 -> 287,391 484 | 766,854 -> 97,185 485 | 959,49 -> 127,881 486 | 715,727 -> 715,647 487 | 339,557 -> 339,610 488 | 19,133 -> 87,133 489 | 872,94 -> 932,94 490 | 966,935 -> 95,64 491 | 137,942 -> 918,161 492 | 162,718 -> 598,282 493 | 256,18 -> 256,47 494 | 597,658 -> 314,941 495 | 817,685 -> 137,685 496 | 20,14 -> 988,982 497 | 970,916 -> 100,46 498 | 672,152 -> 672,842 499 | 468,825 -> 468,911 500 | 673,731 -> 267,325 501 | -------------------------------------------------------------------------------- /src/day2.input: -------------------------------------------------------------------------------- 1 | forward 6 2 | down 2 3 | forward 2 4 | down 8 5 | forward 3 6 | down 6 7 | down 8 8 | down 9 9 | forward 7 10 | forward 8 11 | down 9 12 | down 8 13 | down 9 14 | up 8 15 | forward 1 16 | down 7 17 | down 3 18 | forward 3 19 | forward 1 20 | down 3 21 | forward 3 22 | forward 1 23 | up 8 24 | down 5 25 | down 1 26 | forward 6 27 | forward 2 28 | up 9 29 | down 3 30 | down 8 31 | down 3 32 | down 3 33 | up 2 34 | down 7 35 | down 3 36 | up 5 37 | forward 4 38 | down 9 39 | forward 6 40 | forward 3 41 | forward 1 42 | forward 3 43 | down 2 44 | up 9 45 | down 4 46 | forward 6 47 | down 3 48 | forward 2 49 | down 2 50 | up 5 51 | up 1 52 | forward 3 53 | forward 6 54 | down 6 55 | forward 7 56 | forward 1 57 | down 3 58 | down 8 59 | forward 2 60 | down 7 61 | up 1 62 | up 2 63 | forward 5 64 | down 8 65 | down 8 66 | forward 9 67 | forward 7 68 | forward 2 69 | forward 7 70 | up 6 71 | up 9 72 | down 4 73 | forward 4 74 | forward 4 75 | up 1 76 | down 7 77 | forward 9 78 | forward 3 79 | down 6 80 | down 9 81 | forward 7 82 | forward 4 83 | up 7 84 | up 6 85 | up 8 86 | down 9 87 | forward 1 88 | down 1 89 | forward 8 90 | down 7 91 | forward 5 92 | down 3 93 | down 3 94 | down 8 95 | down 8 96 | down 4 97 | up 4 98 | forward 3 99 | down 8 100 | down 9 101 | up 3 102 | up 8 103 | down 9 104 | up 5 105 | forward 2 106 | forward 5 107 | forward 5 108 | down 8 109 | forward 9 110 | forward 8 111 | down 5 112 | down 9 113 | forward 6 114 | forward 2 115 | forward 3 116 | up 1 117 | forward 1 118 | up 2 119 | up 2 120 | forward 4 121 | forward 8 122 | forward 5 123 | down 1 124 | up 4 125 | forward 5 126 | up 7 127 | down 5 128 | down 5 129 | forward 8 130 | up 2 131 | down 7 132 | down 6 133 | down 5 134 | down 5 135 | down 1 136 | down 8 137 | forward 9 138 | forward 2 139 | up 6 140 | up 4 141 | down 8 142 | forward 1 143 | forward 2 144 | down 2 145 | forward 7 146 | forward 7 147 | forward 3 148 | forward 6 149 | forward 8 150 | down 3 151 | forward 6 152 | up 5 153 | down 3 154 | down 8 155 | up 1 156 | forward 1 157 | down 7 158 | down 3 159 | up 5 160 | forward 6 161 | forward 8 162 | forward 9 163 | up 5 164 | up 5 165 | up 5 166 | forward 8 167 | up 5 168 | down 6 169 | down 7 170 | down 5 171 | up 7 172 | up 1 173 | up 3 174 | forward 8 175 | up 9 176 | down 7 177 | down 4 178 | up 6 179 | up 8 180 | up 9 181 | up 9 182 | forward 5 183 | up 5 184 | forward 2 185 | forward 2 186 | forward 6 187 | up 2 188 | down 8 189 | up 2 190 | forward 5 191 | down 9 192 | up 7 193 | down 9 194 | forward 1 195 | forward 8 196 | up 1 197 | forward 7 198 | forward 2 199 | down 3 200 | forward 3 201 | forward 2 202 | up 9 203 | forward 4 204 | forward 9 205 | down 9 206 | forward 5 207 | forward 1 208 | forward 5 209 | forward 8 210 | up 5 211 | forward 1 212 | down 4 213 | up 8 214 | up 4 215 | up 7 216 | forward 4 217 | down 1 218 | up 6 219 | forward 6 220 | down 2 221 | down 7 222 | forward 4 223 | up 7 224 | forward 7 225 | forward 9 226 | down 5 227 | up 5 228 | forward 4 229 | down 6 230 | forward 1 231 | up 8 232 | up 8 233 | down 8 234 | down 7 235 | forward 7 236 | down 3 237 | forward 7 238 | down 3 239 | down 5 240 | down 4 241 | up 8 242 | down 2 243 | down 2 244 | up 5 245 | forward 9 246 | up 9 247 | forward 2 248 | up 4 249 | forward 4 250 | down 2 251 | down 7 252 | forward 7 253 | down 1 254 | down 6 255 | down 4 256 | forward 6 257 | up 4 258 | forward 4 259 | down 6 260 | down 8 261 | down 3 262 | forward 7 263 | down 3 264 | forward 7 265 | down 7 266 | forward 4 267 | up 9 268 | down 5 269 | forward 7 270 | forward 7 271 | up 6 272 | down 3 273 | forward 9 274 | down 1 275 | forward 4 276 | up 9 277 | down 3 278 | up 9 279 | down 5 280 | up 6 281 | forward 1 282 | forward 9 283 | up 4 284 | down 3 285 | forward 1 286 | down 7 287 | down 2 288 | forward 2 289 | down 6 290 | up 4 291 | down 4 292 | up 9 293 | down 3 294 | down 9 295 | down 4 296 | down 1 297 | up 8 298 | down 2 299 | up 1 300 | forward 5 301 | forward 9 302 | forward 1 303 | up 4 304 | forward 5 305 | down 7 306 | up 6 307 | down 3 308 | forward 8 309 | down 1 310 | down 5 311 | forward 5 312 | down 5 313 | down 7 314 | down 8 315 | down 7 316 | up 6 317 | forward 8 318 | down 8 319 | forward 6 320 | down 6 321 | down 7 322 | down 3 323 | forward 2 324 | down 6 325 | down 8 326 | down 7 327 | down 3 328 | up 1 329 | down 7 330 | forward 8 331 | forward 2 332 | forward 5 333 | down 4 334 | up 4 335 | forward 9 336 | down 9 337 | forward 6 338 | down 7 339 | down 4 340 | down 8 341 | up 9 342 | forward 7 343 | down 4 344 | forward 7 345 | forward 1 346 | forward 7 347 | down 9 348 | down 7 349 | forward 3 350 | forward 3 351 | forward 2 352 | down 5 353 | up 5 354 | forward 5 355 | down 2 356 | forward 7 357 | forward 9 358 | forward 7 359 | down 7 360 | down 9 361 | down 5 362 | forward 2 363 | up 5 364 | down 3 365 | forward 7 366 | down 4 367 | down 3 368 | up 5 369 | down 6 370 | down 3 371 | up 4 372 | forward 3 373 | down 1 374 | forward 6 375 | forward 6 376 | down 8 377 | forward 9 378 | down 2 379 | up 3 380 | down 4 381 | down 5 382 | forward 3 383 | down 9 384 | forward 2 385 | up 3 386 | up 4 387 | forward 9 388 | down 2 389 | forward 9 390 | forward 3 391 | down 4 392 | down 2 393 | down 5 394 | down 4 395 | forward 4 396 | down 1 397 | down 9 398 | down 2 399 | forward 8 400 | down 5 401 | forward 5 402 | up 7 403 | down 5 404 | down 2 405 | forward 5 406 | up 4 407 | down 5 408 | up 3 409 | forward 7 410 | down 9 411 | forward 5 412 | forward 2 413 | forward 1 414 | down 7 415 | down 9 416 | down 2 417 | up 2 418 | up 2 419 | up 4 420 | down 4 421 | down 7 422 | down 3 423 | forward 5 424 | forward 3 425 | up 6 426 | down 6 427 | up 6 428 | up 9 429 | forward 8 430 | forward 4 431 | up 3 432 | forward 1 433 | forward 2 434 | up 5 435 | forward 5 436 | forward 8 437 | forward 7 438 | forward 4 439 | down 1 440 | down 8 441 | down 1 442 | forward 3 443 | up 1 444 | forward 7 445 | forward 4 446 | down 8 447 | forward 7 448 | forward 9 449 | forward 3 450 | down 9 451 | down 9 452 | down 3 453 | up 6 454 | up 1 455 | down 4 456 | forward 5 457 | forward 4 458 | forward 6 459 | forward 8 460 | down 6 461 | down 3 462 | forward 5 463 | forward 6 464 | down 4 465 | down 2 466 | up 3 467 | down 3 468 | down 7 469 | down 5 470 | down 5 471 | forward 6 472 | down 4 473 | forward 1 474 | up 2 475 | forward 3 476 | down 1 477 | down 4 478 | down 9 479 | down 7 480 | down 9 481 | forward 9 482 | down 6 483 | down 3 484 | down 2 485 | down 5 486 | up 8 487 | forward 5 488 | forward 5 489 | forward 4 490 | up 5 491 | forward 1 492 | down 9 493 | down 1 494 | up 5 495 | forward 8 496 | forward 6 497 | forward 5 498 | down 1 499 | up 5 500 | down 8 501 | up 7 502 | down 8 503 | down 2 504 | down 3 505 | forward 2 506 | up 4 507 | down 6 508 | up 6 509 | down 3 510 | down 7 511 | up 3 512 | forward 4 513 | down 3 514 | forward 4 515 | up 9 516 | forward 5 517 | down 2 518 | forward 7 519 | forward 5 520 | up 3 521 | up 2 522 | forward 2 523 | down 8 524 | down 1 525 | down 3 526 | up 5 527 | down 4 528 | forward 4 529 | down 1 530 | forward 9 531 | down 3 532 | down 7 533 | down 4 534 | down 4 535 | forward 7 536 | up 5 537 | forward 4 538 | down 8 539 | up 4 540 | forward 6 541 | down 1 542 | up 4 543 | forward 4 544 | down 6 545 | up 5 546 | up 1 547 | forward 2 548 | down 5 549 | forward 8 550 | forward 6 551 | down 8 552 | down 7 553 | down 7 554 | down 1 555 | forward 5 556 | forward 7 557 | forward 7 558 | forward 7 559 | up 3 560 | forward 9 561 | forward 1 562 | down 9 563 | forward 4 564 | up 8 565 | forward 1 566 | forward 5 567 | forward 4 568 | down 2 569 | forward 4 570 | forward 9 571 | forward 3 572 | down 1 573 | forward 4 574 | forward 9 575 | forward 5 576 | down 5 577 | down 5 578 | forward 7 579 | down 3 580 | forward 4 581 | down 6 582 | forward 7 583 | down 2 584 | down 1 585 | down 5 586 | forward 4 587 | forward 9 588 | down 4 589 | forward 2 590 | down 8 591 | up 5 592 | down 9 593 | forward 8 594 | down 3 595 | up 6 596 | down 2 597 | down 4 598 | forward 4 599 | up 2 600 | down 4 601 | down 4 602 | up 7 603 | down 6 604 | forward 4 605 | down 7 606 | forward 3 607 | down 1 608 | up 1 609 | down 2 610 | down 6 611 | down 4 612 | up 3 613 | down 6 614 | up 2 615 | down 6 616 | forward 3 617 | down 9 618 | forward 5 619 | down 5 620 | down 9 621 | down 9 622 | down 7 623 | forward 9 624 | forward 8 625 | forward 9 626 | up 9 627 | forward 7 628 | forward 4 629 | forward 4 630 | up 5 631 | forward 2 632 | down 1 633 | up 9 634 | forward 2 635 | forward 7 636 | forward 1 637 | down 9 638 | forward 9 639 | up 8 640 | up 1 641 | up 7 642 | up 7 643 | down 5 644 | forward 2 645 | forward 8 646 | forward 6 647 | down 7 648 | forward 1 649 | down 9 650 | down 4 651 | down 4 652 | down 1 653 | up 7 654 | forward 4 655 | forward 6 656 | up 5 657 | forward 2 658 | down 9 659 | down 7 660 | forward 1 661 | forward 2 662 | down 5 663 | forward 3 664 | forward 8 665 | forward 6 666 | forward 3 667 | forward 2 668 | down 1 669 | forward 1 670 | forward 1 671 | forward 3 672 | down 9 673 | up 9 674 | down 9 675 | down 6 676 | forward 7 677 | down 6 678 | forward 9 679 | down 9 680 | down 7 681 | down 1 682 | down 9 683 | up 9 684 | down 6 685 | forward 9 686 | down 6 687 | forward 3 688 | down 8 689 | up 5 690 | forward 5 691 | forward 8 692 | up 3 693 | down 8 694 | up 6 695 | forward 4 696 | down 2 697 | forward 6 698 | down 9 699 | forward 6 700 | forward 4 701 | forward 9 702 | forward 3 703 | down 2 704 | down 4 705 | forward 5 706 | down 9 707 | up 7 708 | forward 4 709 | up 1 710 | forward 1 711 | down 6 712 | forward 3 713 | forward 7 714 | forward 2 715 | forward 2 716 | down 5 717 | down 9 718 | down 3 719 | down 5 720 | up 3 721 | forward 1 722 | down 2 723 | down 4 724 | down 1 725 | up 9 726 | up 5 727 | up 1 728 | down 1 729 | up 9 730 | down 5 731 | up 3 732 | up 3 733 | down 7 734 | forward 4 735 | down 6 736 | forward 2 737 | forward 7 738 | forward 4 739 | down 2 740 | forward 6 741 | forward 2 742 | down 3 743 | up 3 744 | up 9 745 | forward 9 746 | forward 9 747 | forward 6 748 | down 8 749 | down 1 750 | forward 9 751 | up 1 752 | down 6 753 | forward 6 754 | up 5 755 | forward 2 756 | forward 6 757 | down 9 758 | forward 1 759 | forward 8 760 | down 8 761 | forward 4 762 | forward 7 763 | up 6 764 | up 1 765 | forward 7 766 | forward 3 767 | forward 2 768 | down 4 769 | down 7 770 | down 7 771 | down 1 772 | down 6 773 | forward 1 774 | down 9 775 | up 9 776 | up 9 777 | down 2 778 | down 2 779 | forward 5 780 | up 2 781 | forward 7 782 | up 5 783 | down 9 784 | forward 7 785 | forward 2 786 | down 8 787 | up 1 788 | down 5 789 | forward 6 790 | down 8 791 | down 7 792 | forward 4 793 | up 2 794 | down 8 795 | forward 2 796 | down 5 797 | down 4 798 | down 9 799 | down 1 800 | down 9 801 | down 6 802 | down 3 803 | forward 1 804 | forward 6 805 | up 1 806 | up 1 807 | up 9 808 | down 2 809 | down 2 810 | forward 5 811 | down 3 812 | forward 4 813 | down 3 814 | down 7 815 | down 7 816 | forward 4 817 | up 3 818 | forward 4 819 | down 3 820 | forward 8 821 | forward 1 822 | up 2 823 | up 1 824 | forward 1 825 | down 6 826 | down 1 827 | down 3 828 | forward 7 829 | down 7 830 | forward 4 831 | forward 5 832 | forward 3 833 | down 5 834 | forward 9 835 | forward 5 836 | down 7 837 | forward 6 838 | down 4 839 | down 4 840 | down 9 841 | down 3 842 | up 9 843 | forward 7 844 | down 7 845 | forward 6 846 | down 2 847 | down 9 848 | forward 4 849 | forward 1 850 | forward 4 851 | down 5 852 | forward 7 853 | down 9 854 | down 8 855 | forward 9 856 | forward 1 857 | down 9 858 | forward 6 859 | up 5 860 | forward 9 861 | down 1 862 | down 5 863 | forward 4 864 | forward 5 865 | forward 8 866 | down 5 867 | forward 9 868 | down 6 869 | down 2 870 | up 4 871 | up 8 872 | forward 3 873 | forward 4 874 | down 3 875 | forward 4 876 | up 6 877 | forward 3 878 | forward 8 879 | forward 7 880 | down 1 881 | down 9 882 | down 8 883 | down 8 884 | down 1 885 | forward 9 886 | up 4 887 | down 5 888 | forward 7 889 | down 8 890 | down 3 891 | forward 9 892 | down 5 893 | forward 7 894 | forward 2 895 | down 4 896 | forward 2 897 | forward 7 898 | down 6 899 | forward 7 900 | down 2 901 | forward 9 902 | down 9 903 | forward 8 904 | forward 8 905 | down 6 906 | forward 7 907 | down 8 908 | forward 7 909 | forward 3 910 | down 1 911 | up 8 912 | down 5 913 | down 6 914 | up 5 915 | forward 5 916 | forward 5 917 | up 5 918 | up 3 919 | up 7 920 | down 6 921 | forward 8 922 | forward 4 923 | down 2 924 | up 5 925 | forward 8 926 | down 6 927 | forward 4 928 | forward 2 929 | up 8 930 | down 8 931 | down 5 932 | down 4 933 | forward 9 934 | forward 9 935 | forward 6 936 | forward 6 937 | down 3 938 | up 1 939 | down 4 940 | down 8 941 | down 9 942 | down 1 943 | forward 3 944 | forward 1 945 | down 9 946 | down 3 947 | down 7 948 | forward 6 949 | forward 9 950 | down 8 951 | down 8 952 | forward 6 953 | forward 1 954 | down 3 955 | forward 1 956 | down 8 957 | down 3 958 | down 9 959 | up 1 960 | forward 6 961 | up 2 962 | down 3 963 | forward 4 964 | forward 2 965 | up 2 966 | down 5 967 | forward 1 968 | down 3 969 | forward 9 970 | forward 4 971 | forward 6 972 | down 3 973 | forward 7 974 | down 6 975 | up 3 976 | up 7 977 | up 5 978 | down 4 979 | forward 4 980 | up 1 981 | forward 7 982 | up 9 983 | forward 3 984 | up 1 985 | down 3 986 | down 4 987 | forward 4 988 | up 3 989 | down 6 990 | down 9 991 | down 6 992 | forward 4 993 | down 9 994 | down 6 995 | forward 4 996 | forward 3 997 | down 3 998 | up 7 999 | down 9 1000 | forward 8 1001 | -------------------------------------------------------------------------------- /src/day8.input: -------------------------------------------------------------------------------- 1 | cbdfag bf ebgda cfead aecbgd dfbea dbafecg fab bgdaef fgeb | bf defbag efadgbc bfgeda 2 | defgac bfcedag fcaeb gefcb acdfe bfad bea ba acbedg cdebfa | abcfed adfb fdba ab 3 | aegbdc cdgbaf gb bacegdf cbeg bdgae dgb dagfe dcfbae cbdae | gcfdba cbeg becg bdg 4 | fdcag feabgc gefab ebcgdf cafbg cb dgfeba baec cgb dacegfb | eacb cb gbc bcg 5 | dbgec gdcae gbcfde dgba cfegba fceda cga becdag ga gacfedb | ag ag cag acg 6 | adfceb edcg fabegd bgfadec dg dag cbgfa fedac cfdage adgfc | gedc agd adg abcgf 7 | egbacdf dbgcf fd efcgdb gafbc dgfe dcf dbegc ebdfac bcdeag | bdgec facgb agfdbec agbcf 8 | ecbda dbcef agecfd fcgdeab gecbda fec cfgbd fe abef daecfb | fe ecf cef abef 9 | debcfg dgb dabgcf dfcgae gb acdgf dbfaecg dbgaf abcg aefdb | dbgcfe fbegdac cdefbga bg 10 | fdcea cfdgba dfc df adbcge bedf cabfde fedgabc adbce geafc | dbfe fd aefcg cfd 11 | cedgba gcdab cfdega ebadc fgecabd ebdg ced de afcbgd abfec | efacb dgfebac dcgba gdabc 12 | gdaecf afbdg cdage fge ef adegcb dbecfga egfda cfgabe efcd | gfdcea fe agfcbed fedc 13 | bef edbfc aefbgc fb adgcebf baedgc cfdabe cdbea abdf fgdce | gcdef badfce dcgfe fb 14 | ebcfga gdafc fg gcead ceadgbf fdcab gcf acedbg egfd dcefag | bfcad gfde edcbgaf gf 15 | degacf defca baced bd ebacg fabd bedfac cgefdb cbd gfbcaed | cafde dcabgef dbc afdb 16 | fbaecg ebgcfd ebgcd badgec gcfaebd adgc abc dbfae ebdca ca | cegabfd bca cedfgb abc 17 | cb cfdgeab bdaef bdfgea bcdf aedcb dcfeab cegda bec afegcb | cbfgaed edafb cbfd abcfdeg 18 | gecdba cagfed bagec fcbgae agedb dg gfecdab gbcd fbaed gad | dbcg bgead abefdcg bdcg 19 | cbgafd eabgdc ecdfg fcbeg cfd eafdcg fd adfe aedgc efadgcb | efad dfc gfceb gcaed 20 | ecbfgad cefga eacgdf fbga cgfbea afdcbe bf efb bgfec gedbc | bagf fgab febacg fb 21 | gfcab afdc da bafdge decgb bcgfae bad gabdc fgbcad efgbdca | dbgafc da cfda ad 22 | db geacd ebgcfa efabgd fdacegb cgabf abd gdabc fcbd badgcf | bdgca dab fbgdca dcfb 23 | cgde bgdaef fbgdec afgcdbe gcbef cafeb cbgfd eg gfbacd bge | afbegdc egdc facdgbe gadbecf 24 | bdgcaf bdcag bgfaec ebfadgc gdfc cg abfgd cbg abedc edgabf | gc bceadgf acbed adgbf 25 | ecf bfgdce fdac fgace dgefa abcdgfe bgfaed fc fgadec gbcea | bgdefa eagdf aebgc fc 26 | cgbe cfaebdg bdg dbgfe fdbgac adfecb dgfae gb dfebgc fdbec | ebcg gbd fgdae gecb 27 | gfdc cfaebd afbcge fbgeadc adefgc deafg df cefag gdabe dfa | fegca becfga fd fedagc 28 | aedfc gdcaf fegbca fbed agcbde ade eabcf gfabced de dcaefb | ade aed debf ead 29 | fgdebca fbg fcbdeg bfdga acfg fdabc adcefb afcdbg eadbg fg | gfac cdabfeg fbg gabdf 30 | cadfe gaf afcge ag dfcbge cegfb fecgbda gbcefa dgfcab aebg | ag bdfgace bage bdcgfe 31 | fcged cgedab bedfcg ca cag cfaedg fbeag dgbfeac afdc efagc | dgcbeaf adfgbce ebfacdg ca 32 | ceadfgb efadc gfc gf fcadg abecdg cagbd dbgf fgbcad acgebf | afecd gf fgc dgfca 33 | eg cdagb efgabcd bfgdac cfbae egc badegc gbace cgfdae degb | cefab ecagb edgb dbeg 34 | agdecf edfbga geadbcf ebdga dcbaf ce dce ebgc cdbae gacebd | fadcb egcb ced gdacbe 35 | cg aecdgf fbgdc dabgfc badcf dcg dbgfe abgc cfbdgea badcef | bgcfda dgc cagb cfbad 36 | ecdab abefgcd ga gfabde bcfega ebgda dgaf begfdc fgdeb gea | age ag fadg bagfdce 37 | cdbae gc dgfcba daefgb fcbeadg efcg gcd gdaef cadgfe adceg | cgef ecfg daecb dcfbaeg 38 | cgfba gb faecbg bfedag geafcbd ecgaf bga cabdf gecb adgcef | cgeb gb gefca fdeacg 39 | ag cdbge egfbca dgbecf dage gadbc bdcaf gab cdabfeg gbceda | dgbce abg cdfgbae dega 40 | defca ceafbgd aeb eb agcdb badceg gfbeac ceabd gdeb dbfgca | gbfdca bged cdbae cdgeab 41 | afegbdc fbdge dbfacg fbdec gf afgbde egfa gbf dgbea cegdab | cbgadf fdebc fg cedbfag 42 | fb cbegdf egdab adecfgb ecgadf fbd cefb efbdg ecfdg fgcdba | fbce dfb efbc egcdf 43 | af adgf acf aegcf agcebd gfaecd edbacf fgbce bgfaced aedgc | fcbge fecdag af cbgfe 44 | fe aecgb acbedf gfcadb agecbfd degf fbeag efb fdbega fdabg | efb egfd bfe fdeg 45 | gaedb dfgaeb ebdfgca afde gfebcd ea dbgef cgabd gae aebgcf | ea egdfb eadf deaf 46 | eafbdg acefdg gcebd dgf cdefa dgcfe agfc cbfaed adfcebg gf | cdfae fg gf dgf 47 | dagbfce bfe gcdfbe fcgbad cagefb cbaef agbcf be ebag cefad | abge bef gfbacd eb 48 | edagbf edcabg ec befdg dgafc cefgabd ebfc dfgce dec degcbf | cfdbgea fcbdeag agdebc eabdgc 49 | acdegbf gcabfe cgfab fdba dcgfb cgbafd bd dcbgea cfdge cdb | fbgdca bdaf cedbag dcb 50 | abcgfde bca ecadg dgabf fedgac ecdb gcabfe bc cgabd caegbd | cebd bdgca cb bfdag 51 | bfadge adbgfec bcd edgcbf ceafdb facb egcda dceab fedab bc | abcf cb bfadegc bc 52 | abcfeg fdcagbe bgaec dcgaef aebd bgedc ecd de gdbcf gcbdae | agbecd bead cedbg ecdbg 53 | ce cbead acegbf cfdeba cfdbag dfec fbdca dgeba edbcfga eca | eac adbfgce cfde cafbd 54 | bcgef faebg fabdegc ba eab cadfeg bdaf bcaedg aegdbf afedg | dbfa aeb ba bea 55 | acdgbf cdegb edf fegbd egfacd ef fbea dafgb edgfba dafgcbe | bdfaceg bfae def bdgfea 56 | bcaefd aefb bfedc cdgba bdfceg bedac egcdfa ead afedcbg ae | eabf ae ae ade 57 | abeg bfe eb fcagbd dbfecg efagbc cbgfa gcbfdae acefd cbafe | bafecdg ecdaf bfacgde bdafgec 58 | dgc edcgaf ebcgd dgceabf cbfg gc cbfde baedg egdbfc acfedb | eacfgdb gc degab dgebc 59 | deafcg dagbfe db feadg degb adb efdbagc gbafd dbeacf afgbc | gcbfa afedgcb gedb edfag 60 | dcgeabf bdgae fdcgae efbga ead ed defb fbcega cgadb faedbg | fbde ade ade cgadb 61 | ceagbd gfeb acfde dgbfca dabcfeg fg fagbec efacg gcf ebgac | gdcebfa gcf edagcfb cadef 62 | dfcbge cfeadbg gfcbad ag acgefb fgea agbce dbace bga ecfgb | aefg aefdcbg ag abg 63 | dge gd fcgd afcebg gbadec bedfa debgcaf fdebcg edbfg fecgb | gbceadf gd bdfeg edg 64 | cfabe fcdegab bcgafe ag gdefc gbaf ecfdba gfcae gac gecdba | agfce ebgcafd egbacf gabf 65 | fabceg ed gced dcagebf cfeag fdbaec cdfega gfdba ade feagd | gdcfea ead aegfd aed 66 | cdeab fadbce afcebgd gaecbd ega eg gbeacf baged gdec fbgad | ebacdf eg gae dcge 67 | cgab cefagd bce feadcb bc gfedb gcedab cedbg agdce caefbdg | dgfaec cbga agbc begdfca 68 | aebfdg cdgabfe degbc bagced gad da gdfecb cadgb edca gfcba | ad edbfcag dag fdeagb 69 | eacdg gdbcae agfcb bgd cbadg bd fedbgc bgdcefa aedb gefdca | db deba caedbgf bgeafdc 70 | beadg cfde fad fd agcdfeb bafgdc efagdc bgacfe dgfea efgca | df cfde ecdf gefbac 71 | abdge dbcaefg aeb cbed bcgeaf fbagcd dbcaeg agcdb aedfg eb | becd cedb adgeb eab 72 | cadfeb baefgcd ecbfga acbef gacdfb cefad dfgce fda ad abed | ebad egfacdb gafdecb adeb 73 | cfdebga fegadb gdbac fcea gaebf egcbdf cgabf bfc efgbac fc | fcagbed agbecdf abgef cf 74 | edgfc bcfdag bdg bcged ebad caegdb cbfaeg gceba begdcaf db | geabcd dbgce gdfcbea bd 75 | dgeacb dgcfeb ebgcd gcdeafb aebfcg daebg dgac bag fedab ag | bag fdeab gba agb 76 | bgeaf gfceb ga abcfeg ebfdcag gfa dcbagf dbgecf ebfad aceg | ga ag cage fag 77 | cfgbde agedcb egd ed cdgbf gbafedc cafgdb dfgbe defc fgabe | bgafe ed dcef ed 78 | befagd afcebd cgeda dbgae febgacd cd edc fcgae dgbc gdebac | gdabe dgcb cd gcbd 79 | cbgf dbacfe acdge fabge afbceg fagbde gebac cfgbdea cb bac | bac bc abc edcga 80 | eafdbc bcedf fg cbeag edbgfa deacgbf gfcd egf cgefb edfcgb | gcfd gf fge gfe 81 | fagdc dbegfca afedgb fdceg ac aecdbg fdbag afcb cag gafdbc | ca ecgfd agc gac 82 | dbgfa fecagb gfedcab cg bcg deagbf gfdc bdcea bcfgda dbcga | edafgb eabcd eacbd abgdf 83 | fabedc aegfd bdacge edgbf dface gfac adg ag edfgcab decafg | eadbfc eafcd gdfea defbg 84 | ecdaf acb efcagdb fadbg ebcdag acfedg fceb eafbdc cb abdcf | cbef bc bac cb 85 | facdbg debac gefc dfe gbedaf ef fgadc cdfae bgcfead aegfdc | ebcad ef eagfcdb efbgda 86 | cbedg cf bgdcfea dcbgae gcefb cef fcbd dfgeac gbeaf dcefbg | cbfd abgfe ecdfga fcdb 87 | cbgfe cegdfa fd gacefb dfcebg dfcbe dcf cfegbad bdgf cadbe | fd df cdf bdcae 88 | acfde dec cd acdbef dbcf efbad aegdfb faegdcb cgebad efgca | dc daebfcg ced dec 89 | edagcb efc cfbd bacedf gaebf egadcf bacfe cf edagcbf cdabe | fbceda cbdf efadcb afbdec 90 | gdefbac bdgefa dbafg ca gafbc cgdabf cfebg ecdbga cdfa bac | bacfg cba cba bgcef 91 | cgbf fgeacd cg abdfg bgfdae fgdacbe dcg dcaeb bdcga bdafgc | gcbf cbfg fabedgc cfbg 92 | bdcaf gbf gdebcf bafgc efcabg agfec agcdfe bg ebga befcagd | bfgca afbdgec beag ecdgabf 93 | edc fgeabd dgfcb ce fcea cdafeb fbade cfdgbae cbfed aebgdc | ec fegdab ecfa fgdbc 94 | dc dbcf gadcf cgeadb dbgacf edfag bfcag adc febcgad bfgeca | cafbdeg cdbf cfbd adc 95 | gefabc egfbd gcafe fdac gbdafec dce dgabec degafc gecdf cd | dc dfceagb eacgf dfca 96 | dgbfec bdga bfeca fgbdeca dabfcg da gaecdf dbfgc daf cfadb | ad bcagefd efcadgb da 97 | eacg facbed ag cdefa gaf agdfcbe dfcbg afgcd dgeafc dgfeba | dcabgef fga fdbgc caeg 98 | eabc fbe cbfegda eb fbdgce eagdf cgbfa geafb agefbc bgfacd | fcgab dafcbeg aceb cgbfa 99 | dbcae dcb fcgdeab adbge efcabg fced fdgcba cbefad faceb cd | fbdgac abdfcge agbcdf ecdfab 100 | adcb ca gcbea eac gfceb eacdgf aefdgb gebda bdgace eacfdgb | ca fcebgda bceag adcgef 101 | afdb aedcbg ebdcf fbgedc gecfa bcedfga bac dbacfe abecf ba | ba cdfeab ab efcga 102 | aebfgc bgcfed bafcg feg deacg ef ecgbafd afbe gfaec gcfbad | fe eabdfcg baef fe 103 | fgbce gdcfe fegacd bc fcegbd debagfc dgbc fdcbea gfbea bcf | ecdgaf cebagfd efagb bcf 104 | fcgba bdc ecfbdga gbed bcgda db eafcgd baefcd agecd ecbdga | db afdgce fbdgeac geadcb 105 | eafdg gf afdbe bfgcda egbf efbgad cdgea bdeafcg bcdefa gaf | bcfdaeg fbge gbfe agf 106 | bafcd egfbca bfe gcfed gfecdb be bcdfaeg gebd fcdeb cfgdea | bedg dcfbe cgfde fbe 107 | acdebg gc cag bfage gafecdb acfdb egcf bgcfea cbgfa gefdab | gc gfeab egbfca baedcfg 108 | bfdca afdegbc ecbga fg bagfc bfgcda gecfda bdefca gfc dbgf | cabgdf adcfbe gfc bgfd 109 | dfbga cg cgd cdefagb aebgdf cdfea gdebca facdgb fcgb gfacd | gc cg agfbd gedabc 110 | fda efdabg fa gedacf gebdf dafbg cgdfeb afbe dcebfag abcgd | dafgce fbagde adgfce af 111 | fae deacb badfe cfgadb befg fgeadc afdgb gdfbaec dafebg ef | fbdeag baedfg fgbdca gbfe 112 | edgfba gabcedf efa dcabeg dacfeb aegbf gfceb af geabd agfd | af egfab bcfade febgc 113 | ab abe ecafgd eadgbc dgfbe dcaeg gcba deagb cdbfae fcadbeg | edgca ebdgac aeb cebgafd 114 | feg cfgb efdagb decbf gf geacd fgbdec cdafeb degfc abcfedg | agdcefb ecdfg feg gf 115 | bda gadfcb agebdc db ecbd fdcgae agbde ebafg gadec bfcaedg | bdce bfgedac bd edfgca 116 | gab afgdecb daecbf acbde abegd cebafg ga adgc edagbc debgf | gba gbcfae gacd egbad 117 | edgfb dfb cegbf bfgdca db efgdcb afdeg bced cdeafbg efgbca | bdcgfa gcbadf cbfdaeg gacfbe 118 | becdafg cf dagfb acfgde abdcf egbdaf fdc ecabd cgafdb fbcg | fc fc fcd bfgeacd 119 | fdaecb gd dgbe bgedaf dfg gadfce bgdaf gcabf dbfea gefdbac | gbed gd egbcadf afcdbe 120 | bfga bfgcad fbdgce cadbe cafbd caf fdbcage af defcag dbfgc | bceda fdgbeca ecbfgad gbfa 121 | fbcdag badce ebdgcf cbf geafdbc adcbf bf gafb acfedg acfgd | fb bf acdgfb cbefdg 122 | fgabc gac ceab adgfb egcfba gcbedf fcbge fgdeac cadbefg ac | dcfgae gdaefc agc fbgad 123 | ebdgac fc abcgefd cfe eadbcf cfba dfcbe afgdec fgebd debac | dfbcae cfe dbcae bdgfcea 124 | edfgcab cbdeag fbagce fc dfegc fadc cgfdae gfc edgfb gcead | cf gcfbae dgabce facd 125 | dcegb egbfd ec cgdabef dfgeac gabdc fgaedb egc gbcfed befc | fcgead fcbe cfbdge cbedg 126 | cfa fc dceba gbcf fabgd beagfd cbfadg bafdc ecdafbg efacgd | caf cf ecbad dbfca 127 | fdg beadf ceadgb cfbagde febdg acbgfd fceg dcfgeb gf degcb | defba fgce beadf fgd 128 | ed dbacg cedbga edgfbc acgdfb deg cegda eadb acgdfbe caefg | defagcb efbdgac de de 129 | fgc fbgcd agefdcb bcgefa fedbg efcd agefbd abdgc fc cedbgf | bgdceaf gbadc gfc cf 130 | ab eadfc cdeabf acebdfg fdgbea dbac fbegc eab fgacde bceaf | ab ab cfdae efacbgd 131 | dgb cgafb db agfced bgcfd fdecg adcfebg bdfgae bdce dbfegc | gbd bdg bfgca bfgcd 132 | cebfg eabgfd aedcgf bea ba acfdebg dabc cegad ceabg aecdbg | edbcfag agecd bcda fdaceg 133 | efcga cde cgead gacdbe cfdeba de acgdb bdgafec bgfadc degb | de bgde acedbg bgde 134 | fbegc efg fbgdeac fbag fg cefgda bdcfe aegcbf egcba agcdbe | fgba abgfdce gbdcafe dfbgeac 135 | egf fg cgabed gbfce dgbfce agefdc ecgdb cbfae gbcafed gbdf | gfe cgdbe fg dbcgfea 136 | cbdeag agedbf da bfced dgfabce eadfb aed faegcb ebagf afgd | gfad dae ad dgaf 137 | edfgab fgdae gc adgfc cged acdebgf acgdfe begcaf dbfca cag | cdge cag gc cg 138 | cdeafbg fa agcf caegb cebgad becdf ebgcfa bdgaef cbeaf fba | gbcea af afbec af 139 | fcegdb fdaec agbf egafc gf fbaecg feg acgeb facegbd bgaedc | acdbefg aegcdb fg abgf 140 | ab dfaec gfcbed adb acdeb cbag gdcbe gfadeb agebdcf ecabdg | abgdcfe adfce fdaebcg cebdafg 141 | agecb egcbfd bfdaeg ecfag cfad cfg ebcfgad egadfc cf dafeg | adfc cgf cf edagfb 142 | defbgc aedc dbgce ea gfbac ceabdgf abe dgbcea gcaeb agbfde | acde bae ea ae 143 | efbadg bc ecfbdg defcb caedf bdgc cbf bedgf cadbgfe fgbaec | cbf bdcg bfc fgceba 144 | gc adbegf egc egbaf bceag cbdagef afgc fgecdb cebad bfacge | acfebgd egbcfda cdbae afgc 145 | gfdbca ecbadf fg fecdgba afebc gaf gedac gcfae bfcaeg ebfg | dfebacg cabgfd ceadfgb afg 146 | ecadfg dbfeca adgfe eagfdcb bdafge ba abeg dfgab bcfgd bda | dafcbeg bgae cefdag dfgea 147 | feca beadfg deafbgc fbgdac cdgeb cgfbae fbeag cabeg ca cag | fcea gbaedf egcdafb ebcgafd 148 | cagfe dga adce edabgf gdaebcf dacfg dfcbg da gcbaef gfadce | acde faecdgb bfcgdae dcea 149 | gdefcab fagdbe adcegb cafge bdcf abcdg cdgaf cdgbaf daf df | dfgac bcdf df df 150 | fgcab fbagdc efbcgd febacg cdg dgabc bfgdcae dc adcf beagd | dc cgfedb dgc febgacd 151 | cgda cd dgbcef cbd eadcbg egdab bedac cabfe dfbega bcgefda | cdaeb cdb bdgefc cgad 152 | deg cfegdb baegfd gfcae dg bcfde gfbdcea aebcdf cgdb dgfce | egd gde gcbd fabdce 153 | ebdgfa fgbad acfgd edfb fdcbgae abegd bfg afgceb bf egacdb | dabgef edfb gcfeab dgbefac 154 | fdea fcebdg bafgdec abcgfd ad bda geabc fbdega gdbea bfegd | dba da ad dfea 155 | gcdab bgcae agcefb gbadfce aefdbc fagdbe gcfe gbe ge faecb | ge gbe bagefc defgab 156 | becfda dg gde fdecb dbgef gfdeac bcdfeg ecabfdg fgabe dcbg | dgebf afgcde defbcg fbeagcd 157 | fcbedg ba dcebaf agebc bgedc eba dacbeg fagec edcabfg adbg | dgab bea egfdbc bedfagc 158 | cead ad fgacd agcfb ecfdg cfebdg dfa degcfa acegdbf dbgfae | da edac fda da 159 | afceg cgfeba cbagf acdbfe cfbdag ef gdcfabe egbf acdeg efc | bcafed ebfg fbeg fe 160 | adbef cfdeag edbcfg afg bgcfd acgb bagfdc ag eafdbgc dabgf | egcbfda ga agf agefbdc 161 | bdgecaf degbfc gceadb dfgabe dfbac cbe fgebd fcge ce dcbfe | ecb fceg fgec agfbed 162 | dgef dacebgf fdbae daefbg bgd eabcgd dagfb adcebf gd gfacb | dfeg egdf dbg egfd 163 | gfe ef fdacg fceb fcgea fbaecg dgaecb ecbagdf cbega dbaefg | gef fcbe ef bcef 164 | fgab ebdfg gdcfe bfdaec dfb bf fgdeacb gdfeba gedab baegcd | fgba gdeba abgde gabde 165 | bfca badef bf gcdfeb bdafec cgeafd agdbe bfd fadce ecdagfb | cgdeafb bdage eagbd fbd 166 | bcgfade eg dcbea gdbae daebcf adgecb bge fcegbd geac adbgf | agec abcde gbe ge 167 | eafgbdc bfaeg ebdf ade cedagb de gadfe efbcga cfdga adfgeb | eda dgacfbe facbge ebafgc 168 | fgdae decb eb adgbe bedagc fdcgab dbcfgae ebg cbegfa cbadg | fbagdc dceb bdgcfea dceb 169 | cgabf abc gfdbec cfbeg ab agcfd cfdaeb fabceg bage dcefbag | feagcdb baegcf bac bgcdfea 170 | dabcf dcbga dcfea bdfcaeg fegacb fcb edgbac afgdcb bf bfgd | abcdeg begcaf fbacd efagbc 171 | dfgeab adf ad dgfab gbcafe ecgdbfa gade fegab fbcdg ceadfb | cedfba daf acbfde cagfbe 172 | cdgae aecdgb dae ecbdfg cgedb fdgabec adcgf ae cbea bgdefa | adcgf bgedacf ceabgfd cegdfb 173 | fdaeb dbafc fdcag gcbd fbc bc gcaebf dgfbca ceadgf cadebgf | bgacfe gedbfac afbdc degafcb 174 | eagdcfb dcgbae gcebf cgefba ab cfgbde bea baefc abgf fcaed | gcedfba ab ab fecbdg 175 | dcfgab dgecfb fdae bgafd ebcag gedfba edb bedga de cbfedga | fbadge eafd fdgcbae ed 176 | ge debfgc cdbeaf bgaedc dafcgeb egad gec daceb cgeab bagfc | aegdfcb gec cdefbag acedfgb 177 | ad acd bfcgde dfeca fbad cafge fcebd abcdef efcdabg ecgdba | fcbdge bdfa bedcf da 178 | bcdegfa abegc cefag cadgbe fagcd eabgfd bcgaef befc ef aef | eabgc fe fe efgadcb 179 | ec bacfed fagcdb fedgb edagbcf gcaedf ecfdg ecd gdcfa ceag | ec gfbde dce dec 180 | acbedfg bd dcfeag fdbgc cgabf fedgc dcb edabgc befd cdbfge | ebfd dcb dcgfeb abfcg 181 | ecdbagf gefadc bgcda edc bdeacg ce dgbce caeb egdbf bdgfac | gaefcd efbgd gfabcde gbedc 182 | gadec cabed gabe bce gbefcad fcaedg bagecd bdfegc eb cbfda | egba egab be edcba 183 | afgb bfc gdbec bgcdfa bcgafde bcdfg fdcaeg befadc fb afgcd | fb cgfdb cfb ceabdf 184 | eg cbfgae gafcbd bdcfg fcade abecdgf gcfde befdgc ecg bgde | gebd aegcfbd gebfdc bdaegcf 185 | daefb gedfac ag cgba faebg ecbgfd eag cgfbe defgcba aebcgf | ega ga bgcfea ag 186 | gfcdbe fbg abcgef edabcg fbgceda eafb fb cafgb gecba fcgda | ebfcga faebgdc cdgefab bgfaecd 187 | edfbc bagedcf bg cgdbf gbed fbcgae cfgdeb bcg adcfg ebcfda | gaedcfb dafebgc gb bdfaceg 188 | fgc cgbdaef defgbc bdfce ecfabd afgdcb efcgd begc gc afged | fadgceb aedgfcb gdcfe gabcdf 189 | edg bgcdf acbedg egbfdc dagfebc gebf gbacdf defgc efdca eg | facde befg cfbgd ge 190 | efcgd gadbfe ae ebca efacbg gabcf dfaegbc bgfcda eaf fagec | cbae fae abec afe 191 | edbfg cgfdbae feacg ebdfag ad gfdea dae defcbg gdaebc adbf | bfda bcdafeg eda da 192 | dfeba bfe fcedgb dabgcef fbcdae fbgda ef ecdba dbgeac caef | ebfacdg fcdgbae bfe bef 193 | bfca gafcde cbdeg bf fdecb feb ebfagd bcefda ecadf afbcedg | egcfadb dgfbace fgaecd afbc 194 | ceafdb defca fadgeb cafdg gaedfcb cadgb gefc efagdc fdg fg | fg cefg gefcad gcef 195 | dagfe dcgeab abg dabfeg fdacge gb cafeb gebaf dfabgec fbgd | bdfg bag cfeab bg 196 | egdba gd cgbdaf gad fdeg afcedb gedafcb fedagb febad eacbg | gad gedab dg abfcdg 197 | agefd dcf baedcgf cbeafg dc fbdaec aedfc dcba fcabe dfecbg | fdc cedfba facde dcf 198 | fdacb facegd dgba db gfcda gcbfed bdc ecfab bafgdce fcdbga | cadfge db bgecdaf db 199 | defcg fbeag edgaf agd fbgace bafd da cfgedab agdfbe agcedb | fgeda da eafbgd abfd 200 | fcde ebafcgd gcdae ecg dbcfag adgcf ec aegbd gacefd fgceab | gcaed gec cfegba fdaegc 201 | -------------------------------------------------------------------------------- /src/day3.input: -------------------------------------------------------------------------------- 1 | 010100010111 2 | 100100100110 3 | 100110111001 4 | 011001011011 5 | 010000110111 6 | 000011101001 7 | 011000011101 8 | 101111011111 9 | 011001011010 10 | 111100001001 11 | 111111000110 12 | 100010100110 13 | 011100100100 14 | 011111010000 15 | 111010001100 16 | 010111001110 17 | 100010100100 18 | 101000010000 19 | 011101110100 20 | 100010011000 21 | 001111110011 22 | 111001100001 23 | 010000011001 24 | 000011101010 25 | 100010101100 26 | 111011100010 27 | 110000100001 28 | 101010110001 29 | 111101110101 30 | 001010010100 31 | 001001111001 32 | 100001110010 33 | 100100000111 34 | 000101010101 35 | 001101111011 36 | 111100011000 37 | 100111110101 38 | 010101111000 39 | 100110011001 40 | 010001111010 41 | 010111111001 42 | 111000100010 43 | 011000011011 44 | 100010111111 45 | 010110110010 46 | 010100000001 47 | 100011000100 48 | 100000010001 49 | 101010001000 50 | 100111011001 51 | 101011001010 52 | 010110110111 53 | 111011000100 54 | 110010111110 55 | 010101000111 56 | 000101111101 57 | 101101101101 58 | 010100010001 59 | 000111101111 60 | 101101001101 61 | 000011110010 62 | 000101101011 63 | 001111100000 64 | 001000100110 65 | 111000000100 66 | 001000010110 67 | 000111010001 68 | 111011001010 69 | 100011100010 70 | 011010101011 71 | 001100010001 72 | 000001011001 73 | 110001101101 74 | 010101100001 75 | 111000011100 76 | 000101000000 77 | 001001010101 78 | 100000100111 79 | 110000001000 80 | 111001110100 81 | 001111000110 82 | 111110000100 83 | 100111111000 84 | 100101111111 85 | 100101011111 86 | 111000000011 87 | 110000011001 88 | 000101000101 89 | 110110010011 90 | 110111010100 91 | 001001101100 92 | 101101100001 93 | 110011001000 94 | 010010100111 95 | 000110101011 96 | 101010000011 97 | 100110001011 98 | 000111111011 99 | 000100111011 100 | 101011111001 101 | 011010110110 102 | 100101011000 103 | 100000010110 104 | 000010101000 105 | 100100111000 106 | 011100011000 107 | 000010011001 108 | 000001010000 109 | 011001110110 110 | 111101101010 111 | 011110001000 112 | 011100110001 113 | 011011010101 114 | 101011100001 115 | 000000111000 116 | 110000110011 117 | 101111001100 118 | 111000101111 119 | 100110110110 120 | 110000111101 121 | 001101110000 122 | 100010001110 123 | 001001010010 124 | 001010000110 125 | 000110011001 126 | 111111000101 127 | 111011011010 128 | 101101111010 129 | 101001000110 130 | 101100100101 131 | 001110100000 132 | 110001000001 133 | 010010011101 134 | 011110100010 135 | 011000000010 136 | 101110100111 137 | 000001001010 138 | 101101110001 139 | 001110101100 140 | 011101011001 141 | 011010000001 142 | 100010011110 143 | 000111100010 144 | 011000100110 145 | 101001010101 146 | 000110011010 147 | 111100101001 148 | 011010000011 149 | 010101011101 150 | 010011011000 151 | 011001000100 152 | 010011101111 153 | 100110100111 154 | 110111010110 155 | 011001101101 156 | 110001100111 157 | 010100111110 158 | 111101011010 159 | 011010000100 160 | 010101101110 161 | 101000101100 162 | 110110110001 163 | 110011110011 164 | 111100001100 165 | 000011110101 166 | 011100000110 167 | 011100000111 168 | 100101001010 169 | 001110010001 170 | 011101110111 171 | 001101100001 172 | 111111010011 173 | 101001111110 174 | 000000100000 175 | 000000100010 176 | 101100101000 177 | 010011011111 178 | 101100100000 179 | 000110100100 180 | 000010001001 181 | 110011000111 182 | 101000101101 183 | 100101010111 184 | 010111001010 185 | 000000011011 186 | 110110100011 187 | 111001100000 188 | 000011101101 189 | 001011100010 190 | 001100110100 191 | 010010100010 192 | 001001010100 193 | 100111010110 194 | 001001111000 195 | 011011110101 196 | 110111101011 197 | 000000001000 198 | 111110011011 199 | 010101011001 200 | 001011111111 201 | 011011111100 202 | 011000001011 203 | 101000100000 204 | 010011011011 205 | 011100111100 206 | 011001011110 207 | 111001101010 208 | 111011111111 209 | 100010101010 210 | 101100001101 211 | 110001000111 212 | 100111011010 213 | 010000111010 214 | 011001101000 215 | 111111001001 216 | 000111100000 217 | 011000010111 218 | 110110000111 219 | 110100111100 220 | 011111000001 221 | 000001110100 222 | 100110101110 223 | 111000111001 224 | 010001000000 225 | 111001001010 226 | 111100111101 227 | 101000110100 228 | 000101000011 229 | 010100101111 230 | 010100011010 231 | 111110000110 232 | 110000010111 233 | 010100001100 234 | 010000011010 235 | 111010000100 236 | 000011010010 237 | 011001101001 238 | 010100111001 239 | 011001010111 240 | 001001100011 241 | 110001100101 242 | 101001001001 243 | 011101010010 244 | 011101011110 245 | 000111111110 246 | 010111010001 247 | 101011011110 248 | 001011101101 249 | 100110010000 250 | 001111100101 251 | 011101001110 252 | 010111100000 253 | 000010111111 254 | 101001010000 255 | 001101001010 256 | 110010111101 257 | 001010110110 258 | 001001001001 259 | 110110110101 260 | 000001011011 261 | 001110010101 262 | 011110000001 263 | 101111011011 264 | 100000011100 265 | 101000010001 266 | 000101101100 267 | 010111110111 268 | 010001101110 269 | 011101001000 270 | 110100001110 271 | 110010110101 272 | 101001101000 273 | 000101010010 274 | 011101001100 275 | 100111101100 276 | 001011111001 277 | 011111101100 278 | 100100110001 279 | 101001101101 280 | 011100001010 281 | 000111101101 282 | 110010110111 283 | 100111010011 284 | 000101110110 285 | 100111000010 286 | 101010000111 287 | 101101110101 288 | 100000100101 289 | 111100010101 290 | 111011100111 291 | 110011011111 292 | 100110100011 293 | 111011000101 294 | 001010101110 295 | 010011000110 296 | 110001001111 297 | 110100110110 298 | 011011011100 299 | 111111100100 300 | 101010110010 301 | 110011101001 302 | 000110100001 303 | 010011110111 304 | 110111001101 305 | 100100100100 306 | 000111000110 307 | 001001010000 308 | 001111111110 309 | 110000011101 310 | 011101011000 311 | 110000111001 312 | 000100000000 313 | 100110111100 314 | 111000010101 315 | 100010011100 316 | 110100111011 317 | 010111110110 318 | 101111101010 319 | 100110111101 320 | 110100110101 321 | 011111001010 322 | 000010010001 323 | 011001010010 324 | 010111101101 325 | 000000110000 326 | 111001101110 327 | 001011000101 328 | 100011011101 329 | 101101010100 330 | 010000010111 331 | 000010101111 332 | 001110101010 333 | 100000001011 334 | 111101011110 335 | 110110001000 336 | 010100010000 337 | 010100110011 338 | 000001001110 339 | 101011000111 340 | 110111101000 341 | 001100110111 342 | 100110101000 343 | 000100111110 344 | 101111110000 345 | 101001001000 346 | 001101001011 347 | 111011111101 348 | 111011110011 349 | 110111111100 350 | 110001010100 351 | 011110001110 352 | 010011100100 353 | 101100010000 354 | 111010000111 355 | 100100011010 356 | 100100011011 357 | 100001101111 358 | 000111100111 359 | 001101011010 360 | 101110000010 361 | 000000000101 362 | 110111000110 363 | 000010100111 364 | 001100101110 365 | 000010011101 366 | 101100100001 367 | 011011000101 368 | 100110101100 369 | 011000110000 370 | 111000100101 371 | 011110110101 372 | 111011011111 373 | 000110010110 374 | 001010011110 375 | 001110111111 376 | 110110011100 377 | 111110001001 378 | 000001111000 379 | 101100101110 380 | 011110001001 381 | 000101010011 382 | 011100100000 383 | 100011111010 384 | 111011101011 385 | 000111100110 386 | 101011111010 387 | 010100111101 388 | 110100110000 389 | 000000000011 390 | 011000010101 391 | 101110110101 392 | 011100010101 393 | 000111001101 394 | 100011010000 395 | 010111001100 396 | 110000110010 397 | 010001001100 398 | 000001011100 399 | 110111000000 400 | 011110011001 401 | 101000010110 402 | 000100100111 403 | 101110000011 404 | 001111011001 405 | 101010011101 406 | 111100110110 407 | 111101100000 408 | 000000101111 409 | 011111011110 410 | 000000000111 411 | 001000101110 412 | 011101101111 413 | 011010100011 414 | 010101000010 415 | 001000101100 416 | 010000110100 417 | 100010101111 418 | 000011010111 419 | 011011110000 420 | 010101100110 421 | 011110001011 422 | 101011000001 423 | 011100101101 424 | 111001100011 425 | 100001100101 426 | 101011010110 427 | 010101000101 428 | 001001011111 429 | 111010001101 430 | 010011001111 431 | 001010100110 432 | 011101000001 433 | 000000111101 434 | 111010000101 435 | 011000100011 436 | 100100011110 437 | 010001111011 438 | 111100111001 439 | 011101111111 440 | 001111110000 441 | 100100010001 442 | 100111100001 443 | 001111000011 444 | 100010111011 445 | 110110000110 446 | 110000001010 447 | 000000100101 448 | 000110111010 449 | 100001010100 450 | 011011000010 451 | 111001001110 452 | 100010000000 453 | 100101000011 454 | 111101010000 455 | 001001110110 456 | 111010010011 457 | 110101101000 458 | 101100111001 459 | 101010100111 460 | 000001101001 461 | 000110010001 462 | 010001100100 463 | 101011100100 464 | 111000110000 465 | 001100111101 466 | 011000111101 467 | 110010110110 468 | 101101010111 469 | 110110100100 470 | 101001001011 471 | 000101100111 472 | 000110010011 473 | 011000110011 474 | 100011110110 475 | 110000101111 476 | 100110111000 477 | 100000000010 478 | 001001011100 479 | 100100000110 480 | 100001001001 481 | 010000011011 482 | 110111110100 483 | 000110100110 484 | 011010000010 485 | 110001100110 486 | 011000101010 487 | 111011011110 488 | 100011010110 489 | 100001001000 490 | 101010101000 491 | 011100100110 492 | 010000010010 493 | 100010010011 494 | 100000101011 495 | 010110000101 496 | 000000101010 497 | 000000010111 498 | 110110110010 499 | 101111010101 500 | 000010001000 501 | 100000110101 502 | 000100111010 503 | 111100000100 504 | 101000101110 505 | 100100001111 506 | 000111011101 507 | 110100101101 508 | 011010010100 509 | 001010110011 510 | 111110011101 511 | 101110111010 512 | 001110110110 513 | 111100011010 514 | 100110000010 515 | 111000001110 516 | 110010010010 517 | 101010100110 518 | 011101010011 519 | 101100100111 520 | 100011101110 521 | 111110101010 522 | 110011111101 523 | 101110001001 524 | 001101100101 525 | 011010100100 526 | 110010001101 527 | 010011001010 528 | 100100010010 529 | 100110011111 530 | 110010111001 531 | 001111111100 532 | 110011111110 533 | 111001101000 534 | 010101100000 535 | 101101000010 536 | 100011011110 537 | 010000111110 538 | 110000111010 539 | 011111110110 540 | 101010111001 541 | 000110111001 542 | 100111010000 543 | 111001010001 544 | 111101001000 545 | 111000001101 546 | 001100001001 547 | 001101111111 548 | 011010101001 549 | 001100111000 550 | 000100101101 551 | 010101110000 552 | 000100100010 553 | 010111010101 554 | 110011001111 555 | 101001010110 556 | 100000001010 557 | 110010001110 558 | 100011100101 559 | 110101011111 560 | 101110110011 561 | 010010110110 562 | 100100001011 563 | 111111110110 564 | 011100101011 565 | 101111110011 566 | 110001110001 567 | 011011101000 568 | 110110000101 569 | 101001110000 570 | 110111111111 571 | 001100000110 572 | 001100111111 573 | 010101010111 574 | 100001001110 575 | 110011001010 576 | 011010100000 577 | 001010101011 578 | 000010000101 579 | 100101010010 580 | 111011110101 581 | 111110010001 582 | 011000011110 583 | 001111111101 584 | 011010111100 585 | 001011100110 586 | 100110101010 587 | 101100001000 588 | 101011000000 589 | 111000010011 590 | 001101000111 591 | 010001010111 592 | 000100000001 593 | 000110001101 594 | 001111100010 595 | 111000100011 596 | 111111001010 597 | 010011110100 598 | 111111000010 599 | 001100001100 600 | 100010110110 601 | 010111101110 602 | 100010000111 603 | 100101001000 604 | 000011011100 605 | 110010001111 606 | 111000111110 607 | 010110001101 608 | 100110001100 609 | 101001000011 610 | 010110010000 611 | 010010100101 612 | 010110110001 613 | 001111001001 614 | 101011100111 615 | 101010010100 616 | 000001101100 617 | 100010000110 618 | 010111101010 619 | 110010100100 620 | 110011010000 621 | 100110100110 622 | 011010110101 623 | 000011100111 624 | 001001100111 625 | 101011100000 626 | 010010011000 627 | 000010000011 628 | 010111111100 629 | 001010111101 630 | 001111010010 631 | 101011110000 632 | 110111011100 633 | 011100001110 634 | 010000000001 635 | 101110001100 636 | 001011111110 637 | 110100100001 638 | 011010111101 639 | 100110010101 640 | 111111100010 641 | 100111101010 642 | 110010010001 643 | 100010111001 644 | 001010000000 645 | 010011110001 646 | 001100010110 647 | 001111100100 648 | 001011010111 649 | 001010110101 650 | 010111100101 651 | 010100001110 652 | 000110010100 653 | 000001111101 654 | 110101100101 655 | 010101100011 656 | 011110111000 657 | 100001101001 658 | 001001001011 659 | 111010101101 660 | 001111011110 661 | 110111110001 662 | 001110100100 663 | 100011100001 664 | 100001111111 665 | 100000111001 666 | 000110110100 667 | 111001110011 668 | 010111000110 669 | 101100101111 670 | 000110001011 671 | 110111101101 672 | 110101001101 673 | 101111101011 674 | 111010110101 675 | 101101111110 676 | 011001001100 677 | 010100110101 678 | 110100101100 679 | 110011101111 680 | 010000111101 681 | 111101011111 682 | 111010111100 683 | 011000101001 684 | 010000111000 685 | 001010001001 686 | 100111110111 687 | 010111011010 688 | 001011010100 689 | 011001001101 690 | 010011100000 691 | 000111010010 692 | 000001101110 693 | 001101011110 694 | 100000010000 695 | 010100000010 696 | 010010000110 697 | 111000101100 698 | 101111101100 699 | 000101111010 700 | 111011011101 701 | 011101000011 702 | 000111000100 703 | 010101111001 704 | 100110010001 705 | 000001011101 706 | 010010101101 707 | 100101100111 708 | 100101110010 709 | 101001000001 710 | 110000110001 711 | 101110111111 712 | 100100000010 713 | 011010001110 714 | 011011000110 715 | 000110001001 716 | 010110100101 717 | 111001110101 718 | 000010011000 719 | 010110011011 720 | 100110010111 721 | 111111010010 722 | 101011001101 723 | 010011100101 724 | 010010110011 725 | 101100011100 726 | 010111010110 727 | 110001101100 728 | 000101101000 729 | 010011101000 730 | 101011100011 731 | 000001001100 732 | 101111110010 733 | 111001111100 734 | 000111111010 735 | 110100101010 736 | 101010110011 737 | 000011111010 738 | 011100111001 739 | 101010001110 740 | 010101010001 741 | 011110101011 742 | 001111001011 743 | 010100101001 744 | 110001100000 745 | 110101000010 746 | 011100110011 747 | 111111011111 748 | 100010000011 749 | 101001100111 750 | 000000101000 751 | 101110110100 752 | 110100111010 753 | 111101110010 754 | 010111111011 755 | 111110100100 756 | 010001100001 757 | 000011010011 758 | 000011100011 759 | 110010010011 760 | 111010011000 761 | 101111001111 762 | 011000100111 763 | 010101101011 764 | 001000001101 765 | 110110110111 766 | 111100010100 767 | 100001100001 768 | 100010100001 769 | 010001011001 770 | 101010110000 771 | 011110101010 772 | 011110111100 773 | 100110100010 774 | 011111111101 775 | 100111001110 776 | 101011011111 777 | 000011100000 778 | 111110101001 779 | 000010110010 780 | 110000001110 781 | 110011111010 782 | 001001101111 783 | 100010010001 784 | 101001010010 785 | 111111111010 786 | 000000111100 787 | 000001000001 788 | 100000110100 789 | 010000101111 790 | 001111111001 791 | 001110001010 792 | 100111110100 793 | 000110111111 794 | 010100010100 795 | 001000000110 796 | 011011110001 797 | 100011110011 798 | 011101111000 799 | 011011000011 800 | 110101100011 801 | 111101001100 802 | 010001001010 803 | 010010001101 804 | 111110010111 805 | 111010011101 806 | 100111101011 807 | 000110000101 808 | 010111011000 809 | 111110010011 810 | 101001100001 811 | 011010100001 812 | 100111100011 813 | 101010001101 814 | 000011101100 815 | 010001010001 816 | 010000000000 817 | 111001100111 818 | 110010000101 819 | 010011101101 820 | 100101000100 821 | 000011100101 822 | 111101101110 823 | 001110101000 824 | 010110101111 825 | 010011110000 826 | 011101011100 827 | 011001100100 828 | 001101011011 829 | 101110011111 830 | 100001101010 831 | 110111111000 832 | 000001111011 833 | 101111000100 834 | 100100001010 835 | 101001110011 836 | 010111100010 837 | 110111001011 838 | 100001000100 839 | 001001101000 840 | 000001100010 841 | 001011001110 842 | 001100000000 843 | 101110010111 844 | 110011101011 845 | 001110001101 846 | 001000110101 847 | 100111101110 848 | 000001010101 849 | 011001100101 850 | 010001000111 851 | 011010100101 852 | 011110111111 853 | 110001000000 854 | 000001110000 855 | 011101000000 856 | 100011000010 857 | 110101001011 858 | 101100000110 859 | 111001001111 860 | 110100010110 861 | 001001001000 862 | 110100011110 863 | 101101001000 864 | 000001100000 865 | 101000000100 866 | 000000100110 867 | 111101111000 868 | 100001101011 869 | 111100011101 870 | 010001001101 871 | 101011010001 872 | 001100010010 873 | 100101010000 874 | 111110010000 875 | 101110101001 876 | 101001101011 877 | 111000011010 878 | 001111101101 879 | 001001011101 880 | 111000010010 881 | 111110111100 882 | 110000101101 883 | 111000000000 884 | 001010001010 885 | 100001101100 886 | 010101110111 887 | 001001011001 888 | 001110000001 889 | 100100101100 890 | 011111011010 891 | 001001000100 892 | 100000111111 893 | 111001100110 894 | 100101110000 895 | 000001001111 896 | 111110010100 897 | 100101000000 898 | 001000000111 899 | 010100000101 900 | 010101000001 901 | 100111000110 902 | 110101000100 903 | 110110001111 904 | 001001000011 905 | 111110001101 906 | 011000001110 907 | 100001111011 908 | 101110011001 909 | 011011001110 910 | 000100100110 911 | 100101100010 912 | 111110101011 913 | 010000101010 914 | 000011011110 915 | 101110010001 916 | 101000011101 917 | 101001001010 918 | 110101011101 919 | 001111110111 920 | 110001110000 921 | 001011101011 922 | 111110000011 923 | 100111011011 924 | 101011001000 925 | 010001000110 926 | 100100111010 927 | 010111001111 928 | 111101000111 929 | 011001111110 930 | 000110010000 931 | 111100111111 932 | 000111011111 933 | 110000101000 934 | 011001101100 935 | 111000011011 936 | 011110010110 937 | 010101100111 938 | 011111000101 939 | 100111100000 940 | 000001001001 941 | 010111010100 942 | 101010100000 943 | 010111001011 944 | 110001010111 945 | 000110100111 946 | 010110010001 947 | 010111000001 948 | 011010001010 949 | 110111010000 950 | 000000100001 951 | 000110110110 952 | 110011111111 953 | 011011101100 954 | 010011011100 955 | 111000011101 956 | 000001111111 957 | 010100000011 958 | 110001111100 959 | 100000011001 960 | 010100100101 961 | 011010010011 962 | 000011110110 963 | 110100011001 964 | 110111100101 965 | 000001000100 966 | 001110111100 967 | 010011010110 968 | 100100010111 969 | 110111011110 970 | 000011111100 971 | 110011010011 972 | 100110001110 973 | 000101001011 974 | 110110101001 975 | 111010011111 976 | 110001010000 977 | 100111111100 978 | 010000110001 979 | 011110000111 980 | 110011110001 981 | 010110110011 982 | 100010001011 983 | 110010101011 984 | 110111100010 985 | 110010001001 986 | 100000001100 987 | 010110010011 988 | 000111111111 989 | 011010010111 990 | 110101100100 991 | 110100000101 992 | 100111010001 993 | 110110111101 994 | 100100001101 995 | 100111101000 996 | 000111000011 997 | 100001010001 998 | 101011001100 999 | 100100111001 1000 | 100010001111 1001 | -------------------------------------------------------------------------------- /src/day1.input: -------------------------------------------------------------------------------- 1 | 123 2 | 126 3 | 130 4 | 137 5 | 140 6 | 150 7 | 155 8 | 157 9 | 173 10 | 186 11 | 201 12 | 205 13 | 234 14 | 236 15 | 237 16 | 252 17 | 254 18 | 258 19 | 265 20 | 266 21 | 270 22 | 278 23 | 285 24 | 289 25 | 310 26 | 332 27 | 323 28 | 349 29 | 371 30 | 372 31 | 373 32 | 380 33 | 381 34 | 382 35 | 383 36 | 401 37 | 406 38 | 408 39 | 411 40 | 412 41 | 415 42 | 410 43 | 413 44 | 423 45 | 435 46 | 440 47 | 445 48 | 448 49 | 453 50 | 454 51 | 455 52 | 470 53 | 472 54 | 473 55 | 476 56 | 480 57 | 483 58 | 485 59 | 486 60 | 489 61 | 491 62 | 490 63 | 495 64 | 497 65 | 520 66 | 537 67 | 547 68 | 555 69 | 575 70 | 577 71 | 588 72 | 594 73 | 595 74 | 597 75 | 598 76 | 599 77 | 635 78 | 636 79 | 637 80 | 638 81 | 642 82 | 649 83 | 652 84 | 654 85 | 655 86 | 658 87 | 699 88 | 700 89 | 702 90 | 716 91 | 718 92 | 724 93 | 728 94 | 729 95 | 730 96 | 731 97 | 734 98 | 744 99 | 753 100 | 754 101 | 755 102 | 774 103 | 775 104 | 789 105 | 794 106 | 795 107 | 793 108 | 790 109 | 809 110 | 827 111 | 828 112 | 831 113 | 832 114 | 839 115 | 840 116 | 841 117 | 855 118 | 856 119 | 860 120 | 861 121 | 867 122 | 875 123 | 894 124 | 901 125 | 902 126 | 923 127 | 931 128 | 935 129 | 937 130 | 944 131 | 947 132 | 952 133 | 961 134 | 963 135 | 965 136 | 985 137 | 987 138 | 1000 139 | 1008 140 | 1017 141 | 1041 142 | 1047 143 | 1049 144 | 1030 145 | 1048 146 | 1050 147 | 1048 148 | 1059 149 | 1073 150 | 1092 151 | 1091 152 | 1092 153 | 1103 154 | 1111 155 | 1125 156 | 1134 157 | 1136 158 | 1162 159 | 1163 160 | 1188 161 | 1190 162 | 1209 163 | 1214 164 | 1227 165 | 1228 166 | 1235 167 | 1237 168 | 1238 169 | 1240 170 | 1242 171 | 1246 172 | 1248 173 | 1250 174 | 1252 175 | 1258 176 | 1259 177 | 1262 178 | 1263 179 | 1266 180 | 1267 181 | 1272 182 | 1274 183 | 1276 184 | 1277 185 | 1288 186 | 1293 187 | 1299 188 | 1300 189 | 1281 190 | 1287 191 | 1288 192 | 1293 193 | 1298 194 | 1299 195 | 1300 196 | 1325 197 | 1323 198 | 1319 199 | 1330 200 | 1312 201 | 1318 202 | 1337 203 | 1354 204 | 1355 205 | 1360 206 | 1374 207 | 1376 208 | 1377 209 | 1388 210 | 1389 211 | 1395 212 | 1401 213 | 1404 214 | 1406 215 | 1408 216 | 1417 217 | 1416 218 | 1417 219 | 1420 220 | 1428 221 | 1433 222 | 1435 223 | 1453 224 | 1459 225 | 1474 226 | 1480 227 | 1481 228 | 1513 229 | 1509 230 | 1515 231 | 1518 232 | 1522 233 | 1519 234 | 1530 235 | 1531 236 | 1527 237 | 1547 238 | 1549 239 | 1552 240 | 1553 241 | 1554 242 | 1558 243 | 1567 244 | 1570 245 | 1580 246 | 1582 247 | 1585 248 | 1586 249 | 1587 250 | 1609 251 | 1611 252 | 1612 253 | 1614 254 | 1616 255 | 1641 256 | 1640 257 | 1643 258 | 1646 259 | 1617 260 | 1620 261 | 1621 262 | 1626 263 | 1632 264 | 1637 265 | 1638 266 | 1659 267 | 1660 268 | 1661 269 | 1670 270 | 1673 271 | 1674 272 | 1675 273 | 1678 274 | 1679 275 | 1700 276 | 1689 277 | 1697 278 | 1700 279 | 1702 280 | 1706 281 | 1707 282 | 1705 283 | 1711 284 | 1736 285 | 1740 286 | 1743 287 | 1744 288 | 1758 289 | 1764 290 | 1766 291 | 1765 292 | 1770 293 | 1773 294 | 1772 295 | 1775 296 | 1776 297 | 1777 298 | 1780 299 | 1787 300 | 1788 301 | 1790 302 | 1793 303 | 1794 304 | 1800 305 | 1806 306 | 1808 307 | 1837 308 | 1841 309 | 1846 310 | 1847 311 | 1848 312 | 1849 313 | 1848 314 | 1851 315 | 1854 316 | 1853 317 | 1859 318 | 1860 319 | 1865 320 | 1866 321 | 1867 322 | 1873 323 | 1882 324 | 1900 325 | 1913 326 | 1914 327 | 1935 328 | 1937 329 | 1942 330 | 1938 331 | 1941 332 | 1942 333 | 1952 334 | 1953 335 | 1956 336 | 1957 337 | 1959 338 | 1980 339 | 1981 340 | 1982 341 | 1988 342 | 2009 343 | 2020 344 | 2043 345 | 2046 346 | 2033 347 | 2036 348 | 2042 349 | 2047 350 | 2048 351 | 2062 352 | 2052 353 | 2053 354 | 2079 355 | 2082 356 | 2091 357 | 2092 358 | 2091 359 | 2082 360 | 2083 361 | 2090 362 | 2101 363 | 2129 364 | 2130 365 | 2134 366 | 2120 367 | 2121 368 | 2115 369 | 2119 370 | 2123 371 | 2124 372 | 2139 373 | 2140 374 | 2141 375 | 2142 376 | 2145 377 | 2146 378 | 2151 379 | 2148 380 | 2150 381 | 2158 382 | 2162 383 | 2163 384 | 2155 385 | 2160 386 | 2175 387 | 2184 388 | 2192 389 | 2210 390 | 2211 391 | 2214 392 | 2215 393 | 2221 394 | 2222 395 | 2223 396 | 2231 397 | 2233 398 | 2256 399 | 2258 400 | 2243 401 | 2250 402 | 2255 403 | 2269 404 | 2280 405 | 2288 406 | 2294 407 | 2299 408 | 2313 409 | 2321 410 | 2324 411 | 2327 412 | 2354 413 | 2353 414 | 2348 415 | 2363 416 | 2384 417 | 2390 418 | 2391 419 | 2393 420 | 2398 421 | 2401 422 | 2416 423 | 2418 424 | 2419 425 | 2422 426 | 2435 427 | 2436 428 | 2441 429 | 2452 430 | 2453 431 | 2442 432 | 2447 433 | 2451 434 | 2452 435 | 2465 436 | 2470 437 | 2457 438 | 2486 439 | 2524 440 | 2536 441 | 2540 442 | 2543 443 | 2537 444 | 2522 445 | 2531 446 | 2532 447 | 2534 448 | 2553 449 | 2564 450 | 2562 451 | 2570 452 | 2573 453 | 2590 454 | 2575 455 | 2583 456 | 2585 457 | 2559 458 | 2563 459 | 2566 460 | 2567 461 | 2573 462 | 2564 463 | 2565 464 | 2574 465 | 2579 466 | 2605 467 | 2610 468 | 2617 469 | 2615 470 | 2616 471 | 2651 472 | 2652 473 | 2653 474 | 2668 475 | 2670 476 | 2673 477 | 2679 478 | 2681 479 | 2684 480 | 2685 481 | 2686 482 | 2692 483 | 2693 484 | 2697 485 | 2698 486 | 2713 487 | 2710 488 | 2718 489 | 2719 490 | 2726 491 | 2686 492 | 2687 493 | 2690 494 | 2692 495 | 2691 496 | 2708 497 | 2713 498 | 2714 499 | 2713 500 | 2710 501 | 2699 502 | 2704 503 | 2703 504 | 2707 505 | 2713 506 | 2718 507 | 2719 508 | 2713 509 | 2716 510 | 2724 511 | 2726 512 | 2736 513 | 2745 514 | 2748 515 | 2752 516 | 2753 517 | 2754 518 | 2763 519 | 2766 520 | 2767 521 | 2769 522 | 2776 523 | 2777 524 | 2810 525 | 2813 526 | 2814 527 | 2817 528 | 2818 529 | 2825 530 | 2842 531 | 2849 532 | 2862 533 | 2868 534 | 2865 535 | 2869 536 | 2890 537 | 2894 538 | 2909 539 | 2915 540 | 2916 541 | 2919 542 | 2918 543 | 2919 544 | 2923 545 | 2931 546 | 2946 547 | 2925 548 | 2931 549 | 2933 550 | 2934 551 | 2965 552 | 2978 553 | 2981 554 | 2994 555 | 2995 556 | 2996 557 | 2997 558 | 3003 559 | 3011 560 | 3008 561 | 3009 562 | 3011 563 | 3012 564 | 3013 565 | 3018 566 | 3020 567 | 3033 568 | 3032 569 | 3036 570 | 3040 571 | 3030 572 | 3032 573 | 3033 574 | 3035 575 | 3038 576 | 3046 577 | 3052 578 | 3068 579 | 3070 580 | 3043 581 | 3050 582 | 3051 583 | 3052 584 | 3059 585 | 3063 586 | 3065 587 | 3088 588 | 3093 589 | 3094 590 | 3093 591 | 3098 592 | 3102 593 | 3107 594 | 3110 595 | 3113 596 | 3114 597 | 3116 598 | 3110 599 | 3111 600 | 3113 601 | 3116 602 | 3119 603 | 3116 604 | 3121 605 | 3122 606 | 3121 607 | 3125 608 | 3138 609 | 3139 610 | 3145 611 | 3150 612 | 3151 613 | 3149 614 | 3162 615 | 3169 616 | 3178 617 | 3179 618 | 3191 619 | 3202 620 | 3227 621 | 3234 622 | 3236 623 | 3246 624 | 3254 625 | 3258 626 | 3259 627 | 3251 628 | 3267 629 | 3281 630 | 3249 631 | 3270 632 | 3271 633 | 3272 634 | 3281 635 | 3295 636 | 3296 637 | 3295 638 | 3296 639 | 3321 640 | 3327 641 | 3334 642 | 3340 643 | 3321 644 | 3330 645 | 3333 646 | 3336 647 | 3359 648 | 3368 649 | 3376 650 | 3403 651 | 3412 652 | 3417 653 | 3410 654 | 3418 655 | 3421 656 | 3422 657 | 3425 658 | 3433 659 | 3440 660 | 3441 661 | 3443 662 | 3464 663 | 3467 664 | 3471 665 | 3472 666 | 3475 667 | 3473 668 | 3488 669 | 3494 670 | 3481 671 | 3482 672 | 3491 673 | 3514 674 | 3521 675 | 3525 676 | 3543 677 | 3565 678 | 3566 679 | 3567 680 | 3591 681 | 3590 682 | 3591 683 | 3572 684 | 3573 685 | 3567 686 | 3599 687 | 3622 688 | 3623 689 | 3643 690 | 3646 691 | 3651 692 | 3656 693 | 3662 694 | 3663 695 | 3673 696 | 3684 697 | 3679 698 | 3684 699 | 3672 700 | 3678 701 | 3723 702 | 3744 703 | 3742 704 | 3739 705 | 3732 706 | 3746 707 | 3750 708 | 3757 709 | 3759 710 | 3762 711 | 3759 712 | 3758 713 | 3753 714 | 3755 715 | 3760 716 | 3766 717 | 3767 718 | 3771 719 | 3800 720 | 3801 721 | 3805 722 | 3806 723 | 3807 724 | 3806 725 | 3811 726 | 3818 727 | 3819 728 | 3831 729 | 3832 730 | 3840 731 | 3844 732 | 3829 733 | 3842 734 | 3854 735 | 3858 736 | 3874 737 | 3875 738 | 3877 739 | 3880 740 | 3903 741 | 3906 742 | 3907 743 | 3908 744 | 3909 745 | 3929 746 | 3951 747 | 3952 748 | 3962 749 | 3973 750 | 3975 751 | 3976 752 | 3974 753 | 3977 754 | 4004 755 | 4008 756 | 4017 757 | 4004 758 | 4003 759 | 4009 760 | 4010 761 | 4004 762 | 4005 763 | 4007 764 | 4015 765 | 4018 766 | 4026 767 | 4029 768 | 4019 769 | 4022 770 | 4030 771 | 4036 772 | 4037 773 | 4039 774 | 4022 775 | 4024 776 | 4026 777 | 4034 778 | 4033 779 | 4034 780 | 4040 781 | 4042 782 | 4050 783 | 4054 784 | 4055 785 | 4056 786 | 4033 787 | 4047 788 | 4048 789 | 4047 790 | 4048 791 | 4050 792 | 4059 793 | 4077 794 | 4079 795 | 4091 796 | 4092 797 | 4098 798 | 4103 799 | 4107 800 | 4108 801 | 4112 802 | 4114 803 | 4118 804 | 4119 805 | 4125 806 | 4126 807 | 4138 808 | 4137 809 | 4168 810 | 4189 811 | 4195 812 | 4198 813 | 4217 814 | 4220 815 | 4223 816 | 4228 817 | 4234 818 | 4233 819 | 4234 820 | 4236 821 | 4269 822 | 4268 823 | 4269 824 | 4268 825 | 4280 826 | 4291 827 | 4285 828 | 4311 829 | 4312 830 | 4315 831 | 4307 832 | 4313 833 | 4315 834 | 4326 835 | 4332 836 | 4345 837 | 4340 838 | 4353 839 | 4355 840 | 4353 841 | 4354 842 | 4367 843 | 4368 844 | 4377 845 | 4378 846 | 4380 847 | 4382 848 | 4385 849 | 4390 850 | 4392 851 | 4393 852 | 4396 853 | 4397 854 | 4385 855 | 4398 856 | 4386 857 | 4381 858 | 4382 859 | 4370 860 | 4385 861 | 4384 862 | 4403 863 | 4404 864 | 4405 865 | 4408 866 | 4422 867 | 4425 868 | 4422 869 | 4435 870 | 4436 871 | 4438 872 | 4452 873 | 4461 874 | 4465 875 | 4480 876 | 4488 877 | 4495 878 | 4504 879 | 4505 880 | 4508 881 | 4523 882 | 4524 883 | 4527 884 | 4529 885 | 4561 886 | 4577 887 | 4580 888 | 4614 889 | 4635 890 | 4636 891 | 4637 892 | 4639 893 | 4654 894 | 4655 895 | 4652 896 | 4663 897 | 4665 898 | 4666 899 | 4668 900 | 4671 901 | 4677 902 | 4680 903 | 4687 904 | 4689 905 | 4693 906 | 4695 907 | 4688 908 | 4697 909 | 4711 910 | 4724 911 | 4734 912 | 4747 913 | 4748 914 | 4780 915 | 4781 916 | 4793 917 | 4799 918 | 4804 919 | 4805 920 | 4792 921 | 4793 922 | 4794 923 | 4820 924 | 4815 925 | 4817 926 | 4828 927 | 4830 928 | 4834 929 | 4836 930 | 4840 931 | 4839 932 | 4848 933 | 4862 934 | 4867 935 | 4869 936 | 4871 937 | 4870 938 | 4878 939 | 4868 940 | 4869 941 | 4871 942 | 4874 943 | 4897 944 | 4905 945 | 4909 946 | 4910 947 | 4912 948 | 4945 949 | 4946 950 | 4945 951 | 4950 952 | 4951 953 | 4952 954 | 4957 955 | 4958 956 | 4967 957 | 4991 958 | 4998 959 | 5001 960 | 5021 961 | 5022 962 | 5021 963 | 5030 964 | 5031 965 | 5028 966 | 5031 967 | 5014 968 | 5018 969 | 5025 970 | 5027 971 | 5032 972 | 5034 973 | 5036 974 | 5033 975 | 5036 976 | 5035 977 | 5038 978 | 5042 979 | 5043 980 | 5044 981 | 5045 982 | 5062 983 | 5069 984 | 5070 985 | 5068 986 | 5089 987 | 5110 988 | 5114 989 | 5130 990 | 5134 991 | 5154 992 | 5153 993 | 5158 994 | 5162 995 | 5177 996 | 5178 997 | 5182 998 | 5187 999 | 5188 1000 | 5189 1001 | 5223 1002 | 5225 1003 | 5237 1004 | 5264 1005 | 5269 1006 | 5270 1007 | 5274 1008 | 5275 1009 | 5276 1010 | 5279 1011 | 5285 1012 | 5266 1013 | 5270 1014 | 5272 1015 | 5275 1016 | 5276 1017 | 5294 1018 | 5298 1019 | 5299 1020 | 5302 1021 | 5306 1022 | 5311 1023 | 5317 1024 | 5304 1025 | 5308 1026 | 5303 1027 | 5324 1028 | 5329 1029 | 5330 1030 | 5334 1031 | 5342 1032 | 5348 1033 | 5367 1034 | 5385 1035 | 5390 1036 | 5382 1037 | 5383 1038 | 5384 1039 | 5388 1040 | 5389 1041 | 5390 1042 | 5399 1043 | 5401 1044 | 5403 1045 | 5407 1046 | 5408 1047 | 5417 1048 | 5445 1049 | 5456 1050 | 5459 1051 | 5462 1052 | 5463 1053 | 5471 1054 | 5472 1055 | 5475 1056 | 5504 1057 | 5525 1058 | 5538 1059 | 5552 1060 | 5553 1061 | 5556 1062 | 5562 1063 | 5598 1064 | 5575 1065 | 5569 1066 | 5571 1067 | 5574 1068 | 5575 1069 | 5562 1070 | 5586 1071 | 5594 1072 | 5599 1073 | 5641 1074 | 5639 1075 | 5642 1076 | 5644 1077 | 5647 1078 | 5643 1079 | 5642 1080 | 5643 1081 | 5645 1082 | 5654 1083 | 5655 1084 | 5672 1085 | 5681 1086 | 5696 1087 | 5700 1088 | 5701 1089 | 5702 1090 | 5705 1091 | 5709 1092 | 5716 1093 | 5721 1094 | 5724 1095 | 5728 1096 | 5749 1097 | 5750 1098 | 5746 1099 | 5744 1100 | 5743 1101 | 5751 1102 | 5754 1103 | 5748 1104 | 5764 1105 | 5765 1106 | 5773 1107 | 5775 1108 | 5778 1109 | 5796 1110 | 5800 1111 | 5801 1112 | 5806 1113 | 5811 1114 | 5826 1115 | 5829 1116 | 5833 1117 | 5844 1118 | 5850 1119 | 5852 1120 | 5861 1121 | 5863 1122 | 5867 1123 | 5883 1124 | 5880 1125 | 5867 1126 | 5862 1127 | 5863 1128 | 5865 1129 | 5866 1130 | 5864 1131 | 5869 1132 | 5871 1133 | 5880 1134 | 5887 1135 | 5908 1136 | 5917 1137 | 5919 1138 | 5928 1139 | 5939 1140 | 5967 1141 | 5954 1142 | 5955 1143 | 5945 1144 | 5950 1145 | 5956 1146 | 5958 1147 | 5968 1148 | 5972 1149 | 5978 1150 | 5979 1151 | 5981 1152 | 5986 1153 | 5987 1154 | 5990 1155 | 5992 1156 | 5993 1157 | 6012 1158 | 6018 1159 | 6021 1160 | 6023 1161 | 6024 1162 | 6025 1163 | 6041 1164 | 6045 1165 | 6042 1166 | 6058 1167 | 6059 1168 | 6060 1169 | 6062 1170 | 6064 1171 | 6072 1172 | 6074 1173 | 6075 1174 | 6068 1175 | 6075 1176 | 6093 1177 | 6095 1178 | 6090 1179 | 6092 1180 | 6107 1181 | 6106 1182 | 6107 1183 | 6108 1184 | 6109 1185 | 6120 1186 | 6123 1187 | 6125 1188 | 6126 1189 | 6129 1190 | 6130 1191 | 6132 1192 | 6149 1193 | 6157 1194 | 6163 1195 | 6164 1196 | 6165 1197 | 6152 1198 | 6154 1199 | 6156 1200 | 6158 1201 | 6155 1202 | 6156 1203 | 6158 1204 | 6163 1205 | 6178 1206 | 6179 1207 | 6180 1208 | 6179 1209 | 6182 1210 | 6184 1211 | 6191 1212 | 6189 1213 | 6199 1214 | 6210 1215 | 6212 1216 | 6218 1217 | 6222 1218 | 6223 1219 | 6232 1220 | 6233 1221 | 6228 1222 | 6232 1223 | 6221 1224 | 6223 1225 | 6225 1226 | 6228 1227 | 6236 1228 | 6237 1229 | 6246 1230 | 6252 1231 | 6254 1232 | 6255 1233 | 6256 1234 | 6255 1235 | 6260 1236 | 6262 1237 | 6263 1238 | 6267 1239 | 6268 1240 | 6272 1241 | 6279 1242 | 6277 1243 | 6276 1244 | 6282 1245 | 6287 1246 | 6305 1247 | 6306 1248 | 6308 1249 | 6309 1250 | 6310 1251 | 6318 1252 | 6319 1253 | 6321 1254 | 6320 1255 | 6328 1256 | 6346 1257 | 6348 1258 | 6351 1259 | 6352 1260 | 6369 1261 | 6370 1262 | 6368 1263 | 6369 1264 | 6371 1265 | 6374 1266 | 6375 1267 | 6370 1268 | 6374 1269 | 6393 1270 | 6403 1271 | 6406 1272 | 6412 1273 | 6420 1274 | 6435 1275 | 6437 1276 | 6438 1277 | 6462 1278 | 6461 1279 | 6462 1280 | 6467 1281 | 6468 1282 | 6494 1283 | 6508 1284 | 6509 1285 | 6518 1286 | 6519 1287 | 6520 1288 | 6521 1289 | 6518 1290 | 6545 1291 | 6546 1292 | 6550 1293 | 6552 1294 | 6567 1295 | 6568 1296 | 6570 1297 | 6578 1298 | 6582 1299 | 6580 1300 | 6591 1301 | 6599 1302 | 6601 1303 | 6595 1304 | 6598 1305 | 6610 1306 | 6628 1307 | 6612 1308 | 6616 1309 | 6614 1310 | 6618 1311 | 6641 1312 | 6640 1313 | 6643 1314 | 6647 1315 | 6663 1316 | 6664 1317 | 6665 1318 | 6668 1319 | 6669 1320 | 6670 1321 | 6685 1322 | 6706 1323 | 6704 1324 | 6708 1325 | 6710 1326 | 6716 1327 | 6717 1328 | 6719 1329 | 6726 1330 | 6736 1331 | 6755 1332 | 6752 1333 | 6753 1334 | 6760 1335 | 6769 1336 | 6774 1337 | 6779 1338 | 6783 1339 | 6792 1340 | 6794 1341 | 6798 1342 | 6804 1343 | 6803 1344 | 6806 1345 | 6809 1346 | 6811 1347 | 6812 1348 | 6817 1349 | 6827 1350 | 6830 1351 | 6822 1352 | 6842 1353 | 6844 1354 | 6848 1355 | 6849 1356 | 6850 1357 | 6852 1358 | 6854 1359 | 6873 1360 | 6891 1361 | 6925 1362 | 6928 1363 | 6930 1364 | 6940 1365 | 6941 1366 | 6942 1367 | 6943 1368 | 6946 1369 | 6951 1370 | 6956 1371 | 6957 1372 | 6966 1373 | 6969 1374 | 6971 1375 | 6973 1376 | 7000 1377 | 7006 1378 | 7007 1379 | 7031 1380 | 7037 1381 | 7046 1382 | 7052 1383 | 7053 1384 | 7070 1385 | 7072 1386 | 7076 1387 | 7084 1388 | 7090 1389 | 7089 1390 | 7117 1391 | 7139 1392 | 7153 1393 | 7168 1394 | 7178 1395 | 7179 1396 | 7168 1397 | 7171 1398 | 7172 1399 | 7171 1400 | 7174 1401 | 7194 1402 | 7226 1403 | 7246 1404 | 7252 1405 | 7256 1406 | 7257 1407 | 7259 1408 | 7261 1409 | 7266 1410 | 7277 1411 | 7296 1412 | 7298 1413 | 7300 1414 | 7315 1415 | 7329 1416 | 7332 1417 | 7333 1418 | 7338 1419 | 7340 1420 | 7347 1421 | 7349 1422 | 7350 1423 | 7351 1424 | 7352 1425 | 7353 1426 | 7356 1427 | 7359 1428 | 7360 1429 | 7361 1430 | 7358 1431 | 7363 1432 | 7364 1433 | 7385 1434 | 7406 1435 | 7409 1436 | 7434 1437 | 7435 1438 | 7436 1439 | 7438 1440 | 7399 1441 | 7401 1442 | 7406 1443 | 7416 1444 | 7409 1445 | 7410 1446 | 7413 1447 | 7415 1448 | 7439 1449 | 7441 1450 | 7440 1451 | 7442 1452 | 7466 1453 | 7465 1454 | 7468 1455 | 7480 1456 | 7481 1457 | 7483 1458 | 7488 1459 | 7498 1460 | 7497 1461 | 7500 1462 | 7503 1463 | 7506 1464 | 7513 1465 | 7518 1466 | 7519 1467 | 7524 1468 | 7506 1469 | 7507 1470 | 7517 1471 | 7519 1472 | 7528 1473 | 7529 1474 | 7533 1475 | 7535 1476 | 7540 1477 | 7542 1478 | 7554 1479 | 7556 1480 | 7557 1481 | 7573 1482 | 7582 1483 | 7593 1484 | 7599 1485 | 7583 1486 | 7591 1487 | 7593 1488 | 7595 1489 | 7599 1490 | 7611 1491 | 7626 1492 | 7618 1493 | 7615 1494 | 7619 1495 | 7620 1496 | 7625 1497 | 7626 1498 | 7628 1499 | 7631 1500 | 7630 1501 | 7631 1502 | 7642 1503 | 7654 1504 | 7656 1505 | 7657 1506 | 7659 1507 | 7673 1508 | 7677 1509 | 7691 1510 | 7697 1511 | 7707 1512 | 7708 1513 | 7710 1514 | 7712 1515 | 7717 1516 | 7724 1517 | 7722 1518 | 7723 1519 | 7722 1520 | 7725 1521 | 7726 1522 | 7724 1523 | 7730 1524 | 7734 1525 | 7760 1526 | 7770 1527 | 7775 1528 | 7788 1529 | 7787 1530 | 7789 1531 | 7797 1532 | 7813 1533 | 7841 1534 | 7853 1535 | 7860 1536 | 7868 1537 | 7883 1538 | 7903 1539 | 7907 1540 | 7908 1541 | 7910 1542 | 7912 1543 | 7919 1544 | 7921 1545 | 7925 1546 | 7926 1547 | 7937 1548 | 7951 1549 | 7954 1550 | 7957 1551 | 7961 1552 | 7964 1553 | 7976 1554 | 7979 1555 | 7971 1556 | 7969 1557 | 7970 1558 | 7982 1559 | 7983 1560 | 7984 1561 | 7993 1562 | 8000 1563 | 8015 1564 | 8017 1565 | 8014 1566 | 8025 1567 | 8019 1568 | 8028 1569 | 8029 1570 | 8030 1571 | 8033 1572 | 8038 1573 | 8040 1574 | 8041 1575 | 8040 1576 | 8044 1577 | 8026 1578 | 8030 1579 | 8031 1580 | 8044 1581 | 8060 1582 | 8064 1583 | 8065 1584 | 8054 1585 | 8056 1586 | 8058 1587 | 8060 1588 | 8061 1589 | 8062 1590 | 8068 1591 | 8072 1592 | 8078 1593 | 8069 1594 | 8067 1595 | 8073 1596 | 8084 1597 | 8119 1598 | 8121 1599 | 8120 1600 | 8122 1601 | 8132 1602 | 8133 1603 | 8127 1604 | 8132 1605 | 8151 1606 | 8154 1607 | 8161 1608 | 8162 1609 | 8158 1610 | 8186 1611 | 8187 1612 | 8172 1613 | 8181 1614 | 8200 1615 | 8202 1616 | 8216 1617 | 8213 1618 | 8215 1619 | 8229 1620 | 8243 1621 | 8244 1622 | 8245 1623 | 8246 1624 | 8239 1625 | 8260 1626 | 8262 1627 | 8279 1628 | 8281 1629 | 8287 1630 | 8288 1631 | 8292 1632 | 8296 1633 | 8299 1634 | 8303 1635 | 8310 1636 | 8311 1637 | 8315 1638 | 8329 1639 | 8330 1640 | 8331 1641 | 8334 1642 | 8346 1643 | 8347 1644 | 8354 1645 | 8377 1646 | 8379 1647 | 8381 1648 | 8388 1649 | 8389 1650 | 8415 1651 | 8413 1652 | 8419 1653 | 8420 1654 | 8421 1655 | 8425 1656 | 8427 1657 | 8428 1658 | 8435 1659 | 8442 1660 | 8426 1661 | 8420 1662 | 8432 1663 | 8435 1664 | 8445 1665 | 8446 1666 | 8450 1667 | 8451 1668 | 8455 1669 | 8456 1670 | 8482 1671 | 8489 1672 | 8487 1673 | 8500 1674 | 8485 1675 | 8493 1676 | 8497 1677 | 8502 1678 | 8501 1679 | 8502 1680 | 8503 1681 | 8505 1682 | 8507 1683 | 8508 1684 | 8509 1685 | 8514 1686 | 8523 1687 | 8527 1688 | 8531 1689 | 8542 1690 | 8540 1691 | 8542 1692 | 8543 1693 | 8544 1694 | 8557 1695 | 8550 1696 | 8552 1697 | 8563 1698 | 8565 1699 | 8566 1700 | 8567 1701 | 8581 1702 | 8591 1703 | 8595 1704 | 8605 1705 | 8613 1706 | 8614 1707 | 8613 1708 | 8615 1709 | 8618 1710 | 8631 1711 | 8628 1712 | 8627 1713 | 8628 1714 | 8629 1715 | 8646 1716 | 8648 1717 | 8650 1718 | 8655 1719 | 8659 1720 | 8681 1721 | 8684 1722 | 8687 1723 | 8690 1724 | 8687 1725 | 8688 1726 | 8719 1727 | 8722 1728 | 8721 1729 | 8723 1730 | 8754 1731 | 8767 1732 | 8749 1733 | 8750 1734 | 8764 1735 | 8772 1736 | 8773 1737 | 8776 1738 | 8778 1739 | 8782 1740 | 8786 1741 | 8784 1742 | 8799 1743 | 8800 1744 | 8815 1745 | 8819 1746 | 8838 1747 | 8833 1748 | 8834 1749 | 8835 1750 | 8837 1751 | 8844 1752 | 8851 1753 | 8852 1754 | 8856 1755 | 8857 1756 | 8870 1757 | 8879 1758 | 8904 1759 | 8910 1760 | 8918 1761 | 8925 1762 | 8928 1763 | 8927 1764 | 8928 1765 | 8936 1766 | 8937 1767 | 8939 1768 | 8944 1769 | 8979 1770 | 8980 1771 | 8994 1772 | 8996 1773 | 8997 1774 | 8999 1775 | 9003 1776 | 9014 1777 | 9015 1778 | 9020 1779 | 9023 1780 | 9026 1781 | 9027 1782 | 9028 1783 | 9030 1784 | 9033 1785 | 9036 1786 | 9038 1787 | 9044 1788 | 9048 1789 | 9063 1790 | 9066 1791 | 9091 1792 | 9092 1793 | 9093 1794 | 9095 1795 | 9099 1796 | 9097 1797 | 9102 1798 | 9103 1799 | 9123 1800 | 9124 1801 | 9125 1802 | 9127 1803 | 9128 1804 | 9132 1805 | 9135 1806 | 9142 1807 | 9149 1808 | 9152 1809 | 9171 1810 | 9166 1811 | 9177 1812 | 9178 1813 | 9162 1814 | 9168 1815 | 9169 1816 | 9170 1817 | 9183 1818 | 9189 1819 | 9199 1820 | 9195 1821 | 9198 1822 | 9203 1823 | 9214 1824 | 9213 1825 | 9222 1826 | 9223 1827 | 9228 1828 | 9229 1829 | 9241 1830 | 9243 1831 | 9229 1832 | 9242 1833 | 9257 1834 | 9262 1835 | 9265 1836 | 9275 1837 | 9276 1838 | 9289 1839 | 9290 1840 | 9297 1841 | 9298 1842 | 9301 1843 | 9313 1844 | 9314 1845 | 9315 1846 | 9316 1847 | 9324 1848 | 9325 1849 | 9328 1850 | 9310 1851 | 9311 1852 | 9336 1853 | 9340 1854 | 9354 1855 | 9356 1856 | 9360 1857 | 9361 1858 | 9362 1859 | 9381 1860 | 9385 1861 | 9393 1862 | 9394 1863 | 9402 1864 | 9403 1865 | 9407 1866 | 9403 1867 | 9415 1868 | 9416 1869 | 9436 1870 | 9442 1871 | 9454 1872 | 9481 1873 | 9485 1874 | 9486 1875 | 9487 1876 | 9513 1877 | 9521 1878 | 9525 1879 | 9521 1880 | 9519 1881 | 9524 1882 | 9526 1883 | 9530 1884 | 9540 1885 | 9568 1886 | 9571 1887 | 9589 1888 | 9609 1889 | 9610 1890 | 9604 1891 | 9602 1892 | 9601 1893 | 9626 1894 | 9630 1895 | 9662 1896 | 9670 1897 | 9672 1898 | 9674 1899 | 9676 1900 | 9682 1901 | 9683 1902 | 9685 1903 | 9687 1904 | 9704 1905 | 9706 1906 | 9707 1907 | 9708 1908 | 9718 1909 | 9732 1910 | 9741 1911 | 9756 1912 | 9775 1913 | 9785 1914 | 9786 1915 | 9797 1916 | 9800 1917 | 9803 1918 | 9806 1919 | 9812 1920 | 9815 1921 | 9840 1922 | 9842 1923 | 9859 1924 | 9865 1925 | 9871 1926 | 9876 1927 | 9894 1928 | 9903 1929 | 9905 1930 | 9912 1931 | 9939 1932 | 9940 1933 | 9946 1934 | 9948 1935 | 9953 1936 | 9960 1937 | 9963 1938 | 9964 1939 | 9967 1940 | 9973 1941 | 9974 1942 | 9986 1943 | 9982 1944 | 9987 1945 | 9988 1946 | 10011 1947 | 10012 1948 | 10013 1949 | 10018 1950 | 10021 1951 | 10022 1952 | 10028 1953 | 10032 1954 | 10034 1955 | 10035 1956 | 10036 1957 | 10037 1958 | 10048 1959 | 10060 1960 | 10107 1961 | 10128 1962 | 10125 1963 | 10136 1964 | 10158 1965 | 10167 1966 | 10158 1967 | 10183 1968 | 10212 1969 | 10223 1970 | 10229 1971 | 10233 1972 | 10229 1973 | 10232 1974 | 10242 1975 | 10245 1976 | 10246 1977 | 10269 1978 | 10274 1979 | 10270 1980 | 10271 1981 | 10293 1982 | 10287 1983 | 10298 1984 | 10299 1985 | 10307 1986 | 10308 1987 | 10315 1988 | 10336 1989 | 10342 1990 | 10350 1991 | 10344 1992 | 10349 1993 | 10353 1994 | 10354 1995 | 10370 1996 | 10377 1997 | 10380 1998 | 10390 1999 | 10410 2000 | 10411 2001 | 2002 | --------------------------------------------------------------------------------