2022 day 16 parsing
This commit is contained in:
parent
bfe96fbdf5
commit
1522be4221
|
@ -17,5 +17,6 @@ fn main() {
|
|||
// solutions::day12::run();
|
||||
// solutions::day13::run();
|
||||
// solutions::day14::run();
|
||||
solutions::day15::run();
|
||||
// solutions::day15::run();
|
||||
solutions::day16::run();
|
||||
}
|
||||
|
|
78
2022/rust/src/solutions/day16.rs
Normal file
78
2022/rust/src/solutions/day16.rs
Normal file
|
@ -0,0 +1,78 @@
|
|||
use crate::utils;
|
||||
|
||||
|
||||
pub fn run() -> () {
|
||||
let lines = utils::read_lines(utils::Source::Day(-1));
|
||||
let data = parse_data(&lines);
|
||||
|
||||
println!("Day 16");
|
||||
println!("Part 1: {}", solve1(&data));
|
||||
println!("Part 2: {}", solve2(&data));
|
||||
}
|
||||
|
||||
|
||||
struct Valve<'data> {
|
||||
name: &'data str,
|
||||
rate: u8,
|
||||
next: Vec<&'data str>
|
||||
}
|
||||
|
||||
|
||||
fn solve1(data: &[Valve]) -> i32 {
|
||||
1
|
||||
}
|
||||
|
||||
fn solve2(data: &[Valve]) -> i32 {
|
||||
2
|
||||
}
|
||||
|
||||
|
||||
fn parse_data<T: AsRef<str>>(data: &[T]) -> Vec<Valve> {
|
||||
data.iter()
|
||||
.map(|line| {
|
||||
let mut line = line.as_ref().split(" ");;
|
||||
let name = line.nth(1).unwrap();
|
||||
let rate = line.nth(2).unwrap()
|
||||
.rsplit("=")
|
||||
.next().unwrap()
|
||||
.split(";")
|
||||
.next().unwrap()
|
||||
.parse::<u8>().unwrap();
|
||||
let next = line.skip(4)
|
||||
.map(|str| str.split(",").next().unwrap())
|
||||
.collect::<Vec<_>>();
|
||||
Valve { name, rate, next }
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
static DATA: &[&str] = &[
|
||||
"Valve AA has flow rate=0; tunnels lead to valves DD, II, BB",
|
||||
"Valve BB has flow rate=13; tunnels lead to valves CC, AA",
|
||||
"Valve CC has flow rate=2; tunnels lead to valves DD, BB",
|
||||
"Valve DD has flow rate=20; tunnels lead to valves CC, AA, EE",
|
||||
"Valve EE has flow rate=3; tunnels lead to valves FF, DD",
|
||||
"Valve FF has flow rate=0; tunnels lead to valves EE, GG",
|
||||
"Valve GG has flow rate=0; tunnels lead to valves FF, HH",
|
||||
"Valve HH has flow rate=22; tunnel leads to valve GG",
|
||||
"Valve II has flow rate=0; tunnels lead to valves AA, JJ",
|
||||
"Valve JJ has flow rate=21; tunnel leads to valve II"
|
||||
];
|
||||
|
||||
#[test]
|
||||
fn part1() {
|
||||
let data = parse_data(DATA);
|
||||
assert_eq!(1, solve1(&data));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part2() {
|
||||
let data = parse_data(DATA);
|
||||
assert_eq!(2, solve2(&data));
|
||||
}
|
||||
}
|
|
@ -13,3 +13,4 @@ pub mod day12;
|
|||
pub mod day13;
|
||||
pub mod day14;
|
||||
pub mod day15;
|
||||
pub mod day16;
|
||||
|
|
Loading…
Reference in a new issue