feat: implement day 15
This commit is contained in:
		
							parent
							
								
									0a709e9309
								
							
						
					
					
						commit
						b8ab75d049
					
				
							
								
								
									
										111
									
								
								src/day14.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								src/day14.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,111 @@
 | 
				
			|||||||
 | 
					use std::time::Instant;
 | 
				
			||||||
 | 
					use itertools::Itertools;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum Direction{
 | 
				
			||||||
 | 
					    North,
 | 
				
			||||||
 | 
					    South,
 | 
				
			||||||
 | 
					    East,
 | 
				
			||||||
 | 
					    West
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					pub fn execute_task01(content: &str) {
 | 
				
			||||||
 | 
					    let start = Instant::now();
 | 
				
			||||||
 | 
					    let gravity_1 = solve_01(content).unwrap();
 | 
				
			||||||
 | 
					    let duration = start.elapsed();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //assert_eq!(10165598, gravity_1);
 | 
				
			||||||
 | 
					    println!("Day14 - Task01 - Duration: {duration:?} - One time gravity: {}", gravity_1)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub fn execute_task02(content: &str) {
 | 
				
			||||||
 | 
					    let start = Instant::now();
 | 
				
			||||||
 | 
					    let gravity_1000000 = solve_02(content).unwrap();
 | 
				
			||||||
 | 
					    let duration = start.elapsed();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //assert_eq!(678728808158, gravity_1000000);
 | 
				
			||||||
 | 
					    println!("Day14 - Task02 - Duration: {duration:?} - 1 Million time gravity: {}", gravity_1000000)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn solve_01(content: &str) -> anyhow::Result<usize> {
 | 
				
			||||||
 | 
					    let map = content
 | 
				
			||||||
 | 
					        .lines()
 | 
				
			||||||
 | 
					        .map(|chars| chars.chars().collect_vec())
 | 
				
			||||||
 | 
					        .collect_vec();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    todo!()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn solve_02(content: &str) -> anyhow::Result<usize> {
 | 
				
			||||||
 | 
					    todo!()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn move_direction(map: &Vec<Vec<char>>, direction: Direction) {
 | 
				
			||||||
 | 
					    match direction {
 | 
				
			||||||
 | 
					        Direction::North => {
 | 
				
			||||||
 | 
					            let mut stones = vec![0; map.len()];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for row in 0..map.len() {
 | 
				
			||||||
 | 
					                let width = map[row].len();
 | 
				
			||||||
 | 
					                for col in 0..width {
 | 
				
			||||||
 | 
					                    let char = map[row][col].clone();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    match char {
 | 
				
			||||||
 | 
					                        '0' => {
 | 
				
			||||||
 | 
					                            if stones[col] != row - 1 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        '#' => stones[col] = row,
 | 
				
			||||||
 | 
					                        '.' => (),
 | 
				
			||||||
 | 
					                        _ => unreachable!()
 | 
				
			||||||
 | 
					                    };
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        Direction::South => {}
 | 
				
			||||||
 | 
					        Direction::East => {}
 | 
				
			||||||
 | 
					        Direction::West => {}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[test]
 | 
				
			||||||
 | 
					fn test_solve_01() {
 | 
				
			||||||
 | 
					    let example = r#"O....#....
 | 
				
			||||||
 | 
					O.OO#....#
 | 
				
			||||||
 | 
					.....##...
 | 
				
			||||||
 | 
					OO.#O....O
 | 
				
			||||||
 | 
					.O.....O#.
 | 
				
			||||||
 | 
					O.#..O.#.#
 | 
				
			||||||
 | 
					..O..#O..O
 | 
				
			||||||
 | 
					.......O..
 | 
				
			||||||
 | 
					#....###..
 | 
				
			||||||
 | 
					#OO..#...."#;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let result = solve_01(example).unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert_eq!(136, result);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[test]
 | 
				
			||||||
 | 
					fn test_solve_02() {
 | 
				
			||||||
 | 
					    let example = r#"...#......
 | 
				
			||||||
 | 
					.......#..
 | 
				
			||||||
 | 
					#.........
 | 
				
			||||||
 | 
					..........
 | 
				
			||||||
 | 
					......#...
 | 
				
			||||||
 | 
					.#........
 | 
				
			||||||
 | 
					.........#
 | 
				
			||||||
 | 
					..........
 | 
				
			||||||
 | 
					.......#..
 | 
				
			||||||
 | 
					#...#....."#;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let result = solve_02(example).unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert_eq!(1030, result);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										111
									
								
								src/day15.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								src/day15.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,111 @@
 | 
				
			|||||||
 | 
					use std::hash::Hash;
 | 
				
			||||||
 | 
					use std::time::Instant;
 | 
				
			||||||
 | 
					use itertools::Itertools;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[derive(Debug, Clone)]
 | 
				
			||||||
 | 
					struct Lens {
 | 
				
			||||||
 | 
					    label: String,
 | 
				
			||||||
 | 
					    hash: u32,
 | 
				
			||||||
 | 
					    value: usize,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					pub fn execute_task01(content: &str) {
 | 
				
			||||||
 | 
					    let start = Instant::now();
 | 
				
			||||||
 | 
					    let sum_of_hash = solve_01(content).unwrap();
 | 
				
			||||||
 | 
					    let duration = start.elapsed();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert_eq!(508552, sum_of_hash);
 | 
				
			||||||
 | 
					    println!("Day15 - Task01 - Duration: {duration:?} - Sum of Hash: {}", sum_of_hash)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub fn execute_task02(content: &str) {
 | 
				
			||||||
 | 
					    let start = Instant::now();
 | 
				
			||||||
 | 
					    let boxes_sum = solve_02(content).unwrap();
 | 
				
			||||||
 | 
					    let duration = start.elapsed();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert_eq!(265462, boxes_sum);
 | 
				
			||||||
 | 
					    println!("Day15 - Task02 - Duration: {duration:?} - Sum of Baxes: {}", boxes_sum)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn solve_01(content: &str) -> anyhow::Result<u32> {
 | 
				
			||||||
 | 
					    Ok(content
 | 
				
			||||||
 | 
					        .split(",")
 | 
				
			||||||
 | 
					        .map(|part| part
 | 
				
			||||||
 | 
					            .chars()
 | 
				
			||||||
 | 
					            .fold(0, |sum, char| hash(sum + char as u32) ))
 | 
				
			||||||
 | 
					        .sum())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn solve_02(content: &str) -> anyhow::Result<usize> {
 | 
				
			||||||
 | 
					    let mut boxes: Vec<Vec<Lens>> = vec![vec![]; 256];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let _ = content
 | 
				
			||||||
 | 
					        .split(",")
 | 
				
			||||||
 | 
					        .for_each(|part| {
 | 
				
			||||||
 | 
					            if part.contains("=") {
 | 
				
			||||||
 | 
					                let (label, num) = part.split_once("=").unwrap();
 | 
				
			||||||
 | 
					                let lens = Lens{
 | 
				
			||||||
 | 
					                    label: label.to_owned(),
 | 
				
			||||||
 | 
					                    hash: hash_string(label),
 | 
				
			||||||
 | 
					                    value: num.parse().unwrap(),
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					                let mut lable_box = &mut boxes[lens.hash as usize];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if let Some(item) = lable_box.iter_mut().filter(|box_lens| box_lens.label == lens.label).next() { // already exists
 | 
				
			||||||
 | 
					                    item.value = lens.value
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    lable_box.push(lens)
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else { // is dash (-)
 | 
				
			||||||
 | 
					                let label = part.replace("-", "");
 | 
				
			||||||
 | 
					                let hash = hash_string(label.as_str());
 | 
				
			||||||
 | 
					                let mut lable_box= &mut boxes[hash as usize];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                for i in 0..lable_box.len() {
 | 
				
			||||||
 | 
					                    let lens = &lable_box[i];
 | 
				
			||||||
 | 
					                    if lens.label == label {
 | 
				
			||||||
 | 
					                        lable_box.remove(i);
 | 
				
			||||||
 | 
					                        break
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Ok(boxes
 | 
				
			||||||
 | 
					        .iter()
 | 
				
			||||||
 | 
					        .enumerate()
 | 
				
			||||||
 | 
					        .filter(|(_, list)| !list.is_empty())
 | 
				
			||||||
 | 
					        .flat_map(|(i, lenses)| lenses.iter().enumerate().map(move |(j, lens)| (i+1) * (j+1) * lens.value))
 | 
				
			||||||
 | 
					        .sum())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn hash_string(str: &str) -> u32 {
 | 
				
			||||||
 | 
					    str
 | 
				
			||||||
 | 
					        .chars()
 | 
				
			||||||
 | 
					        .fold(0, |sum, char| hash(sum + char as u32) )
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn hash(num: u32) -> u32 {
 | 
				
			||||||
 | 
					    num * 17 % 256
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[test]
 | 
				
			||||||
 | 
					fn test_solve_01() {
 | 
				
			||||||
 | 
					    let example = r#"rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7"#;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let result = solve_01(example).unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert_eq!(1320, result);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[test]
 | 
				
			||||||
 | 
					fn test_solve_02() {
 | 
				
			||||||
 | 
					    let example = r#"rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7"#;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let result = solve_02(example).unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert_eq!(145, result);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										100
									
								
								src/input/day14/input.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								src/input/day14/input.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,100 @@
 | 
				
			|||||||
 | 
					...OO..##.......O..O....O..O#...O.OO#.#..O...O....OOO##..O##O#...#..O....#........#O.##O#..OO#..OO.O
 | 
				
			||||||
 | 
					...#.#.#.O#...OO.#........O#.#............#...O...#...OOOO#...#..#..#.O...#..#....O.#O###..O#..OOO.O
 | 
				
			||||||
 | 
					..##..##.O...#..OO.O.#.#O#.O.OO..#.....#.....#O##O.#..###.O.........OOOO#...O.#.........##O..O.#O.O.
 | 
				
			||||||
 | 
					.....#.##O##.#.#O#....#.#O.....OO.#.#OO##OOOO..#O..#.#.#.O..........O.#......O...OO.........#.OO....
 | 
				
			||||||
 | 
					.#.O#O...#...#...O#O....O.......O#.O..OOO...#.##OO.#.O..O.#.O...O..O.#.#.#...#..O...OO..OO.....O.#.O
 | 
				
			||||||
 | 
					....#..#...#.##................O..OO.....##.........#...#..........#.OOO...O#..##.##.......#O..O.##.
 | 
				
			||||||
 | 
					.............OO#...O.#....O....O...##...OOO....O.O..O...#......O..O#.O#.#..........#.#....#O...#O..O
 | 
				
			||||||
 | 
					O.....O.O...O...OO..#...#.OO........#..##O...O.O.#.#..#O..##O.##..O......#.....O......#....O.....OO.
 | 
				
			||||||
 | 
					.#..O....O.O..O.#..#.......#OOO...#.O..O..O#...OO.#...##O.O..O.OO...O....#O.O.....O#....O....O.#....
 | 
				
			||||||
 | 
					...#....#OO...O....#.##.O#####..O...#...#...#..O..#.##.##OO...O#.........O..OO......#..OO.#...##O...
 | 
				
			||||||
 | 
					...OO...........O....O.##..#.O##.....O..#.......O#..#....#O.#...#.#.O..O#..#..O..O##..O...#..O##.O..
 | 
				
			||||||
 | 
					.....#OO#.O......#.O..O..O.....#.#.OOOOO..#......O.OO.OO.....#...#O....OO.O.#....##O..O..O......#...
 | 
				
			||||||
 | 
					.O#O.#.#O.....O.#..O..#O..#O.O..O.......O....O.....#...#........#.#....O#..#......#O....OO#.....O.##
 | 
				
			||||||
 | 
					.O..###.....O..##O...O..O..O.#....#.......#..##......O#O.#OOO...OOO...O..O#..#.#...OOO#..........O..
 | 
				
			||||||
 | 
					#..O#OO..#O.O..OOO...#.#...O..O.O.......#..#...#..O...O.O#.O....#...#..O.O....O.#.#...#.....OO...#.#
 | 
				
			||||||
 | 
					...O..#O............#.......#..##OO..##....#OO.OO..##..#OO.#.O..O.O........O........O.##...O.O.O...#
 | 
				
			||||||
 | 
					.O...O.....#....OO#.O#.###.O....#.O...O#....#....O....O..OO.O....O#OO#.#O#......OO..OOO...O.#.O.....
 | 
				
			||||||
 | 
					.O..O................OO##O..#....O..#.O..#.#............#.##.........#..O.O.O..O#...O.#OOO#..#.#...#
 | 
				
			||||||
 | 
					O..O.........O##...#......#..#O....#O#....O.O.O.O...#......O#O..#...O..##.#..O.O.#O.......OO...O#O##
 | 
				
			||||||
 | 
					OOOO.#O.O#.....#..#...#..O...#O....#.#.O.#..O.##.O....#.##.O.O....OO...O.......#..#......#...O###..O
 | 
				
			||||||
 | 
					..#.......#...O..O..OO.O#...OO.OO..O#.O....#OO....#.#O........##O.#.....###....OO#..O.O.O.......O#.#
 | 
				
			||||||
 | 
					#.O.......#OO#...#O#O#..OO.O.OOO#O#....OO..O#.O.#.O...##.#.O..#...O.O.....O..#.OO#.O...O.#....O.O..#
 | 
				
			||||||
 | 
					.OO#.OO###....O........#..O..##.O...OOO.#...O......O#....#.O#.O......O.......O.#..#O..O...#..#...#..
 | 
				
			||||||
 | 
					....##O....O.##......##.O.##......#....OOOOO#......#.#.....#O...#...#..OO##.##.....##.O...O.O##.#..O
 | 
				
			||||||
 | 
					.#...O.#OO........O..OO...##O.O..O.....O..#OOO....#..#O#.#O......O.O.##.....O......O.O.#..#.#..OO...
 | 
				
			||||||
 | 
					O...O....#...O##.....#......O.O..O..O..#...O..OO#..O#.#.....#....O...##.#.#O.O........#.O#O#OO.#..#.
 | 
				
			||||||
 | 
					#..#...#OO...O#..#.#.#O#O..........O..O...O.O#O...OOO..O...O.O#.O##....O.......O..O..#...OO..OOO....
 | 
				
			||||||
 | 
					.#.OOO#....O#.....#.OOO.........O.........O.......#O#O......O#O.O.#O#.#..O.....#.....#..O.##O.O#...#
 | 
				
			||||||
 | 
					...#....O.O##.O...O.O..OOOO##.............OO....O.O....O..O....#OO..O....OO.OO.O..#.#......O.O#.....
 | 
				
			||||||
 | 
					#....O...OO.#.....O...OO.#O.#O....#....##.O..#O..O.O...#...O#.#OOOOOO......#.O.##......##..###.O.O..
 | 
				
			||||||
 | 
					.#.O..O.##O.#.........O.O.#O....#......O.#....O...#O.#.OO.OOO..#..O.O.##..#.....#..O.....O#..O#....O
 | 
				
			||||||
 | 
					#.OO.#...O...O##O.O.O......#....O..O.O.......O.....#...OOO....O.O#.#..O.O..OO#.OOO..O...#..O..O.OO.#
 | 
				
			||||||
 | 
					.#..#........##O.O.....OO.....O...OO#O..#..O.....O...O....O.#.#.......OO.....O..O.O..O....#.#O.....#
 | 
				
			||||||
 | 
					...O.O.OO.O##OO..O.OO.......#O#O#..O#...O.#O.....#.....#.OO.#..#....O..OO.O.....O....O..#.OO.......O
 | 
				
			||||||
 | 
					O#..........O.#..OO...#OOO.O..O.##..#O##O.O.#O#.OO.O.O#...O#...OOO#.O.OO.O.#O..#O.#.......##O..O...O
 | 
				
			||||||
 | 
					.#.O.....#..O#....O.###.....##...O.....................O....OO#..O#.#.#...O....##...O.#...O..#.O##.#
 | 
				
			||||||
 | 
					..O...#...O#.#.O.O.O...O.......OO#.#........O...##.O...#..##..OO.#..O.#.#.O..OO....O.O..#...#O.O#.#.
 | 
				
			||||||
 | 
					....OOO#.O#...#...O#.O.OOO...##.....O...OO...O..OOO.O.O.O..##.#O#.#O.O...#O..O..#.#..OOOO..O.#.O#...
 | 
				
			||||||
 | 
					.O............#....#..OO...#..OO.OO....O..O.OOO......O....O#OO....#............#.OO#.O##.O#O..OOO.#O
 | 
				
			||||||
 | 
					.O......O.#.#.#..O.......O.........#O.O...#O#...#.OO...#...#.O..O..O.O.#.O.O.....#.#......##.O.O...O
 | 
				
			||||||
 | 
					...O..O.........#O..O.O..O###O#..#..#OO#OO..#O.#.....##..OO...OOO#...#O.........OOO.OO.##..#O.O..O.O
 | 
				
			||||||
 | 
					.#.##.#.#OOO#.OO.O.O#OO#O....O..#...O.......O.#.....##...#O..O.O...#..##O......OO.OOO..O...#.#.O#O..
 | 
				
			||||||
 | 
					.#.O##O#...#.O.#O..OO##....##O................#..#..#..#.O....#....#.#.#..#O..#...O.#O..#...O...OO..
 | 
				
			||||||
 | 
					.....O.......O##......OO..#...O...#.O..O..O#.O..##..#.O..#....#.O.#O....O..OO.#OO.#..#...#.O...OO.O.
 | 
				
			||||||
 | 
					..#O.###...O..###O..#..#....OO...O.O....O.#O#.#O..O..O..#..#..#....#..O.OOO...O.#O.....O..O....O.OO.
 | 
				
			||||||
 | 
					.O#....O.##O..........O.#OO..O...O...#..##.OO...#.#..OO.O.....##O..OO...O...OOO..#.#....OO..#OO.O...
 | 
				
			||||||
 | 
					O....O.#O#O....OO.......O..O.O.....O...#.O..#.OO..OO.....#....O...OO.##...O.....#O..O...O##.O.#O...#
 | 
				
			||||||
 | 
					O...#..O....#.O.O..O#.....O..#.OO#O#OO##O##...O.O.....O...#...O...OOO...O#O...O.#OO.##..O..##O.O#...
 | 
				
			||||||
 | 
					.#O..#O#..#.#........O..O#.......#...O.....O....O...O#..#.#..#...#.....#...#.#.....OO...O.##O.......
 | 
				
			||||||
 | 
					O#........O#...O.O.##...O.OOO.........##..........#O#............O...O.#O.O#.#.#.#.O..#....#........
 | 
				
			||||||
 | 
					.........#.#......##OOO....O.#O....OO..O....O.##....#......O.O........#O..#.O....##.........#.O.#...
 | 
				
			||||||
 | 
					#.#.O..O....OO#......#.O#....#O..OO..O.....O..#.#O#.O.##O....O......#O......OOO....#O.#OO....O.O..##
 | 
				
			||||||
 | 
					OO.O.##O.....O#....O.O#....O..###.O.O...O..#...O..#O....O..#OO...O...##.....O.#OO.....O...#O.O..#..O
 | 
				
			||||||
 | 
					.OOO#...O..#O..O......OOO..O..O...#.O.O#...OO.......O.O.O##...#O..O.......##....O#.OO###.....O...O.O
 | 
				
			||||||
 | 
					.O..O...#O.#....##.O.O.O.#......O.O.#.O#.O###....O...O..#..O#......O.........OO...OOO..#.O.....O....
 | 
				
			||||||
 | 
					.O...##...O#.........O..O.O....O...#..#.....O.#..O.#O..O.#.O....#..O..#....#.#.OOO...O#...#O#.#O..#.
 | 
				
			||||||
 | 
					#.#........O#.#.O.O.#.#.OOO.#.#.#O.#....#O.#.O..#..........#O..O#.##..O#O#.O.OOO..##..O....O.#.OO...
 | 
				
			||||||
 | 
					O..O..O.........#OO.#....#....O..O#O..O#....O..O.O.........O............OOOO..OO#.O#......O..#.#..#.
 | 
				
			||||||
 | 
					#..O.....#........O.....O....O#O##..O.O...##..#O.#.OO..#......#.#..O.......#....O..O.....#..O.....O.
 | 
				
			||||||
 | 
					..O.#.##...O..##O.....#..........O........#.#.#O..O.OO..OO.....O.....O..OO..OOO.#.#.O#.....#.#..O#.#
 | 
				
			||||||
 | 
					.................O...O.#.....#...O#....OO..#O...O....OO.OOO.##..##..O........#O#O..#....#.....#....#
 | 
				
			||||||
 | 
					..#.#..O....##.#O.....#.OOO.O.O....O#..O....OO......O.#.O#...#.#.O...O....#.......#O.O.#O.O.##.##.#O
 | 
				
			||||||
 | 
					..O..O.....#O........#O....#.#.........O.#....O..O.#.O...O#.O.#......O...O..#.......#O....##...##...
 | 
				
			||||||
 | 
					....OO.#......O...O#...#....##.#.O..#.O#.O#..O#....##.O#...O..O.....#.#..#O.#.....##O#.O#..O.O....#.
 | 
				
			||||||
 | 
					#..O..#..........#..O##O....#.#..O#...O..O.##.....OO..#...##O..####....O.......#........O.O....O.O..
 | 
				
			||||||
 | 
					.#.OO#.O.O...#OO.O#.O.#.#....O..#...OO..O.....#O.....#..##...O..###OO..O....#..O#..#O...O..O..#O...#
 | 
				
			||||||
 | 
					#..#OO#..O#.....#O..O.O.O...#.O..OO.O.O#..#....#O..O.OO........##..O......O#...OO#...#.....OO..#.#..
 | 
				
			||||||
 | 
					.#.##.O.O..O.....OOO..OOO..#..OO#...##.O.O.#..#..O.....O#...O.#...O.......O#.#.#O#...O..#...##...O..
 | 
				
			||||||
 | 
					.#..O..#.O.##O..O#.O.O....#.##....#.OO#.....##..OO#.#O.#.#...O#....OOOOO...O#.....##......O.........
 | 
				
			||||||
 | 
					.....###......#O...OO..O#.O.....O.#O.....#O##.#.##..#..#O..OO##..O...OO..O####O....O...O..O.#.O#.#..
 | 
				
			||||||
 | 
					.O#..O.O.O...#O..#..#....###..##...O.OOO.....O.#..O#.O.OO.O..O#...#.O...#.O#.O#.....#.OO..OO#..OO.O.
 | 
				
			||||||
 | 
					#....O#...#.......O........#....O##.O#......O........O#.O...OO...O#.#.O...OO..O............OO...OO.#
 | 
				
			||||||
 | 
					#.##...#O..OO...#.....#.O..O.O....O..O.....#O.OO.O...O.O.OO.##.O......#O.#.#O.#.O....O.OOO...O#O..O.
 | 
				
			||||||
 | 
					..#.#OOO.O...#..O.O#O.O...#.#..........#.O.##.O.##.O....###.#.#...#.O........#...#.O......O..#.OO...
 | 
				
			||||||
 | 
					OOO......##.....#....O......O.....#O#O...O......OOO.O.O....OO##O#.OOO#..O..O.#.#...O....#.O.O..O..##
 | 
				
			||||||
 | 
					.....O.#....#.##O.OOO.O.....O.#O..#O...#....OO.#..#.O..OO.O.##...O#...O.O##.O......O.#..O#O.OOO....O
 | 
				
			||||||
 | 
					#O..#...#..O...O.O.O...#..OOO..O.O..#...#.#..O.O#...O.......OO...O.##O...O#.....O.O....O..O.O.#.#O..
 | 
				
			||||||
 | 
					..O...#...O#......O....OO...#.#..#.O...#...O.O...O.O.......O....O...O..#....O...O.....##..O.#...#.#.
 | 
				
			||||||
 | 
					.#....#O#OO...O....##.#.O.O...O#........##.O.#...OO...O#.....O.......O.O.O##....#..OOO..........#...
 | 
				
			||||||
 | 
					...#..O....O#......O...##O.#.O.O.OO.O.#......##.O..O......O..O.#..O....O.....#O##...#.#O.OO.#O#.###.
 | 
				
			||||||
 | 
					#...#...#O.....#...O###......O#O..O.O.....O....O....#O....O#..#.O..OO###....O...O#......O.#O#....O..
 | 
				
			||||||
 | 
					#.....#OOO##.....O...#.O.##O..##.O......#OO.O..#.........O#.O.#.O....O#OO.O.OO..O##O#.......O.....O.
 | 
				
			||||||
 | 
					.#..#..#O.OOO.#...###.O...#..OO#.OOO#................O...O.O.........O.....#...#O.OO...O...#O.#..O.#
 | 
				
			||||||
 | 
					.O#O..#.#O....O..O.#.....O....#.O#O.O...#.OO..O.#........#...O...O.O....O#O......OOO.O.....O#.#O..O.
 | 
				
			||||||
 | 
					#.#.O#..O...#O..#....O.........O....##...#.#..#.O.#OO...O...O.#...#.....O#..O#.O#.O..OOO.O....O..O..
 | 
				
			||||||
 | 
					O..O.......#O#O.O......O.O....O#OOO.....##O....#.##..#.OOOO....#..O....#...#.O...#O.....#O#O..O..#..
 | 
				
			||||||
 | 
					..#...O.#.O#.O.O#.O....#.#....#.#...O.#O.##..O.#.....O...#...#....O.#..O#..#.#OOO#..OO.#.#O.#..O#..#
 | 
				
			||||||
 | 
					.OO.O..#.#..#.#..#O.O....#O..#O.......#.#.O.#.#.#.##..#.#O.#.O..#.O...O.#..#...O..O......##.......O.
 | 
				
			||||||
 | 
					...O.O..O.O.O.#.O#.O......O.O#.O#....OO......#O.#.O......O.OO.#O....O#........#..#..O.O#.#O#O..#...#
 | 
				
			||||||
 | 
					...#..O....#OO.OO#.OO.#.....OOO.OO##OO#......O....O......#O#.#.O..O....O..O.O..#O...#......#........
 | 
				
			||||||
 | 
					......#.....O#.O..#..O......O##.#.O........##.##...OOOO..#...#.O...#..OO.O.#.#.O.#...#.#OO#O....##..
 | 
				
			||||||
 | 
					.OO....#...O.#....O......#.O....O.....#.O..O.#.O....O.O#OO.O.O.#............#.#O#..##O..O.#..#.O##..
 | 
				
			||||||
 | 
					#.O#..#.#O..OO#O.O##..O...#.#O.....O..O.##....#.#...O.O....O.#...O..O#.#.OO..OOO..O..O.O.#..OO#...#.
 | 
				
			||||||
 | 
					....#.O..OO..O.##.O.#O..O.O.O..#..#.O.O....###O..#OO#....#.........O.###.O...O#.O...O#.#.O#O.O#OO.O.
 | 
				
			||||||
 | 
					O.#......O...OO.#.#.O..#.O............O#.O#O........#..O.#O#.#.#..O.OO..#.OO#.O.#.#O###..##..##.....
 | 
				
			||||||
 | 
					..O#O....O...#....................O#..#.O.#....O.#OOO...O.OOO.#..#..O##.O...O.....O.#.OO.....O..#..#
 | 
				
			||||||
 | 
					#.O....##O..##...#.#.OO...#.......#.#........#####.O.O......##.....#...........O#OO.O..#....O...O#..
 | 
				
			||||||
 | 
					..........#.O.#.#.#OOO.O..O.O.O.#O...#..O#....O..O##.O..#O...OO#O..OOO..OO#O#.O.....O..O##.O...#....
 | 
				
			||||||
 | 
					O###...O#.O......##O#..O#.........OO...O#O#O..#O#O..#O#O.#..#OO.#...##..##..#.#...#O.O....O...O....#
 | 
				
			||||||
 | 
					.#.....O#OO.O#.#.OOO#.#.#.#...O.#..##.##...O.OO.O.....O..##..O.......O..#...O....##OO#..O#.OOO.#.##.
 | 
				
			||||||
							
								
								
									
										1
									
								
								src/input/day15/input.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/input/day15/input.txt
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@ -10,6 +10,8 @@ mod day08;
 | 
				
			|||||||
mod day09;
 | 
					mod day09;
 | 
				
			||||||
mod day10;
 | 
					mod day10;
 | 
				
			||||||
mod day11;
 | 
					mod day11;
 | 
				
			||||||
 | 
					mod day14;
 | 
				
			||||||
 | 
					mod day15;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const CONTENT01: &'static str = include_str!("input/day01/input.txt");
 | 
					const CONTENT01: &'static str = include_str!("input/day01/input.txt");
 | 
				
			||||||
const CONTENT02: &'static str = include_str!("input/day02/input.txt");
 | 
					const CONTENT02: &'static str = include_str!("input/day02/input.txt");
 | 
				
			||||||
@ -22,6 +24,8 @@ const CONTENT08: &'static str = include_str!("input/day08/input.txt");
 | 
				
			|||||||
const CONTENT09: &'static str = include_str!("input/day09/input.txt");
 | 
					const CONTENT09: &'static str = include_str!("input/day09/input.txt");
 | 
				
			||||||
const CONTENT10: &'static str = include_str!("input/day10/input.txt");
 | 
					const CONTENT10: &'static str = include_str!("input/day10/input.txt");
 | 
				
			||||||
const CONTENT11: &'static str = include_str!("input/day11/input.txt");
 | 
					const CONTENT11: &'static str = include_str!("input/day11/input.txt");
 | 
				
			||||||
 | 
					const CONTENT14: &'static str = include_str!("input/day14/input.txt");
 | 
				
			||||||
 | 
					const CONTENT15: &'static str = include_str!("input/day15/input.txt");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn main() {
 | 
					fn main() {
 | 
				
			||||||
    day01::execute_task01(CONTENT01);
 | 
					    day01::execute_task01(CONTENT01);
 | 
				
			||||||
@ -56,4 +60,7 @@ fn main() {
 | 
				
			|||||||
    println!();
 | 
					    println!();
 | 
				
			||||||
    day11::execute_task01(CONTENT11);
 | 
					    day11::execute_task01(CONTENT11);
 | 
				
			||||||
    day11::execute_task02(CONTENT11);
 | 
					    day11::execute_task02(CONTENT11);
 | 
				
			||||||
 | 
					    println!();
 | 
				
			||||||
 | 
					    day15::execute_task01(CONTENT15);
 | 
				
			||||||
 | 
					    day15::execute_task02(CONTENT15);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user