Added day 15
This commit is contained in:
parent
e3d1d56d4c
commit
d8dab4ab95
|
@ -0,0 +1 @@
|
|||
5,1,9,18,13,8,0
|
|
@ -1,4 +1 @@
|
|||
mask = 000000000000000000000000000000X1001X
|
||||
mem[42] = 100
|
||||
mask = 00000000000000000000000000000000X0XX
|
||||
mem[26] = 1
|
||||
0,3,6
|
||||
|
|
|
@ -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(())
|
||||
}
|
Loading…
Reference in New Issue