diff --git a/2022/day3/Cargo.lock b/2022/day3/Cargo.lock new file mode 100644 index 0000000..4104d70 --- /dev/null +++ b/2022/day3/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "day3" +version = "0.1.0" diff --git a/2022/day3/Cargo.toml b/2022/day3/Cargo.toml new file mode 100644 index 0000000..898e70d --- /dev/null +++ b/2022/day3/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day3" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2022/aoc2022/data/day3-input.txt b/2022/day3/input.txt similarity index 100% rename from 2022/aoc2022/data/day3-input.txt rename to 2022/day3/input.txt diff --git a/2022/aoc2022/src/day3.rs b/2022/day3/src/main.rs similarity index 83% rename from 2022/aoc2022/src/day3.rs rename to 2022/day3/src/main.rs index c1cef3e..d962b17 100644 --- a/2022/aoc2022/src/day3.rs +++ b/2022/day3/src/main.rs @@ -1,9 +1,8 @@ use std::collections::HashSet; -use std::io::Result; +use std::env; +use std::fs; use std::iter::Iterator; -use crate::file::line_reader_for_file; - fn priority_items_in_knapsack(knapsack: &str) -> Vec { assert!(knapsack.len() % 2 == 0); @@ -28,16 +27,21 @@ fn badge_for_group(group: (&str, &str, &str)) -> Vec { ab_intersection.intersection(&c_set).map(|c| *c).collect() } -pub fn main(filename: &str) -> Result<()> { - let mut line_reader = line_reader_for_file(filename)?.peekable(); +fn main() { + let args: Vec = env::args().collect(); + + let filename = args.get(1).expect("Missing filename argument"); + + let file_contents = fs::read_to_string(&filename).expect("Unable to read file"); + let mut lines = file_contents.lines().peekable(); let mut priority_letters: Vec = Vec::new(); let mut badges: Vec = Vec::new(); - while line_reader.peek().is_some() { - let a = line_reader.next().unwrap()?; - let b = line_reader.next().unwrap()?; - let c = line_reader.next().unwrap()?; + while lines.peek().is_some() { + let a = lines.next().unwrap(); + let b = lines.next().unwrap(); + let c = lines.next().unwrap(); priority_letters.extend(priority_items_in_knapsack(&a)); priority_letters.extend(priority_items_in_knapsack(&b)); @@ -79,6 +83,4 @@ pub fn main(filename: &str) -> Result<()> { .sum(); println!("Part 2: sum of badges: {}", sum_of_badges); - - Ok(()) }