Advent of Code solutions
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Prep for 2024

Ben C eb5aae46 731a2bea

+57 -35
+3 -1
.gitignore
··· 1 - /target 1 + target 2 + scratch/ 3 + result
+13 -13
Cargo.lock
··· 1 1 # This file is automatically @generated by Cargo. 2 2 # It is not intended for manual editing. 3 - version = 3 3 + version = 4 4 4 5 5 [[package]] 6 6 name = "advent" ··· 8 8 dependencies = [ 9 9 "core", 10 10 "macros", 11 - "y_2023", 11 + "y_2024", 12 12 ] 13 13 14 14 [[package]] 15 15 name = "aho-corasick" 16 - version = "1.1.2" 16 + version = "1.1.3" 17 17 source = "registry+https://github.com/rust-lang/crates.io-index" 18 - checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" 18 + checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 19 19 dependencies = [ 20 20 "memchr", 21 21 ] ··· 36 36 37 37 [[package]] 38 38 name = "memchr" 39 - version = "2.6.4" 39 + version = "2.7.4" 40 40 source = "registry+https://github.com/rust-lang/crates.io-index" 41 - checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" 41 + checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 42 42 43 43 [[package]] 44 44 name = "regex" 45 - version = "1.10.2" 45 + version = "1.11.1" 46 46 source = "registry+https://github.com/rust-lang/crates.io-index" 47 - checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" 47 + checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 48 48 dependencies = [ 49 49 "aho-corasick", 50 50 "memchr", ··· 54 54 55 55 [[package]] 56 56 name = "regex-automata" 57 - version = "0.4.3" 57 + version = "0.4.9" 58 58 source = "registry+https://github.com/rust-lang/crates.io-index" 59 - checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" 59 + checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 60 60 dependencies = [ 61 61 "aho-corasick", 62 62 "memchr", ··· 65 65 66 66 [[package]] 67 67 name = "regex-syntax" 68 - version = "0.8.2" 68 + version = "0.8.5" 69 69 source = "registry+https://github.com/rust-lang/crates.io-index" 70 - checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" 70 + checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 71 71 72 72 [[package]] 73 73 name = "utils" 74 74 version = "0.1.0" 75 75 76 76 [[package]] 77 - name = "y_2023" 77 + name = "y_2024" 78 78 version = "0.1.0" 79 79 dependencies = [ 80 80 "core",
+1 -1
Cargo.toml
··· 15 15 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 16 16 17 17 [dependencies] 18 - y_2023 = { path = "years/2023" } 18 + y_2024 = { path = "years/2024" } 19 19 core = { path = "core" } 20 20 macros = { path = "macros" } 21 21
+3 -1
core/src/parser.rs
··· 1 1 use std::env::args; 2 2 use std::io::{stdin, Read}; 3 + use std::fs; 4 + 3 5 #[derive(Clone, Debug)] 4 6 pub enum Selection { 5 7 All, ··· 102 104 .expect("Failed to read input"); 103 105 input.trim().to_string() 104 106 } else { 105 - i 107 + fs::read_to_string(i).expect("Failed to read input file") 106 108 } 107 109 }); 108 110
+18
justfile
··· 1 + 2 + _default: 3 + cargo run --release -- solve * 4 + 5 + year := `date +%Y` 6 + day := `date +%d` 7 + 8 + p P in="": 9 + cargo run --release -- solve {{year}}:{{day}}:{{P}} {{in}} 10 + 11 + dp DP in="": 12 + cargo run --release -- solve {{year}}:{{DP}} {{in}} 13 + 14 + dyp DYP in="": 15 + cargo run --release -- solve {{DYP}} {{in}} 16 + 17 + prep: 18 + cargo run --release -- new {{year}}
+1 -1
src/main.rs
··· 1 1 use core::{get_ydp_and_input, make_year, Selection, Year, DP, YDP}; 2 2 use macros::global_runner; 3 3 4 - global_runner!(2023); 4 + global_runner!(2024); 5 5 6 6 fn run_ydp(ydp: YDP, input: Option<String>) { 7 7 let dp = ydp.to_dp();
+4 -4
utils/src/grid.rs
··· 393 393 &'a self, 394 394 pos: Position, 395 395 kernels: &'a [M], 396 - ) -> impl Iterator<Item = (M, Position, &T)> + 'a { 396 + ) -> impl Iterator<Item = (M, Position, &'a T)> + 'a { 397 397 pos.relatives(kernels) 398 398 .filter_map(move |(pos, dir)| self.get(pos).map(|v| (dir, pos, v))) 399 399 } ··· 406 406 &'a self, 407 407 pos: Position, 408 408 kernels: &'a [M], 409 - ) -> impl Iterator<Item = (M, Position, &T)> + 'a { 409 + ) -> impl Iterator<Item = (M, Position, &'a T)> + 'a { 410 410 pos.relatives(kernels) 411 411 .map(move |(pos, dir)| (dir, pos, self.get_wrapped(pos))) 412 412 } ··· 421 421 pos: Position, 422 422 kernels: &'a [M], 423 423 expand: usize, 424 - ) -> impl Iterator<Item = ((M, usize), Position, &T)> + 'a { 424 + ) -> impl Iterator<Item = ((M, usize), Position, &'a T)> + 'a { 425 425 pos.relatives_expand_by(kernels, expand) 426 426 .filter_map(move |(dir, pos)| self.get(pos).map(|v| (dir, pos, v))) 427 427 } ··· 436 436 pos: Position, 437 437 kernels: &'a [M], 438 438 expand: usize, 439 - ) -> impl Iterator<Item = ((M, usize), Position, &T)> + 'a { 439 + ) -> impl Iterator<Item = ((M, usize), Position, &'a T)> + 'a { 440 440 pos.relatives_expand_by(kernels, expand) 441 441 .map(move |(dir, pos)| (dir, pos, self.get_wrapped(pos))) 442 442 }
-1
utils/src/lib.rs
··· 7 7 pub mod range; 8 8 9 9 pub mod prelude { 10 - pub use crate::day_utils::*; 11 10 pub use crate::dir::*; 12 11 pub use crate::geom; 13 12 pub use crate::grid::cursors::*;
+1 -1
years/2023/Cargo.toml years/2024/Cargo.toml
··· 1 1 2 2 [package] 3 - name = "y_2023" 3 + name = "y_2024" 4 4 version = "0.1.0" 5 5 edition = "2021" 6 6
+1 -1
years/2023/src/day_1.rs years/2024/src/day_1.rs
··· 8 8 day_stuff!(1, "", ""); 9 9 10 10 fn part_1(_input: Self::Input) -> Option<String> { 11 - None 11 + Some(_input.to_string()) 12 12 } 13 13 14 14 fn part_2(_input: Self::Input) -> Option<String> {
years/2023/src/day_10.rs years/2024/src/day_10.rs
years/2023/src/day_11.rs years/2024/src/day_11.rs
years/2023/src/day_12.rs years/2024/src/day_12.rs
years/2023/src/day_13.rs years/2024/src/day_13.rs
years/2023/src/day_14.rs years/2024/src/day_14.rs
years/2023/src/day_15.rs years/2024/src/day_15.rs
years/2023/src/day_16.rs years/2024/src/day_16.rs
years/2023/src/day_17.rs years/2024/src/day_17.rs
years/2023/src/day_18.rs years/2024/src/day_18.rs
years/2023/src/day_19.rs years/2024/src/day_19.rs
years/2023/src/day_2.rs years/2024/src/day_2.rs
years/2023/src/day_20.rs years/2024/src/day_20.rs
years/2023/src/day_21.rs years/2024/src/day_21.rs
years/2023/src/day_22.rs years/2024/src/day_22.rs
years/2023/src/day_23.rs years/2024/src/day_23.rs
years/2023/src/day_24.rs years/2024/src/day_24.rs
+4 -5
years/2023/src/day_25.rs years/2024/src/day_25.rs
··· 1 1 2 2 use core::{Day, day_stuff, ex_for_day}; 3 3 4 - use utils::yippee; 5 - 6 4 pub struct Day25; 7 5 8 6 impl Day for Day25 { 9 7 10 - day_stuff!(25, "", "🥳"); 8 + day_stuff!(25, "", ""); 11 9 12 10 fn part_1(_input: Self::Input) -> Option<String> { 13 11 None 14 12 } 15 13 16 - yippee!(); 17 - 14 + fn part_2(_input: Self::Input) -> Option<String> { 15 + None 16 + } 18 17 }
years/2023/src/day_3.rs years/2024/src/day_3.rs
years/2023/src/day_4.rs years/2024/src/day_4.rs
years/2023/src/day_5.rs years/2024/src/day_5.rs
years/2023/src/day_6.rs years/2024/src/day_6.rs
years/2023/src/day_7.rs years/2024/src/day_7.rs
years/2023/src/day_8.rs years/2024/src/day_8.rs
years/2023/src/day_9.rs years/2024/src/day_9.rs
years/2023/src/examples/day_1/1.txt years/2024/src/examples/day_1/1.txt
years/2023/src/examples/day_1/2.txt years/2024/src/examples/day_1/2.txt
years/2023/src/examples/day_10/1.txt years/2024/src/examples/day_10/1.txt
years/2023/src/examples/day_10/2.txt years/2024/src/examples/day_10/2.txt
years/2023/src/examples/day_11/1.txt years/2024/src/examples/day_11/1.txt
years/2023/src/examples/day_11/2.txt years/2024/src/examples/day_11/2.txt
years/2023/src/examples/day_12/1.txt years/2024/src/examples/day_12/1.txt
years/2023/src/examples/day_12/2.txt years/2024/src/examples/day_12/2.txt
years/2023/src/examples/day_13/1.txt years/2024/src/examples/day_13/1.txt
years/2023/src/examples/day_13/2.txt years/2024/src/examples/day_13/2.txt
years/2023/src/examples/day_14/1.txt years/2024/src/examples/day_14/1.txt
years/2023/src/examples/day_14/2.txt years/2024/src/examples/day_14/2.txt
years/2023/src/examples/day_15/1.txt years/2024/src/examples/day_15/1.txt
years/2023/src/examples/day_15/2.txt years/2024/src/examples/day_15/2.txt
years/2023/src/examples/day_16/1.txt years/2024/src/examples/day_16/1.txt
years/2023/src/examples/day_16/2.txt years/2024/src/examples/day_16/2.txt
years/2023/src/examples/day_17/1.txt years/2024/src/examples/day_17/1.txt
years/2023/src/examples/day_17/2.txt years/2024/src/examples/day_17/2.txt
years/2023/src/examples/day_18/1.txt years/2024/src/examples/day_18/1.txt
years/2023/src/examples/day_18/2.txt years/2024/src/examples/day_18/2.txt
years/2023/src/examples/day_19/1.txt years/2024/src/examples/day_19/1.txt
years/2023/src/examples/day_19/2.txt years/2024/src/examples/day_19/2.txt
years/2023/src/examples/day_2/1.txt years/2024/src/examples/day_2/1.txt
years/2023/src/examples/day_2/2.txt years/2024/src/examples/day_2/2.txt
years/2023/src/examples/day_20/1.txt years/2024/src/examples/day_20/1.txt
years/2023/src/examples/day_20/2.txt years/2024/src/examples/day_20/2.txt
years/2023/src/examples/day_21/1.txt years/2024/src/examples/day_21/1.txt
years/2023/src/examples/day_21/2.txt years/2024/src/examples/day_21/2.txt
years/2023/src/examples/day_22/1.txt years/2024/src/examples/day_22/1.txt
years/2023/src/examples/day_22/2.txt years/2024/src/examples/day_22/2.txt
years/2023/src/examples/day_23/1.txt years/2024/src/examples/day_23/1.txt
years/2023/src/examples/day_23/2.txt years/2024/src/examples/day_23/2.txt
years/2023/src/examples/day_24/1.txt years/2024/src/examples/day_24/1.txt
years/2023/src/examples/day_24/2.txt years/2024/src/examples/day_24/2.txt
years/2023/src/examples/day_25/1.txt years/2024/src/examples/day_25/1.txt
years/2023/src/examples/day_25/2.txt years/2024/src/examples/day_25/2.txt
years/2023/src/examples/day_3/1.txt years/2024/src/examples/day_3/1.txt
years/2023/src/examples/day_3/2.txt years/2024/src/examples/day_3/2.txt
years/2023/src/examples/day_4/1.txt years/2024/src/examples/day_4/1.txt
years/2023/src/examples/day_4/2.txt years/2024/src/examples/day_4/2.txt
years/2023/src/examples/day_5/1.txt years/2024/src/examples/day_5/1.txt
years/2023/src/examples/day_5/2.txt years/2024/src/examples/day_5/2.txt
years/2023/src/examples/day_6/1.txt years/2024/src/examples/day_6/1.txt
years/2023/src/examples/day_6/2.txt years/2024/src/examples/day_6/2.txt
years/2023/src/examples/day_7/1.txt years/2024/src/examples/day_7/1.txt
years/2023/src/examples/day_7/2.txt years/2024/src/examples/day_7/2.txt
years/2023/src/examples/day_8/1.txt years/2024/src/examples/day_8/1.txt
years/2023/src/examples/day_8/2.txt years/2024/src/examples/day_8/2.txt
years/2023/src/examples/day_9/1.txt years/2024/src/examples/day_9/1.txt
years/2023/src/examples/day_9/2.txt years/2024/src/examples/day_9/2.txt
-3
years/2023/src/lib.rs
··· 1 - use macros::year; 2 - 3 - year!(2023);
-3
years/2023/src/main.rs
··· 1 - use macros::year_runner; 2 - 3 - year_runner!(2023);
+4
years/2024/src/lib.rs
··· 1 + 2 + use macros::year; 3 + 4 + year!(2024);
+4
years/2024/src/main.rs
··· 1 + 2 + use macros::year_runner; 3 + 4 + year_runner!(2024);
years/Cargo.toml

This is a binary file and will not be displayed.