summaryrefslogtreecommitdiffstats
path: root/src/util/parse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/parse.rs')
-rw-r--r--src/util/parse.rs20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/util/parse.rs b/src/util/parse.rs
index 054952a..903ad2f 100644
--- a/src/util/parse.rs
+++ b/src/util/parse.rs
@@ -1,11 +1,15 @@
-use std::io::{BufRead as _, Read as _};
+use crate::prelude::*;
-pub fn lines(fh: std::fs::File) -> impl Iterator<Item = String> {
+pub fn data(year: u16, day: u16) -> Result<File> {
+ File::open(format!("data/{}/{}.txt", year, day)).map_err(|e| anyhow!(e))
+}
+
+pub fn lines(fh: File) -> impl Iterator<Item = String> {
let fh = std::io::BufReader::new(fh);
fh.lines().map(|res| res.unwrap())
}
-pub fn split(fh: std::fs::File, sep: u8) -> impl Iterator<Item = String> {
+pub fn split(fh: File, sep: u8) -> impl Iterator<Item = String> {
let fh = std::io::BufReader::new(fh);
fh.split(sep)
.map(|res| String::from_utf8(res.unwrap()).unwrap())
@@ -15,11 +19,11 @@ pub fn ints(iter: impl Iterator<Item = String>) -> impl Iterator<Item = i64> {
iter.map(|s| s.trim().parse().unwrap())
}
-pub fn bytes(fh: std::fs::File) -> impl Iterator<Item = u8> {
+pub fn bytes(fh: File) -> impl Iterator<Item = u8> {
fh.bytes().map(|res| res.unwrap())
}
-pub fn string(fh: std::fs::File) -> String {
+pub fn string(fh: File) -> String {
let bytes: Vec<_> = bytes(fh).collect();
String::from_utf8(bytes).unwrap()
}
@@ -28,7 +32,7 @@ pub fn bool_grid(
lines: impl Iterator<Item = String>,
t: u8,
f: u8,
-) -> crate::util::grid::Grid<bool> {
+) -> Grid<bool> {
lines
.map(|s| {
s.as_bytes()
@@ -48,9 +52,7 @@ pub fn bool_grid(
.collect()
}
-pub fn digit_grid(
- lines: impl Iterator<Item = String>,
-) -> crate::util::grid::Grid<u8> {
+pub fn digit_grid(lines: impl Iterator<Item = String>) -> Grid<u8> {
lines
.map(|s| {
s.as_bytes()