Added day 15

This commit is contained in:
Sebastian 2020-12-15 13:29:57 +01:00
parent e3d1d56d4c
commit d8dab4ab95
3 changed files with 42 additions and 4 deletions

1
inputs/day15.txt Normal file
View File

@ -0,0 +1 @@
5,1,9,18,13,8,0

View File

@ -1,4 +1 @@
mask = 000000000000000000000000000000X1001X
mem[42] = 100
mask = 00000000000000000000000000000000X0XX
mem[26] = 1
0,3,6

40
src/bin/day15.rs Normal file
View File

@ -0,0 +1,40 @@
use itertools::Itertools;
use std::collections::HashMap;
use std::error::Error;
use std::fs::File;
use std::io::{self, BufRead};
use std::vec::Vec;
fn main() -> Result<(), Box<dyn Error>> {
let file = File::open("inputs/day15.txt")?;
let mut lines = io::BufReader::new(file).lines();
let starting_numbers: Vec<u32> = lines
.nth(0)
.unwrap()
.unwrap()
.split(',')
.map(|n| n.parse().unwrap())
.collect();
let mut last_occurences: HashMap<u32, u32> = HashMap::new();
let mut last_number = *starting_numbers.first().unwrap();
for turn in 1..30000001 {
let spoken_number = if turn <= starting_numbers.len() {
starting_numbers[turn - 1]
} else if last_occurences.contains_key(&last_number) {
turn as u32 - last_occurences[&last_number]
} else {
0
};
last_occurences.insert(last_number, turn as u32);
//println!("Spoken number {} : {}", turn, spoken_number);
last_number = spoken_number;
}
println!("Last Number: {}", last_number);
Ok(())
}