diff options
Diffstat (limited to 'src/day8pt1.rs')
| -rw-r--r-- | src/day8pt1.rs | 36 |
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); +} |
