initial commit: templates, etc.

This commit is contained in:
YK 2024-12-01 20:36:25 +03:00
commit 967419e50e
8 changed files with 159 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/target
/in

32
Cargo.lock generated Normal file
View File

@ -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",
]

8
Cargo.toml Normal file
View File

@ -0,0 +1,8 @@
[package]
name = "aoc2024"
version = "0.1.0"
edition = "2021"
[dependencies]
anyhow = "1.0.93"
itertools = "0.13.0"

23
src/days.rs Normal file
View File

@ -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;

7
src/lib.rs Normal file
View File

@ -0,0 +1,7 @@
#![feature(let_chains)]
#![feature(decl_macro)]
#![feature(iter_array_chunks)]
pub mod days;
pub mod utils;
pub mod prelude;

9
src/prelude.rs Normal file
View File

@ -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;

54
src/template.rs Normal file
View File

@ -0,0 +1,54 @@
use crate::prelude::*;
pub type I = Vec<String>;
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)
}
}

24
src/utils.rs Normal file
View File

@ -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()
}
}