From 364c247799dda032ec12e178ef01840950c0b24e Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Fri, 16 Dec 2022 14:38:55 +0100 Subject: [PATCH] 2022 day 16 wip --- 2022/rust/src/solutions/day16.rs | 41 +++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/2022/rust/src/solutions/day16.rs b/2022/rust/src/solutions/day16.rs index 469d652..c8037db 100644 --- a/2022/rust/src/solutions/day16.rs +++ b/2022/rust/src/solutions/day16.rs @@ -1,3 +1,4 @@ +use std::collections::{HashMap, HashSet}; use crate::utils; @@ -13,12 +14,46 @@ pub fn run() -> () { struct Valve<'data> { name: &'data str, - rate: u8, + rate: u32, next: Vec<&'data str> } -fn solve1(data: &[Valve]) -> i32 { +fn build_map<'data, 'a>(valves: &'a [Valve<'data>]) -> HashMap<&'data str, &'a Valve<'data>> { + valves.iter().map(|valve| (valve.name, valve)).collect() +} + +fn released_pressure<'data, 'a>(map: &'a HashMap<&'data str, Valve>, keys: &'a [&'data str]) -> u32 { + keys.iter() + .map(|&key| map.get(key).unwrap().rate) + .sum() +} + +fn valve_move<'data, 'a>( + map: &'a HashMap<&'data str, &'a Valve<'data>>, + open: HashSet<&'data str>, + next: &'data str, + time_left: u8, + released: u32, +) -> i32 { + todo!() +} + +fn valve_open<'data, 'a>( + valves: HashMap<&'data str, &'a Valve<'data>>, + open: HashSet<&'data str>, + next: &'data str, + time_left: u8, + released: u32, +) -> i32 { + todo!() +} + +fn solve1(data: &[Valve]) -> u32 { + let map = build_map(data); + + valve_move(&map, HashSet::new(), "AA", 30, 0); + println!("hi"); 1 } @@ -37,7 +72,7 @@ fn parse_data>(data: &[T]) -> Vec { .next().unwrap() .split(";") .next().unwrap() - .parse::().unwrap(); + .parse().unwrap(); let next = line.skip(4) .map(|str| str.split(",").next().unwrap()) .collect::>();