Crates.io | aoc-helper |
lib.rs | aoc-helper |
version | 0.2.1 |
source | src |
created_at | 2019-12-16 17:41:00.422766 |
updated_at | 2019-12-24 14:51:46.046145 |
description | A helper for the advent of code |
homepage | |
repository | https://github.com/cubetastic33/aoc-helper |
max_upload_size | |
id | 189804 |
size | 45,098 |
AOC Helper is a crate to make solving and sharing aoc problems in rust
easier. It is inspired by cargo-aoc.
cargo-aoc
is a binary that will also take care of compilation, while this
crate is a library you can import and use in your code. This aims to make it
easier to share and debug other people's code, and to perhaps be easier to
set up.
For more examples, check out the examples directory in the repository.
To get started, add aoc-helper
to the dependencies
section in your
Cargo.toml
:
[dependencies]
aoc-helper = "0.2.1"
You also need to provide a session ID for aoc-helper
to be able to
download your input files. The session ID is stored in a cookie called
session
in your browser on the aoc website if
you're logged in. You can provide the session ID through an
environment variable with the name AOC_SESSION_ID
, through the
session_id
functions on Helper
, or by using an aoc_helper.toml
file.
If you're using an aoc_helper.toml
file, you need to specify the config-file
feature and
specify your session ID in aoc_helper.toml
like this:
session-id = "82942d3671962a9f17f8f81723d45b0fcdf8b3b5bf6w3954f02101fa5de1420b6ecd30ed550133f32d6a5c00233076af"
Then, create an instance of AocDay
. Look at its documentation for information.
The output is by default colored. You can disable this by disabling the default
features.
use aoc_helper::{AocDay, Puzzle};
fn main() {
// Create a new `AocDay` instance for day 1 of 2015
// Note: this is not the actual problem from day 1 of 2015
let mut day_1 = AocDay::new(2015, 1);
// Create a new `Puzzle` instance for part 2
let part_2 = Puzzle::new(
2,
|x: String| x.lines().filter(|&y| y.contains("foo")).count()
)
.with_examples(&["random\nstuff\nfoo\nbaz", "foo\nbar\ntest\ncases"]);
// Run the solver functions on the example cases
day_1.test(&part_2);
// Run the solver functions on the day's input
day_1.run(&part_2).unwrap();
}