aboutsummaryrefslogtreecommitdiff
path: root/src/day8pt1.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/day8pt1.rs')
-rw-r--r--src/day8pt1.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/day8pt1.rs b/src/day8pt1.rs
new file mode 100644
index 0000000..ece5fd9
--- /dev/null
+++ b/src/day8pt1.rs
@@ -0,0 +1,36 @@
+use regex::Regex;
+
+pub fn main() {
+ let txt = std::fs::read_to_string("./input/day8.txt").unwrap();
+ let input = txt.lines().collect::<Vec<_>>();
+
+ let instr = input[0];
+ let graf = (&input[2..input.len()])
+ .into_iter()
+ .map(|s| {
+ let re = Regex::new(r"=\s*|\(|\)|,").unwrap();
+ re.replace_all(s, "")
+ .split_whitespace()
+ .map(String::from)
+ .collect::<Vec<_>>()
+ })
+ .collect::<Vec<_>>();
+
+ let mut cnt: u32 = 0;
+ let mut trn = "AAA";
+ while trn != "ZZZ" {
+ for cvor in &graf {
+ if cvor[0] == trn {
+ if instr.chars().nth(cnt as usize % instr.len()).unwrap() == 'L' {
+ trn = cvor[1].as_str();
+ } else {
+ trn = cvor[2].as_str();
+ }
+ cnt += 1;
+ break;
+ }
+ }
+ }
+
+ println!("{}", cnt);
+}