From 02ec69902350f80c7d0da088da2faab9dae21a0d Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Thu, 12 Oct 2023 22:24:09 +0200 Subject: [PATCH] Day 3 Completed. --- rust/day3/exemple | 6 ++++++ rust/day3/src/main.rs | 38 +++++++++++++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 rust/day3/exemple diff --git a/rust/day3/exemple b/rust/day3/exemple new file mode 100644 index 0000000..9919ffa --- /dev/null +++ b/rust/day3/exemple @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw \ No newline at end of file diff --git a/rust/day3/src/main.rs b/rust/day3/src/main.rs index 550f409..e6b88a9 100644 --- a/rust/day3/src/main.rs +++ b/rust/day3/src/main.rs @@ -8,10 +8,10 @@ fn convert(num: u8) -> u8 { } } -fn main() { - let binding = read_to_string("input").unwrap(); - let file_content: Vec<&str> = binding.split("\r\n").collect(); +fn first_part(str: &String) { + let file_content: Vec<&str> = str.split("\r\n").collect(); let mut ruckstack: Vec = Vec::new(); + for con in &file_content { let splitted = con.split_at(con.len() / 2); let mut iter = splitted @@ -23,3 +23,35 @@ fn main() { } println!("Sum of the priorities : {}", ruckstack.iter().sum::()); } + +fn second_part(str: &String) { + let file_content: Vec<&str> = str.split("\r\n").collect(); + let mut ruckstack: Vec = Vec::new(); + let mut badge: Vec<[&str; 3]> = Vec::new(); + let mut j : i64 = -1; + + for (i, con) in file_content.iter().enumerate() { + if i%3 == 0 { + badge.push(["","",""]); + j +=1; + } + badge[j as usize][i%3] = con; + } + for strs in &badge { + //let badge_second = strs[1].to_owned()+&strs[2].to_owned(); + let iter : Vec = strs[0] + .chars() + .into_iter() + .filter(|ch| strs[1].find(*ch).is_some()) + .filter(|ch| strs[2].find(*ch).is_some()) + .collect(); + ruckstack.push(convert(iter[0] as u8) as u64); + } + println!("Sum of the badges : {}", ruckstack.iter().sum::()); +} + +fn main() { + let binding = read_to_string("input").unwrap(); + first_part(&binding); + second_part(&binding); +}