update itertools

This commit is contained in:
Rüdiger Ludwig 2023-07-15 10:13:26 +02:00
parent 3b12de4970
commit 556b85e532
3 changed files with 10 additions and 17 deletions

3
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,3 @@
{
"editor.formatOnSave": true
}

View file

@ -6,7 +6,7 @@ edition = "2021"
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
itertools = "0.10" itertools = "0.11"
lazy_static = "1.4" lazy_static = "1.4"
num-traits = "0.2" num-traits = "0.2"
regex = "1.7" regex = "1.7"

View file

@ -1,27 +1,17 @@
use itertools::Itertools; use itertools::Itertools;
use std::{fs, io}; use std::{fs, io};
fn read_data(day_num: usize, file: &str) -> io::Result<String> { fn format_path(day_num: usize, file: &str) -> String {
fs::read_to_string(format!("data/day{day_num:02}/{file}")) format!("data/day{day_num:02}/{file}")
} }
pub fn read_lines(day_num: usize, file: &str) -> io::Result<Vec<String>> { pub fn read_lines(day_num: usize, file: &str) -> io::Result<Vec<String>> {
let lines = read_data(day_num, file)?; Ok(fs::read_to_string(format_path(day_num, file))?
let x = lines
.split('\n') .split('\n')
.with_position() .with_position()
.filter_map(|line| match line { .filter_map(|line| match line {
itertools::Position::First(line) (itertools::Position::Last, line) if line.is_empty() => None,
| itertools::Position::Middle(line) (_, line) => Some(line.to_string()),
| itertools::Position::Only(line) => Some(line.to_owned()),
itertools::Position::Last(line) => {
if line.is_empty() {
None
} else {
Some(line.to_owned())
}
}
}) })
.collect(); .collect())
Ok(x)
} }