diff --git a/.gitignore b/.gitignore index ea8c4bf..f280c7f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -/target +target +scratch/ +result diff --git a/Cargo.lock b/Cargo.lock index 5425169..f501024 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "advent" @@ -8,14 +8,14 @@ version = "0.1.0" dependencies = [ "core", "macros", - "y_2023", + "y_2024", ] [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -36,15 +36,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "regex" -version = "1.10.2" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -54,9 +54,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -65,16 +65,16 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "utils" version = "0.1.0" [[package]] -name = "y_2023" +name = "y_2024" version = "0.1.0" dependencies = [ "core", diff --git a/Cargo.toml b/Cargo.toml index f4b48e1..8cf6cea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ members = [ # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -y_2023 = { path = "years/2023" } +y_2024 = { path = "years/2024" } core = { path = "core" } macros = { path = "macros" } diff --git a/core/src/parser.rs b/core/src/parser.rs index 9c0b915..1c0c6ed 100644 --- a/core/src/parser.rs +++ b/core/src/parser.rs @@ -1,5 +1,7 @@ use std::env::args; use std::io::{stdin, Read}; +use std::fs; + #[derive(Clone, Debug)] pub enum Selection { All, @@ -102,7 +104,7 @@ pub fn get_ydp_and_input(args: Vec) -> (YDP, Option) { .expect("Failed to read input"); input.trim().to_string() } else { - i + fs::read_to_string(i).expect("Failed to read input file") } }); diff --git a/justfile b/justfile new file mode 100644 index 0000000..1b6a60b --- /dev/null +++ b/justfile @@ -0,0 +1,18 @@ + +_default: + cargo run --release -- solve * + +year := `date +%Y` +day := `date +%d` + +p P in="": + cargo run --release -- solve {{year}}:{{day}}:{{P}} {{in}} + +dp DP in="": + cargo run --release -- solve {{year}}:{{DP}} {{in}} + +dyp DYP in="": + cargo run --release -- solve {{DYP}} {{in}} + +prep: + cargo run --release -- new {{year}} diff --git a/src/main.rs b/src/main.rs index 432c5a2..4c80203 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ use core::{get_ydp_and_input, make_year, Selection, Year, DP, YDP}; use macros::global_runner; -global_runner!(2023); +global_runner!(2024); fn run_ydp(ydp: YDP, input: Option) { let dp = ydp.to_dp(); diff --git a/utils/src/grid.rs b/utils/src/grid.rs index ee208c1..c7bb748 100644 --- a/utils/src/grid.rs +++ b/utils/src/grid.rs @@ -393,7 +393,7 @@ impl Grid { &'a self, pos: Position, kernels: &'a [M], - ) -> impl Iterator + 'a { + ) -> impl Iterator + 'a { pos.relatives(kernels) .filter_map(move |(pos, dir)| self.get(pos).map(|v| (dir, pos, v))) } @@ -406,7 +406,7 @@ impl Grid { &'a self, pos: Position, kernels: &'a [M], - ) -> impl Iterator + 'a { + ) -> impl Iterator + 'a { pos.relatives(kernels) .map(move |(pos, dir)| (dir, pos, self.get_wrapped(pos))) } @@ -421,7 +421,7 @@ impl Grid { pos: Position, kernels: &'a [M], expand: usize, - ) -> impl Iterator + 'a { + ) -> impl Iterator + 'a { pos.relatives_expand_by(kernels, expand) .filter_map(move |(dir, pos)| self.get(pos).map(|v| (dir, pos, v))) } @@ -436,7 +436,7 @@ impl Grid { pos: Position, kernels: &'a [M], expand: usize, - ) -> impl Iterator + 'a { + ) -> impl Iterator + 'a { pos.relatives_expand_by(kernels, expand) .map(move |(dir, pos)| (dir, pos, self.get_wrapped(pos))) } diff --git a/utils/src/lib.rs b/utils/src/lib.rs index f122383..4d32b6f 100644 --- a/utils/src/lib.rs +++ b/utils/src/lib.rs @@ -7,7 +7,6 @@ pub mod pos; pub mod range; pub mod prelude { - pub use crate::day_utils::*; pub use crate::dir::*; pub use crate::geom; pub use crate::grid::cursors::*; diff --git a/years/2023/Cargo.toml b/years/2024/Cargo.toml similarity index 90% rename from years/2023/Cargo.toml rename to years/2024/Cargo.toml index d40e264..98195a6 100644 --- a/years/2023/Cargo.toml +++ b/years/2024/Cargo.toml @@ -1,6 +1,6 @@ [package] -name = "y_2023" +name = "y_2024" version = "0.1.0" edition = "2021" diff --git a/years/2023/src/day_1.rs b/years/2024/src/day_1.rs similarity index 88% rename from years/2023/src/day_1.rs rename to years/2024/src/day_1.rs index 3d2a3e3..c46d362 100644 --- a/years/2023/src/day_1.rs +++ b/years/2024/src/day_1.rs @@ -8,7 +8,7 @@ impl Day for Day1 { day_stuff!(1, "", ""); fn part_1(_input: Self::Input) -> Option { - None + Some(_input.to_string()) } fn part_2(_input: Self::Input) -> Option { diff --git a/years/2023/src/day_10.rs b/years/2024/src/day_10.rs similarity index 100% rename from years/2023/src/day_10.rs rename to years/2024/src/day_10.rs diff --git a/years/2023/src/day_11.rs b/years/2024/src/day_11.rs similarity index 100% rename from years/2023/src/day_11.rs rename to years/2024/src/day_11.rs diff --git a/years/2023/src/day_12.rs b/years/2024/src/day_12.rs similarity index 100% rename from years/2023/src/day_12.rs rename to years/2024/src/day_12.rs diff --git a/years/2023/src/day_13.rs b/years/2024/src/day_13.rs similarity index 100% rename from years/2023/src/day_13.rs rename to years/2024/src/day_13.rs diff --git a/years/2023/src/day_14.rs b/years/2024/src/day_14.rs similarity index 100% rename from years/2023/src/day_14.rs rename to years/2024/src/day_14.rs diff --git a/years/2023/src/day_15.rs b/years/2024/src/day_15.rs similarity index 100% rename from years/2023/src/day_15.rs rename to years/2024/src/day_15.rs diff --git a/years/2023/src/day_16.rs b/years/2024/src/day_16.rs similarity index 100% rename from years/2023/src/day_16.rs rename to years/2024/src/day_16.rs diff --git a/years/2023/src/day_17.rs b/years/2024/src/day_17.rs similarity index 100% rename from years/2023/src/day_17.rs rename to years/2024/src/day_17.rs diff --git a/years/2023/src/day_18.rs b/years/2024/src/day_18.rs similarity index 100% rename from years/2023/src/day_18.rs rename to years/2024/src/day_18.rs diff --git a/years/2023/src/day_19.rs b/years/2024/src/day_19.rs similarity index 100% rename from years/2023/src/day_19.rs rename to years/2024/src/day_19.rs diff --git a/years/2023/src/day_2.rs b/years/2024/src/day_2.rs similarity index 100% rename from years/2023/src/day_2.rs rename to years/2024/src/day_2.rs diff --git a/years/2023/src/day_20.rs b/years/2024/src/day_20.rs similarity index 100% rename from years/2023/src/day_20.rs rename to years/2024/src/day_20.rs diff --git a/years/2023/src/day_21.rs b/years/2024/src/day_21.rs similarity index 100% rename from years/2023/src/day_21.rs rename to years/2024/src/day_21.rs diff --git a/years/2023/src/day_22.rs b/years/2024/src/day_22.rs similarity index 100% rename from years/2023/src/day_22.rs rename to years/2024/src/day_22.rs diff --git a/years/2023/src/day_23.rs b/years/2024/src/day_23.rs similarity index 100% rename from years/2023/src/day_23.rs rename to years/2024/src/day_23.rs diff --git a/years/2023/src/day_24.rs b/years/2024/src/day_24.rs similarity index 100% rename from years/2023/src/day_24.rs rename to years/2024/src/day_24.rs diff --git a/years/2023/src/day_25.rs b/years/2024/src/day_25.rs similarity index 61% rename from years/2023/src/day_25.rs rename to years/2024/src/day_25.rs index e874621..12825e8 100644 --- a/years/2023/src/day_25.rs +++ b/years/2024/src/day_25.rs @@ -1,18 +1,17 @@ use core::{Day, day_stuff, ex_for_day}; -use utils::yippee; - pub struct Day25; impl Day for Day25 { - day_stuff!(25, "", "🥳"); + day_stuff!(25, "", ""); fn part_1(_input: Self::Input) -> Option { None } - yippee!(); - + fn part_2(_input: Self::Input) -> Option { + None + } } diff --git a/years/2023/src/day_3.rs b/years/2024/src/day_3.rs similarity index 100% rename from years/2023/src/day_3.rs rename to years/2024/src/day_3.rs diff --git a/years/2023/src/day_4.rs b/years/2024/src/day_4.rs similarity index 100% rename from years/2023/src/day_4.rs rename to years/2024/src/day_4.rs diff --git a/years/2023/src/day_5.rs b/years/2024/src/day_5.rs similarity index 100% rename from years/2023/src/day_5.rs rename to years/2024/src/day_5.rs diff --git a/years/2023/src/day_6.rs b/years/2024/src/day_6.rs similarity index 100% rename from years/2023/src/day_6.rs rename to years/2024/src/day_6.rs diff --git a/years/2023/src/day_7.rs b/years/2024/src/day_7.rs similarity index 100% rename from years/2023/src/day_7.rs rename to years/2024/src/day_7.rs diff --git a/years/2023/src/day_8.rs b/years/2024/src/day_8.rs similarity index 100% rename from years/2023/src/day_8.rs rename to years/2024/src/day_8.rs diff --git a/years/2023/src/day_9.rs b/years/2024/src/day_9.rs similarity index 100% rename from years/2023/src/day_9.rs rename to years/2024/src/day_9.rs diff --git a/years/2023/src/examples/day_1/1.txt b/years/2024/src/examples/day_1/1.txt similarity index 100% rename from years/2023/src/examples/day_1/1.txt rename to years/2024/src/examples/day_1/1.txt diff --git a/years/2023/src/examples/day_1/2.txt b/years/2024/src/examples/day_1/2.txt similarity index 100% rename from years/2023/src/examples/day_1/2.txt rename to years/2024/src/examples/day_1/2.txt diff --git a/years/2023/src/examples/day_10/1.txt b/years/2024/src/examples/day_10/1.txt similarity index 100% rename from years/2023/src/examples/day_10/1.txt rename to years/2024/src/examples/day_10/1.txt diff --git a/years/2023/src/examples/day_10/2.txt b/years/2024/src/examples/day_10/2.txt similarity index 100% rename from years/2023/src/examples/day_10/2.txt rename to years/2024/src/examples/day_10/2.txt diff --git a/years/2023/src/examples/day_11/1.txt b/years/2024/src/examples/day_11/1.txt similarity index 100% rename from years/2023/src/examples/day_11/1.txt rename to years/2024/src/examples/day_11/1.txt diff --git a/years/2023/src/examples/day_11/2.txt b/years/2024/src/examples/day_11/2.txt similarity index 100% rename from years/2023/src/examples/day_11/2.txt rename to years/2024/src/examples/day_11/2.txt diff --git a/years/2023/src/examples/day_12/1.txt b/years/2024/src/examples/day_12/1.txt similarity index 100% rename from years/2023/src/examples/day_12/1.txt rename to years/2024/src/examples/day_12/1.txt diff --git a/years/2023/src/examples/day_12/2.txt b/years/2024/src/examples/day_12/2.txt similarity index 100% rename from years/2023/src/examples/day_12/2.txt rename to years/2024/src/examples/day_12/2.txt diff --git a/years/2023/src/examples/day_13/1.txt b/years/2024/src/examples/day_13/1.txt similarity index 100% rename from years/2023/src/examples/day_13/1.txt rename to years/2024/src/examples/day_13/1.txt diff --git a/years/2023/src/examples/day_13/2.txt b/years/2024/src/examples/day_13/2.txt similarity index 100% rename from years/2023/src/examples/day_13/2.txt rename to years/2024/src/examples/day_13/2.txt diff --git a/years/2023/src/examples/day_14/1.txt b/years/2024/src/examples/day_14/1.txt similarity index 100% rename from years/2023/src/examples/day_14/1.txt rename to years/2024/src/examples/day_14/1.txt diff --git a/years/2023/src/examples/day_14/2.txt b/years/2024/src/examples/day_14/2.txt similarity index 100% rename from years/2023/src/examples/day_14/2.txt rename to years/2024/src/examples/day_14/2.txt diff --git a/years/2023/src/examples/day_15/1.txt b/years/2024/src/examples/day_15/1.txt similarity index 100% rename from years/2023/src/examples/day_15/1.txt rename to years/2024/src/examples/day_15/1.txt diff --git a/years/2023/src/examples/day_15/2.txt b/years/2024/src/examples/day_15/2.txt similarity index 100% rename from years/2023/src/examples/day_15/2.txt rename to years/2024/src/examples/day_15/2.txt diff --git a/years/2023/src/examples/day_16/1.txt b/years/2024/src/examples/day_16/1.txt similarity index 100% rename from years/2023/src/examples/day_16/1.txt rename to years/2024/src/examples/day_16/1.txt diff --git a/years/2023/src/examples/day_16/2.txt b/years/2024/src/examples/day_16/2.txt similarity index 100% rename from years/2023/src/examples/day_16/2.txt rename to years/2024/src/examples/day_16/2.txt diff --git a/years/2023/src/examples/day_17/1.txt b/years/2024/src/examples/day_17/1.txt similarity index 100% rename from years/2023/src/examples/day_17/1.txt rename to years/2024/src/examples/day_17/1.txt diff --git a/years/2023/src/examples/day_17/2.txt b/years/2024/src/examples/day_17/2.txt similarity index 100% rename from years/2023/src/examples/day_17/2.txt rename to years/2024/src/examples/day_17/2.txt diff --git a/years/2023/src/examples/day_18/1.txt b/years/2024/src/examples/day_18/1.txt similarity index 100% rename from years/2023/src/examples/day_18/1.txt rename to years/2024/src/examples/day_18/1.txt diff --git a/years/2023/src/examples/day_18/2.txt b/years/2024/src/examples/day_18/2.txt similarity index 100% rename from years/2023/src/examples/day_18/2.txt rename to years/2024/src/examples/day_18/2.txt diff --git a/years/2023/src/examples/day_19/1.txt b/years/2024/src/examples/day_19/1.txt similarity index 100% rename from years/2023/src/examples/day_19/1.txt rename to years/2024/src/examples/day_19/1.txt diff --git a/years/2023/src/examples/day_19/2.txt b/years/2024/src/examples/day_19/2.txt similarity index 100% rename from years/2023/src/examples/day_19/2.txt rename to years/2024/src/examples/day_19/2.txt diff --git a/years/2023/src/examples/day_2/1.txt b/years/2024/src/examples/day_2/1.txt similarity index 100% rename from years/2023/src/examples/day_2/1.txt rename to years/2024/src/examples/day_2/1.txt diff --git a/years/2023/src/examples/day_2/2.txt b/years/2024/src/examples/day_2/2.txt similarity index 100% rename from years/2023/src/examples/day_2/2.txt rename to years/2024/src/examples/day_2/2.txt diff --git a/years/2023/src/examples/day_20/1.txt b/years/2024/src/examples/day_20/1.txt similarity index 100% rename from years/2023/src/examples/day_20/1.txt rename to years/2024/src/examples/day_20/1.txt diff --git a/years/2023/src/examples/day_20/2.txt b/years/2024/src/examples/day_20/2.txt similarity index 100% rename from years/2023/src/examples/day_20/2.txt rename to years/2024/src/examples/day_20/2.txt diff --git a/years/2023/src/examples/day_21/1.txt b/years/2024/src/examples/day_21/1.txt similarity index 100% rename from years/2023/src/examples/day_21/1.txt rename to years/2024/src/examples/day_21/1.txt diff --git a/years/2023/src/examples/day_21/2.txt b/years/2024/src/examples/day_21/2.txt similarity index 100% rename from years/2023/src/examples/day_21/2.txt rename to years/2024/src/examples/day_21/2.txt diff --git a/years/2023/src/examples/day_22/1.txt b/years/2024/src/examples/day_22/1.txt similarity index 100% rename from years/2023/src/examples/day_22/1.txt rename to years/2024/src/examples/day_22/1.txt diff --git a/years/2023/src/examples/day_22/2.txt b/years/2024/src/examples/day_22/2.txt similarity index 100% rename from years/2023/src/examples/day_22/2.txt rename to years/2024/src/examples/day_22/2.txt diff --git a/years/2023/src/examples/day_23/1.txt b/years/2024/src/examples/day_23/1.txt similarity index 100% rename from years/2023/src/examples/day_23/1.txt rename to years/2024/src/examples/day_23/1.txt diff --git a/years/2023/src/examples/day_23/2.txt b/years/2024/src/examples/day_23/2.txt similarity index 100% rename from years/2023/src/examples/day_23/2.txt rename to years/2024/src/examples/day_23/2.txt diff --git a/years/2023/src/examples/day_24/1.txt b/years/2024/src/examples/day_24/1.txt similarity index 100% rename from years/2023/src/examples/day_24/1.txt rename to years/2024/src/examples/day_24/1.txt diff --git a/years/2023/src/examples/day_24/2.txt b/years/2024/src/examples/day_24/2.txt similarity index 100% rename from years/2023/src/examples/day_24/2.txt rename to years/2024/src/examples/day_24/2.txt diff --git a/years/2023/src/examples/day_25/1.txt b/years/2024/src/examples/day_25/1.txt similarity index 100% rename from years/2023/src/examples/day_25/1.txt rename to years/2024/src/examples/day_25/1.txt diff --git a/years/2023/src/examples/day_25/2.txt b/years/2024/src/examples/day_25/2.txt similarity index 100% rename from years/2023/src/examples/day_25/2.txt rename to years/2024/src/examples/day_25/2.txt diff --git a/years/2023/src/examples/day_3/1.txt b/years/2024/src/examples/day_3/1.txt similarity index 100% rename from years/2023/src/examples/day_3/1.txt rename to years/2024/src/examples/day_3/1.txt diff --git a/years/2023/src/examples/day_3/2.txt b/years/2024/src/examples/day_3/2.txt similarity index 100% rename from years/2023/src/examples/day_3/2.txt rename to years/2024/src/examples/day_3/2.txt diff --git a/years/2023/src/examples/day_4/1.txt b/years/2024/src/examples/day_4/1.txt similarity index 100% rename from years/2023/src/examples/day_4/1.txt rename to years/2024/src/examples/day_4/1.txt diff --git a/years/2023/src/examples/day_4/2.txt b/years/2024/src/examples/day_4/2.txt similarity index 100% rename from years/2023/src/examples/day_4/2.txt rename to years/2024/src/examples/day_4/2.txt diff --git a/years/2023/src/examples/day_5/1.txt b/years/2024/src/examples/day_5/1.txt similarity index 100% rename from years/2023/src/examples/day_5/1.txt rename to years/2024/src/examples/day_5/1.txt diff --git a/years/2023/src/examples/day_5/2.txt b/years/2024/src/examples/day_5/2.txt similarity index 100% rename from years/2023/src/examples/day_5/2.txt rename to years/2024/src/examples/day_5/2.txt diff --git a/years/2023/src/examples/day_6/1.txt b/years/2024/src/examples/day_6/1.txt similarity index 100% rename from years/2023/src/examples/day_6/1.txt rename to years/2024/src/examples/day_6/1.txt diff --git a/years/2023/src/examples/day_6/2.txt b/years/2024/src/examples/day_6/2.txt similarity index 100% rename from years/2023/src/examples/day_6/2.txt rename to years/2024/src/examples/day_6/2.txt diff --git a/years/2023/src/examples/day_7/1.txt b/years/2024/src/examples/day_7/1.txt similarity index 100% rename from years/2023/src/examples/day_7/1.txt rename to years/2024/src/examples/day_7/1.txt diff --git a/years/2023/src/examples/day_7/2.txt b/years/2024/src/examples/day_7/2.txt similarity index 100% rename from years/2023/src/examples/day_7/2.txt rename to years/2024/src/examples/day_7/2.txt diff --git a/years/2023/src/examples/day_8/1.txt b/years/2024/src/examples/day_8/1.txt similarity index 100% rename from years/2023/src/examples/day_8/1.txt rename to years/2024/src/examples/day_8/1.txt diff --git a/years/2023/src/examples/day_8/2.txt b/years/2024/src/examples/day_8/2.txt similarity index 100% rename from years/2023/src/examples/day_8/2.txt rename to years/2024/src/examples/day_8/2.txt diff --git a/years/2023/src/examples/day_9/1.txt b/years/2024/src/examples/day_9/1.txt similarity index 100% rename from years/2023/src/examples/day_9/1.txt rename to years/2024/src/examples/day_9/1.txt diff --git a/years/2023/src/examples/day_9/2.txt b/years/2024/src/examples/day_9/2.txt similarity index 100% rename from years/2023/src/examples/day_9/2.txt rename to years/2024/src/examples/day_9/2.txt diff --git a/years/2023/src/lib.rs b/years/2024/src/lib.rs similarity index 57% rename from years/2023/src/lib.rs rename to years/2024/src/lib.rs index 6b64316..7d9bffd 100644 --- a/years/2023/src/lib.rs +++ b/years/2024/src/lib.rs @@ -1,3 +1,4 @@ + use macros::year; -year!(2023); +year!(2024); diff --git a/years/2023/src/main.rs b/years/2024/src/main.rs similarity index 55% rename from years/2023/src/main.rs rename to years/2024/src/main.rs index 7500aad..bf8c77b 100644 --- a/years/2023/src/main.rs +++ b/years/2024/src/main.rs @@ -1,3 +1,4 @@ + use macros::year_runner; -year_runner!(2023); +year_runner!(2024); diff --git a/years/Cargo.toml b/years/Cargo.toml new file mode 100644 index 0000000..e69de29