setting up for 2024 day 6 and fixing some of the comments

This commit is contained in:
Dylan Thies
2024-12-05 16:23:47 -05:00
parent 25dedc74fa
commit fb33e62a56
8 changed files with 132 additions and 20 deletions

View File

@@ -41,8 +41,8 @@ pub enum Day2Part1Error {
ParseError, ParseError,
} }
/// Day-2 Part 1 for 2024 advent of code /// Day-3 Part 1 for 2024 advent of code
/// Problem can be found here: <https://adventofcode.com/2024/day/2> /// Problem can be found here: <https://adventofcode.com/2024/day/3>
/// ///
/// # Errors /// # Errors
/// - `ParseError` there was an issue with the parser /// - `ParseError` there was an issue with the parser

View File

@@ -19,7 +19,7 @@ pub enum Day5Part1Error {
type Orderings = HashMap<u32, Vec<u32>>; type Orderings = HashMap<u32, Vec<u32>>;
/// Day-5 Part 1 for 2024 advent of code /// Day-5 Part 1 for 2024 advent of code
/// Problem can be found here: <https://adventofcode.com/2024/day/3> /// Problem can be found here: <https://adventofcode.com/2024/day/5>
/// ///
/// # Errors /// # Errors
/// - `ParseError` there was an issue with the parser /// - `ParseError` there was an issue with the parser

View File

@@ -16,7 +16,7 @@ pub enum Day5Part2Error{
type Orderings = HashMap<u32, Vec<u32>>; type Orderings = HashMap<u32, Vec<u32>>;
/// Day-5 Part 2 for 2024 advent of code /// Day-5 Part 2 for 2024 advent of code
/// Problem can be found here: <https://adventofcode.com/2024/day/3> /// Problem can be found here: <https://adventofcode.com/2024/day/5#part2>
/// ///
/// # Errors /// # Errors
/// - `ParseError` there was an issue with the parser /// - `ParseError` there was an issue with the parser
@@ -55,22 +55,6 @@ pub fn part2 (input: &str) -> Result<String, Day5Part2Error> {
Ok(middles.to_string()) Ok(middles.to_string())
} }
/*
* --- Part Two ---
While the Elves get to work printing the correctly-ordered updates, you have a little time to fix the rest of them.
For each of the incorrectly-ordered updates, use the page ordering rules to put the page numbers in the right order. For the above example, here are the three incorrectly-ordered updates and their correct orderings:
75,97,47,61,53 becomes 97,75,47,61,53.
61,13,29 becomes 61,29,13.
97,13,75,29,47 becomes 97,75,47,29,13.
After taking only the incorrectly-ordered updates and ordering them correctly, their middle page numbers are 47, 29, and 47. Adding these together produces 123.
Find the updates which are not in the correct order. What do you get if you add up the middle page numbers after correctly ordering just those updates?
*/
fn parse_ordering(input: &str) -> IResult<&str, Orderings> { fn parse_ordering(input: &str) -> IResult<&str, Orderings> {
let (input, rules) = separated_list1( let (input, rules) = separated_list1(
complete::line_ending, complete::line_ending,

23
2024/day-6/Cargo.toml Normal file
View File

@@ -0,0 +1,23 @@
[package]
name = "day-6"
version.workspace = true
edition.workspace = true
authors.workspace = true
repository.workspace = true
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
nom.workspace = true
itertools.workspace = true
log.workspace = true
error-stack.workspace = true
thiserror.workspace = true
dhat.workspace = true
[dev-dependencies]
test-log.workspace = true
[features]
dhat-heap = []

4
2024/day-6/src/lib.rs Normal file
View File

@@ -0,0 +1,4 @@
pub mod part1;
pub use crate::part1::*;
pub mod part2;
pub use crate::part2::*;

31
2024/day-6/src/main.rs Normal file
View File

@@ -0,0 +1,31 @@
#![warn(clippy::all, clippy::pedantic)]
use day_6::part1;
use day_6::part2;
use error_stack::{Result, ResultExt};
use thiserror::Error;
#[cfg(feature = "dhat-heap")]
#[global_allocator]
static ALLOC: dhat::Alloc = dhat::Alloc;
#[derive(Debug, Error)]
enum Day6Error {
#[error("Part 1 failed")]
Part1Error,
#[error("Part 2 failed")]
Part2Error,
}
fn main() -> Result<(), Day6Error> {
#[cfg(feature = "dhat-heap")]
let _profiler = dhat::Profiler::new_heap();
let input = include_str!("./input.txt");
let part1_result = part1(input).change_context(Day6Error::Part1Error)?;
println!("part 1: {part1_result}");
let part2_result = part2(input).change_context(Day6Error::Part2Error)?;
println!("part 2: {part2_result}");
Ok(())
}

35
2024/day-6/src/part1.rs Normal file
View File

@@ -0,0 +1,35 @@
#![warn(clippy::all, clippy::pedantic)]
use error_stack::Result;
use thiserror::Error;
// day-6
#[derive(Debug, Error)]
pub enum Day6Part1Error{
#[error("Problem parsing Day 6")]
ParseError,
}
/// Day-6 Part 2 for 2024 advent of code
/// Problem can be found here: <https://adventofcode.com/2024/day/6>
///
/// # Errors
/// - `ParseError` there was an issue with the parser
pub fn part1 (_input: &str) -> Result<String, Day6Part1Error> {
Ok("Not Finished".to_string())
}
#[cfg(test)]
mod test {
use super::*;
const INPUT: &str = "";
#[test_log::test]
#[test_log(default_log_filter = "trace")]
fn part1_works() {
let result = part1(INPUT).unwrap();
assert_eq!(result, "Not Finished".to_string());
}
}

35
2024/day-6/src/part2.rs Normal file
View File

@@ -0,0 +1,35 @@
#![warn(clippy::all, clippy::pedantic)]
use error_stack::Result;
use thiserror::Error;
// day-6
#[derive(Debug, Error)]
pub enum Day6Part2Error{
#[error("Problem parsing Day 6")]
ParseError,
}
/// Day-6 Part 2 for 2024 advent of code
/// Problem can be found here: <https://adventofcode.com/2024/day/6#part2>
///
/// # Errors
/// - `ParseError` there was an issue with the parser
pub fn part2 (_input: &str) -> Result<String, Day6Part2Error> {
Ok("Not Finished".to_string())
}
#[cfg(test)]
mod test {
use super::*;
const INPUT: &str = "";
#[test_log::test]
#[test_log(default_log_filter = "trace")]
fn part2_works() {
let result = part2(INPUT).unwrap();
assert_eq!(result, "Not Finished".to_string());
}
}