commit 967419e50e5b84a16f65f4daac08f7884eb1f306 Author: YK Date: Sun Dec 1 20:36:25 2024 +0300 initial commit: templates, etc. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bdd79ab --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +/in diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..c651ec5 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,32 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "anyhow" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" + +[[package]] +name = "aoc2024" +version = "0.1.0" +dependencies = [ + "anyhow", + "itertools", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..a9ee2c2 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "aoc2024" +version = "0.1.0" +edition = "2021" + +[dependencies] +anyhow = "1.0.93" +itertools = "0.13.0" diff --git a/src/days.rs b/src/days.rs new file mode 100644 index 0000000..849a861 --- /dev/null +++ b/src/days.rs @@ -0,0 +1,23 @@ +// pub mod d2; +// pub mod d3; +// pub mod d4; +// pub mod d5; +// pub mod d6; +// pub mod d7; +// pub mod d8; +// pub mod d9; +// pub mod d10; +// pub mod d11; +// pub mod d12; +// pub mod d13; +// pub mod d14; +// pub mod d15; +// pub mod d16; +// pub mod d17; +// pub mod d18; +// pub mod d19; +// pub mod d20; +// pub mod d21; +// pub mod d22; +// pub mod d23; +// pub mod d24; diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..1a3ef54 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,7 @@ +#![feature(let_chains)] +#![feature(decl_macro)] +#![feature(iter_array_chunks)] + +pub mod days; +pub mod utils; +pub mod prelude; diff --git a/src/prelude.rs b/src/prelude.rs new file mode 100644 index 0000000..b91437e --- /dev/null +++ b/src/prelude.rs @@ -0,0 +1,9 @@ +pub use crate::utils::*; +pub use anyhow::Error; +pub use itertools::Itertools; +pub use std::{ + collections::{ HashMap as M, HashSet as S, VecDeque as D }, + cmp::Ordering as Or, +}; + +pub type SS = &'static str; diff --git a/src/template.rs b/src/template.rs new file mode 100644 index 0000000..7f4ae14 --- /dev/null +++ b/src/template.rs @@ -0,0 +1,54 @@ +use crate::prelude::*; + +pub type I = Vec; +pub type O = i64; + +fn _parse (data: &str) -> I { + Default::default() +} + +fn _solve (data: &I) -> O { + Default::default() +} + +fn _silver (data: &I) -> O { + Default::default() +} + +fn _gold (data: &I) -> O { + Default::default() +} + +#[cfg(test)] +mod test { + use super::*; + + fn read () -> I { + let data = inc!(_); + _parse(data) + } + + #[test] + fn sample () { + let data = ""; + let data = _parse(data); + + assert_eq!(1, 1) + } + + #[test] + fn silver () { + let data = read(); + let ans = _silver(&data); + + assert_eq!(ans, 1) + } + + #[test] + fn gold () { + let data = read(); + let ans = _gold(&data); + + assert_eq!(ans, 1) + } +} diff --git a/src/utils.rs b/src/utils.rs new file mode 100644 index 0000000..a9ef028 --- /dev/null +++ b/src/utils.rs @@ -0,0 +1,24 @@ +pub macro inc { + ($d: literal) => { + include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/in/", $d, ".txt")) + } +} + +pub macro s { + ($s: literal) => { + format!("{}", $s) + } +} + + +pub macro p { + ($s: expr) => { + $s.parse().unwrap() + } +} + +pub macro n { + ($s: expr) => { + $s.next().unwrap() + } +}