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
|
0,3,6
|
||||||
mem[42] = 100
|
|
||||||
mask = 00000000000000000000000000000000X0XX
|
|
||||||
mem[26] = 1
|
|
||||||
|
|
|
@ -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