diff options
-rw-r--r-- | 06/src/main.rs | 3 | ||||
-rw-r--r-- | lib/src/lib.rs | 23 |
2 files changed, 22 insertions, 4 deletions
diff --git a/06/src/main.rs b/06/src/main.rs index 72e4f1d..00d065c 100644 --- a/06/src/main.rs +++ b/06/src/main.rs @@ -12,7 +12,8 @@ fn main() -> Result<()> { let filename = args.next().unwrap(); let input = advent_lib::read_lines_file(&filename)?; - let groups = advent_lib::group_lines_by_blanks(input)?; + let trimmed = advent_lib::trim_lines(&input); + let groups = advent_lib::group_lines_by_blanks(trimmed); let mut unioned_sum = 0; diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 0272485..5f87317 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -36,12 +36,29 @@ pub fn read_lines_file(filename: &str) -> Result<Vec<String>> { Ok(input) } -pub fn group_lines_by_blanks(lines: Vec<String>) -> Result<Vec<Vec<String>>> { +pub fn trim_lines<'a>(lines: &'a Vec<String>) -> Vec<&str> { + let mut trimmed_lines = Vec::new(); + + for line in lines { + match line.strip_suffix("\n") { + Some(stripped) => { + trimmed_lines.push(stripped); + } + None => { + trimmed_lines.push(line); + } + } + } + + trimmed_lines +} + +pub fn group_lines_by_blanks(lines: Vec<&str>) -> Vec<Vec<&str>> { let mut all_groups = Vec::new(); let mut current_group = Vec::new(); for line in lines { - if line.trim().len() == 0 { + if line.len() == 0 { all_groups.push(current_group); current_group = Vec::new(); } else { @@ -53,7 +70,7 @@ pub fn group_lines_by_blanks(lines: Vec<String>) -> Result<Vec<Vec<String>>> { all_groups.push(current_group); } - Ok(all_groups) + all_groups } pub fn read_int_file(filename: &str) -> Result<Vec<i64>> { |