M src/day01.rs => src/day01.rs +4 -4
@@ 1,4 1,4 @@
-use crate::utils::read_data;
+use crate::utils::parse_data;
use anyhow::Result;
fn count_incrementing_windows(window: usize, v: &[usize]) -> usize {
@@ 6,7 6,7 @@ fn count_incrementing_windows(window: usize, v: &[usize]) -> usize {
}
pub(crate) fn run() -> Result<(usize, usize)> {
- let data = read_data::<usize>("data/day01.txt")?;
+ let data = parse_data::<usize>(include_str!("../data/day01.txt"))?;
Ok((
count_incrementing_windows(1, &data),
count_incrementing_windows(3, &data),
@@ 19,14 19,14 @@ mod tests {
#[test]
fn test_example() {
- let data = read_data::<usize>("data/day01-test.txt").unwrap();
+ let data = parse_data::<usize>(include_str!("../data/day01-test.txt")).unwrap();
assert_eq!(count_incrementing_windows(1, &data), 7);
assert_eq!(count_incrementing_windows(3, &data), 5);
}
#[test]
fn test_my_data() {
- let data = read_data::<usize>("data/day01.txt").unwrap();
+ let data = parse_data::<usize>(include_str!("../data/day01.txt")).unwrap();
assert_eq!(count_incrementing_windows(1, &data), 1298);
assert_eq!(count_incrementing_windows(3, &data), 1248);
}
M src/day02.rs => src/day02.rs +7 -8
@@ 1,4 1,3 @@
-use crate::utils::read_file;
use anyhow::Result;
fn parse_line(s: &str) -> (&str, i32) {
@@ 34,7 33,7 @@ fn follow_course_better(s: &str) -> i32 {
}
pub(crate) fn run() -> Result<(usize, usize)> {
- let input = read_file("data/day02.txt")?;
+ let input = include_str!("../data/day02.txt");
Ok((
follow_course(&input) as usize,
follow_course_better(&input) as usize,
@@ 47,15 46,15 @@ mod tests {
#[test]
fn test_example() {
- let input = read_file("data/day02-test.txt").unwrap();
- assert_eq!(follow_course(&input), 150);
- assert_eq!(follow_course_better(&input), 900);
+ let input = include_str!("../data/day02-test.txt");
+ assert_eq!(follow_course(input), 150);
+ assert_eq!(follow_course_better(input), 900);
}
#[test]
fn test_my_data() {
- let input = read_file("data/day02.txt").unwrap();
- assert_eq!(follow_course(&input), 2070300);
- assert_eq!(follow_course_better(&input), 2078985210);
+ let input = include_str!("../data/day02.txt");
+ assert_eq!(follow_course(input), 2070300);
+ assert_eq!(follow_course_better(input), 2078985210);
}
}
M src/day03.rs => src/day03.rs +3 -4
@@ 1,4 1,3 @@
-use crate::utils::read_file;
use anyhow::Result;
fn strings_to_ints(s: &str) -> Vec<usize> {
@@ 89,7 88,7 @@ fn diagnose_lifesupport(s: &str) -> usize {
}
pub(crate) fn run() -> Result<(usize, usize)> {
- let input = read_file("data/day03.txt")?;
+ let input = include_str!("../data/day03.txt");
Ok((diagnose_power(&input), diagnose_lifesupport(&input)))
}
@@ 99,14 98,14 @@ mod tests {
#[test]
fn test_example() {
- let input = read_file("data/day03-test.txt").unwrap();
+ let input = include_str!("../data/day03-test.txt");
assert_eq!(diagnose_power(&input), 198);
assert_eq!(diagnose_lifesupport(&input), 230);
}
#[test]
fn test_my_data() {
- let input = read_file("data/day03.txt").unwrap();
+ let input = include_str!("../data/day03.txt");
assert_eq!(diagnose_power(&input), 4191876);
// assert_eq!(follow_course(&input), 2070300);
// assert_eq!(follow_course_better(&input), 2078985210);
M src/day04.rs => src/day04.rs +5 -6
@@ 1,4 1,3 @@
-use crate::utils::read_file;
use anyhow::Result;
#[derive(Debug)]
@@ 70,10 69,10 @@ fn find_winning_score(s: &str, first: bool) -> usize {
}
pub(crate) fn run() -> Result<(usize, usize)> {
- let input = read_file("data/day04.txt")?;
+ let input = include_str!("../data/day04.txt");
Ok((
- find_winning_score(&input, true),
- find_winning_score(&input, false),
+ find_winning_score(input, true),
+ find_winning_score(input, false),
))
}
#[cfg(test)]
@@ 82,14 81,14 @@ mod tests {
#[test]
fn test_example() {
- let input = read_file("data/day04-test.txt").unwrap();
+ let input = include_str!("../data/day04-test.txt");
assert_eq!(find_winning_score(&input, true), 4512);
assert_eq!(find_winning_score(&input, false), 1924);
}
#[test]
fn test_my_data() {
- let input = read_file("data/day04.txt").unwrap();
+ let input = include_str!("../data/day04.txt");
assert_eq!(find_winning_score(&input, true), 71708);
assert_eq!(find_winning_score(&input, false), 34726);
}
M src/utils.rs => src/utils.rs +1 -9
@@ 1,9 1,5 @@
use anyhow::Result;
-use std::{fs, str::FromStr};
-
-pub fn read_data<T: FromStr>(filename: &str) -> Result<Vec<T>> {
- parse_data(&read_file(filename)?)
-}
+use std::str::FromStr;
pub fn parse_data<T: FromStr>(s: &str) -> Result<Vec<T>> {
let mut ret = Vec::new();
@@ 16,7 12,3 @@ pub fn parse_data<T: FromStr>(s: &str) -> Result<Vec<T>> {
}
Ok(ret)
}
-
-pub fn read_file(filename: &str) -> Result<String> {
- Ok(fs::read_to_string(filename)?)
-}