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