Day 16. Didn't finish. Actually barely started. See you next year!
parent
207752ab3c
commit
11a2064d5e
@ -0,0 +1,42 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "0.7.20"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day16"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"regex",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.7.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.6.28"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
|
@ -0,0 +1,9 @@
|
|||||||
|
[package]
|
||||||
|
name = "day16"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
regex = "1.7.0"
|
@ -0,0 +1,60 @@
|
|||||||
|
Valve NQ has flow rate=0; tunnels lead to valves SU, XD
|
||||||
|
Valve AB has flow rate=0; tunnels lead to valves XD, TE
|
||||||
|
Valve IA has flow rate=0; tunnels lead to valves CS, WF
|
||||||
|
Valve WD has flow rate=0; tunnels lead to valves DW, II
|
||||||
|
Valve XD has flow rate=10; tunnels lead to valves AB, NQ, VT, SC, MU
|
||||||
|
Valve SL has flow rate=0; tunnels lead to valves RP, DS
|
||||||
|
Valve FQ has flow rate=15; tunnels lead to valves EI, YC
|
||||||
|
Valve KF has flow rate=0; tunnels lead to valves FL, QP
|
||||||
|
Valve QP has flow rate=0; tunnels lead to valves KF, RP
|
||||||
|
Valve DS has flow rate=0; tunnels lead to valves SL, AA
|
||||||
|
Valve IK has flow rate=0; tunnels lead to valves XC, AA
|
||||||
|
Valve HQ has flow rate=0; tunnels lead to valves VM, WV
|
||||||
|
Valve WR has flow rate=0; tunnels lead to valves WV, HF
|
||||||
|
Valve HH has flow rate=20; tunnels lead to valves PI, CF, CN, NF, AR
|
||||||
|
Valve DW has flow rate=19; tunnels lead to valves KD, WD, HS
|
||||||
|
Valve RP has flow rate=14; tunnels lead to valves SL, QP, BH, LI, WP
|
||||||
|
Valve EC has flow rate=0; tunnels lead to valves NF, XC
|
||||||
|
Valve AA has flow rate=0; tunnels lead to valves NH, ES, UC, IK, DS
|
||||||
|
Valve VM has flow rate=18; tunnel leads to valve HQ
|
||||||
|
Valve NF has flow rate=0; tunnels lead to valves HH, EC
|
||||||
|
Valve PS has flow rate=0; tunnels lead to valves AR, SU
|
||||||
|
Valve IL has flow rate=0; tunnels lead to valves XC, KZ
|
||||||
|
Valve WP has flow rate=0; tunnels lead to valves CS, RP
|
||||||
|
Valve WF has flow rate=0; tunnels lead to valves FL, IA
|
||||||
|
Valve XW has flow rate=0; tunnels lead to valves OL, NL
|
||||||
|
Valve EH has flow rate=0; tunnels lead to valves UK, YR
|
||||||
|
Valve UC has flow rate=0; tunnels lead to valves AA, FL
|
||||||
|
Valve CS has flow rate=3; tunnels lead to valves IA, CN, LD, RJ, WP
|
||||||
|
Valve AR has flow rate=0; tunnels lead to valves PS, HH
|
||||||
|
Valve CF has flow rate=0; tunnels lead to valves HH, FL
|
||||||
|
Valve NH has flow rate=0; tunnels lead to valves AA, LD
|
||||||
|
Valve RJ has flow rate=0; tunnels lead to valves DJ, CS
|
||||||
|
Valve XC has flow rate=17; tunnels lead to valves IL, EC, YR, IK, DJ
|
||||||
|
Valve TE has flow rate=24; tunnels lead to valves AB, YA
|
||||||
|
Valve CN has flow rate=0; tunnels lead to valves HH, CS
|
||||||
|
Valve KD has flow rate=0; tunnels lead to valves DW, UK
|
||||||
|
Valve SC has flow rate=0; tunnels lead to valves EI, XD
|
||||||
|
Valve MU has flow rate=0; tunnels lead to valves XD, YP
|
||||||
|
Valve SU has flow rate=22; tunnels lead to valves PS, LI, II, NQ
|
||||||
|
Valve FL has flow rate=8; tunnels lead to valves KF, WF, CF, UC, HS
|
||||||
|
Valve OL has flow rate=4; tunnels lead to valves KZ, HF, XW
|
||||||
|
Valve EI has flow rate=0; tunnels lead to valves FQ, SC
|
||||||
|
Valve NL has flow rate=0; tunnels lead to valves XW, UK
|
||||||
|
Valve YP has flow rate=21; tunnels lead to valves YA, MU, YC
|
||||||
|
Valve BH has flow rate=0; tunnels lead to valves VT, RP
|
||||||
|
Valve II has flow rate=0; tunnels lead to valves SU, WD
|
||||||
|
Valve YA has flow rate=0; tunnels lead to valves TE, YP
|
||||||
|
Valve HS has flow rate=0; tunnels lead to valves FL, DW
|
||||||
|
Valve DJ has flow rate=0; tunnels lead to valves RJ, XC
|
||||||
|
Valve KZ has flow rate=0; tunnels lead to valves OL, IL
|
||||||
|
Valve YR has flow rate=0; tunnels lead to valves EH, XC
|
||||||
|
Valve UK has flow rate=7; tunnels lead to valves KD, NL, EH
|
||||||
|
Valve YC has flow rate=0; tunnels lead to valves FQ, YP
|
||||||
|
Valve ES has flow rate=0; tunnels lead to valves PI, AA
|
||||||
|
Valve LI has flow rate=0; tunnels lead to valves SU, RP
|
||||||
|
Valve LD has flow rate=0; tunnels lead to valves NH, CS
|
||||||
|
Valve VT has flow rate=0; tunnels lead to valves BH, XD
|
||||||
|
Valve PI has flow rate=0; tunnels lead to valves ES, HH
|
||||||
|
Valve WV has flow rate=11; tunnels lead to valves WR, HQ
|
||||||
|
Valve HF has flow rate=0; tunnels lead to valves OL, WR
|
@ -0,0 +1,58 @@
|
|||||||
|
use regex::Regex;
|
||||||
|
use std::collections::{HashMap, HashSet};
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Room<'a> {
|
||||||
|
valve: &'a str,
|
||||||
|
rate: u8,
|
||||||
|
tunnels: Vec<&'a str>,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let contents = std::fs::read_to_string("test.txt").expect("Failed to read file");
|
||||||
|
|
||||||
|
let mut hash: HashMap<&str, Room> = HashMap::new();
|
||||||
|
|
||||||
|
contents.lines().for_each(|l| parse(l, &mut hash));
|
||||||
|
println!("rooms {:?}", hash);
|
||||||
|
|
||||||
|
traverse(&mut hash, "AA");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse<'a>(str: &'a str, hash: &mut HashMap<&'a str, Room<'a>>) -> () {
|
||||||
|
let re = Regex::new(r"Valve (.*) has flow rate=(.*); tunnels? leads? to valves? (.*)").unwrap();
|
||||||
|
let c = re.captures(str).unwrap();
|
||||||
|
let valve = c.get(1).unwrap().as_str();
|
||||||
|
let rate = c.get(2).unwrap().as_str().parse().unwrap();
|
||||||
|
let tunnels = c
|
||||||
|
.get(3)
|
||||||
|
.unwrap()
|
||||||
|
.as_str()
|
||||||
|
.split(", ")
|
||||||
|
.collect::<Vec<&str>>();
|
||||||
|
hash.insert(
|
||||||
|
valve,
|
||||||
|
Room {
|
||||||
|
valve,
|
||||||
|
rate,
|
||||||
|
tunnels,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn traverse(hash: &mut HashMap<&str, Room>, start: &str) -> () {
|
||||||
|
let mut visited: HashSet<&str> = HashSet::new();
|
||||||
|
let cur = hash.get(start).unwrap();
|
||||||
|
|
||||||
|
// let mut max = 0;
|
||||||
|
let mut biggest = cur.tunnels.iter().fold((start, 0), |acc, r| {
|
||||||
|
let room = hash.get(r).unwrap();
|
||||||
|
if hash.get(r).unwrap().rate > max {
|
||||||
|
max = room.rate;
|
||||||
|
r
|
||||||
|
} else {
|
||||||
|
acc
|
||||||
|
}
|
||||||
|
});
|
||||||
|
println!("biggest {:?}", biggest);
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
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
|
Loading…
Reference in New Issue