diff --git a/rust/day5/src/main.rs b/rust/day5/src/main.rs index cb7827f..e9f7a60 100644 --- a/rust/day5/src/main.rs +++ b/rust/day5/src/main.rs @@ -66,7 +66,7 @@ fn analyse(str: &String) -> (u32, Vec<(u32, u32, u32)>, Vec>) { ) } -fn first_part(cmd: &Vec<(u32, u32, u32)>, crates: &Vec>) -> String +fn part(part_num: i32, cmd: &Vec<(u32, u32, u32)>, crates: &Vec>) -> String { // Algorithm let mut boxes = crates.clone(); @@ -76,6 +76,9 @@ fn first_part(cmd: &Vec<(u32, u32, u32)>, crates: &Vec>) -> String moving_crates.push(boxes[(operation.1-1) as usize].last().unwrap().to_owned()); boxes[(operation.1-1) as usize].pop(); } + if (operation.0 > 1) && (part_num ==2) { + moving_crates.reverse(); + } for mv in moving_crates { boxes[(operation.2-1) as usize].push(mv); } @@ -93,5 +96,6 @@ fn main() { let file_content = read_to_string("input").unwrap(); let (max, cmd, crates) = analyse(&file_content); println!("max = {}\ncmd = {:?}\ncrates = {:?}", max, cmd, crates); - println!("First part: {:?}", first_part(&cmd, &crates)); + println!("First part: {:?}", part(1, &cmd, &crates)); + println!("Second part: {:?}", part(2, &cmd, &crates)); }