From a0b969332b3ba0e7aa8f57b94d4ce0281afd329e Mon Sep 17 00:00:00 2001 From: JonOfUs Date: Fri, 8 Dec 2023 11:59:38 +0100 Subject: [PATCH] fmt --- src/days/d08.rs | 52 ++++++++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/src/days/d08.rs b/src/days/d08.rs index 1282e1a..1fafed3 100644 --- a/src/days/d08.rs +++ b/src/days/d08.rs @@ -1,6 +1,5 @@ use std::{collections::HashMap, fs}; - pub fn solve() { let path = "res/08/input"; @@ -10,10 +9,11 @@ pub fn solve() { let (instr_raw, map_raw) = contents.split_once("\n\n").unwrap(); let instr: Vec = instr_raw.chars().collect(); - let map: HashMap = map_raw + let map: HashMap = map_raw .lines() .map(|line| { - let (src, dst1, dst2) = scan_fmt!(line, "{} = ({}, {})", String, String, String).unwrap(); + let (src, dst1, dst2) = + scan_fmt!(line, "{} = ({}, {})", String, String, String).unwrap(); (src, (dst1, dst2)) }) @@ -21,46 +21,40 @@ pub fn solve() { let mut curr = String::from("AAA"); let mut i = 0; - while curr != String::from("ZZZ") { - dbg!(curr.as_str()); - curr = match instr[i % instr.len()] { + while curr != String::from("ZZZ") { + curr = match instr[i % instr.len()] { 'L' => map.get(curr.as_str()).unwrap().0.clone(), 'R' => map.get(curr.as_str()).unwrap().1.clone(), - _ => panic!() + _ => panic!(), }; - i+=1; - + i += 1; + } println!("Result 1: {}", i); - - let mut curr: Vec = map.keys() + let mut curr: Vec = map + .keys() .filter(|s| s.ends_with("A")) .map(|s| s.clone()) .collect(); let mut i = 0; let mut steps: Vec = vec![0; curr.len()]; while steps.iter().any(|s| *s == 0) { - (0..curr.len()) - .for_each(|j| { - if curr[j].ends_with("Z") && steps[j] == 0 { - steps[j] = i; - } else if steps[j] == 0 { - curr[j] = match instr[i % instr.len()] { - 'L' => map.get(curr[j].as_str()).unwrap().0.clone(), - 'R' => map.get(curr[j].as_str()).unwrap().1.clone(), - _ => panic!() - } + (0..curr.len()).for_each(|j| { + if curr[j].ends_with("Z") && steps[j] == 0 { + steps[j] = i; + } else if steps[j] == 0 { + curr[j] = match instr[i % instr.len()] { + 'L' => map.get(curr[j].as_str()).unwrap().0.clone(), + 'R' => map.get(curr[j].as_str()).unwrap().1.clone(), + _ => panic!(), } - }); - i+=1; + } + }); + i += 1; } - let result = steps.iter() - .fold(1, |x,y| { - num::integer::lcm(x,*y) - }); + let result = steps.iter().fold(1, |x, y| num::integer::lcm(x, *y)); println!("Result 2: {}", result); - -} \ No newline at end of file +}