Finished day11
This commit is contained in:
parent
2124a188a3
commit
983e9d3c6f
|
@ -0,0 +1,10 @@
|
||||||
|
4743378318
|
||||||
|
4664212844
|
||||||
|
2535667884
|
||||||
|
3273363861
|
||||||
|
2282432612
|
||||||
|
2166612134
|
||||||
|
3776334513
|
||||||
|
8123852583
|
||||||
|
8181786685
|
||||||
|
4362533174
|
|
@ -1,10 +1,10 @@
|
||||||
[({(<(())[]>[[{[]{<()<>>
|
5483143223
|
||||||
[(()[<>])]({[<{<<[]>>(
|
2745854711
|
||||||
{([(<{}[<>[]}>{[]{[(<()>
|
5264556173
|
||||||
(((({<>}<{<{<>}{[]{[]{}
|
6141336146
|
||||||
[[<[([]))<([[{}[[()]]]
|
6357385478
|
||||||
[{[{({}]{}}([{[{{{}}([]
|
4167524645
|
||||||
{<[[]]>}<{[{[{[]{()[[[]
|
2176841721
|
||||||
[<(<(<(<{}))><([]([]()
|
6882881134
|
||||||
<{([([[(<>()){}]>(<<{{
|
4846848554
|
||||||
<{([{{}}[<[[[<>{}]]]>[]]
|
5283751526
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
use std::error::Error;
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::{self, BufRead};
|
||||||
|
use std::vec::Vec;
|
||||||
|
|
||||||
|
fn flash(x: i32, y: i32, grid: &mut Vec<Vec<u32>>) {
|
||||||
|
for dy in [-1, 0, 1] {
|
||||||
|
for dx in [-1, 0, 1] {
|
||||||
|
if dx == 0 && dy == 0 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let ax = x + dx;
|
||||||
|
let ay = y + dy;
|
||||||
|
if ay < 0 || ay as usize >= grid.len() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ax < 0 || ax as usize >= grid[ay as usize].len() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if grid[ay as usize][ax as usize] > 0 {
|
||||||
|
grid[ay as usize][ax as usize] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
grid[y as usize][x as usize] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn print_grid(grid: &Vec<Vec<u32>>) {
|
||||||
|
for y in 0..grid.len() {
|
||||||
|
for x in 0..grid[y].len() {
|
||||||
|
print!("{}", grid[y][x]);
|
||||||
|
}
|
||||||
|
println!("");
|
||||||
|
}
|
||||||
|
println!();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> Result<(), Box<dyn Error>> {
|
||||||
|
let file = File::open("inputs/day11.txt")?;
|
||||||
|
let mut grid: Vec<Vec<u32>> = io::BufReader::new(file)
|
||||||
|
.lines()
|
||||||
|
.map(|l| {
|
||||||
|
l.unwrap()
|
||||||
|
.chars()
|
||||||
|
.map(|c| c.to_digit(10).unwrap())
|
||||||
|
.collect()
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let mut answer1 = 0;
|
||||||
|
let mut step = 0;
|
||||||
|
while grid.iter().any(|r| r.iter().any(|e| e > &0)) {
|
||||||
|
let mut next_grid: Vec<Vec<u32>> = grid
|
||||||
|
.iter()
|
||||||
|
.map(|r| r.iter().map(|e| e + 1).collect())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
while next_grid.iter().any(|r| r.iter().any(|e| e > &9)) {
|
||||||
|
for y in 0..next_grid.len() {
|
||||||
|
for x in 0..next_grid[y].len() {
|
||||||
|
if next_grid[y][x] > 9 {
|
||||||
|
flash(x as i32, y as i32, &mut next_grid);
|
||||||
|
if step < 100 {
|
||||||
|
answer1 += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grid = next_grid;
|
||||||
|
step += 1;
|
||||||
|
|
||||||
|
println!("Step {}", step);
|
||||||
|
print_grid(&grid);
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("Answer1: {}", answer1);
|
||||||
|
|
||||||
|
println!("Answer2: {}", step);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
Loading…
Reference in New Issue