Compare commits
5 Commits
a6405f2edb
...
1531239f20
Author | SHA1 | Date |
---|---|---|
Nico | 1531239f20 | |
Felix Spöttel | f0a1ebe8c4 | |
Felix Spöttel | d0b923f727 | |
Felix Spöttel | 9bc635a056 | |
Felix Spöttel | 7d663f1407 |
|
@ -7,11 +7,11 @@
|
|||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "Debug unit tests in executable 'aoc'",
|
||||
"name": "Debug unit tests in executable 'advent_of_code'",
|
||||
"cargo": {
|
||||
"args": ["test", "--no-run", "--bin=aoc", "--package=aoc"],
|
||||
"args": ["test", "--no-run", "--bin=advent_of_code", "--package=advent_of_code"],
|
||||
"filter": {
|
||||
"name": "aoc",
|
||||
"name": "advent_of_code",
|
||||
"kind": "bin"
|
||||
}
|
||||
},
|
||||
|
@ -21,11 +21,11 @@
|
|||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "Debug executable 'aoc'",
|
||||
"name": "Debug executable 'advent_of_code'",
|
||||
"cargo": {
|
||||
"args": ["build", "--bin=aoc", "--package=aoc"],
|
||||
"args": ["build", "--bin=advent_of_code", "--package=advent_of_code"],
|
||||
"filter": {
|
||||
"name": "aoc",
|
||||
"name": "advent_of_code",
|
||||
"kind": "bin"
|
||||
}
|
||||
},
|
||||
|
@ -35,11 +35,11 @@
|
|||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "Debug unit tests in library 'aoc'",
|
||||
"name": "Debug unit tests in library 'advent_of_code'",
|
||||
"cargo": {
|
||||
"args": ["test", "--no-run", "--lib", "--package=aoc"],
|
||||
"args": ["test", "--no-run", "--lib", "--package=advent_of_code"],
|
||||
"filter": {
|
||||
"name": "aoc",
|
||||
"name": "advent_of_code",
|
||||
"kind": "lib"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "aoc"
|
||||
version = "0.6.3"
|
||||
name = "advent_of_code"
|
||||
version = "0.8.0"
|
||||
dependencies = [
|
||||
"pico-args",
|
||||
]
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
[package]
|
||||
name = "aoc"
|
||||
version = "0.6.3"
|
||||
name = "advent_of_code"
|
||||
version = "0.8.0"
|
||||
authors = ["Felix Spöttel <1682504+fspoettel@users.noreply.github.com>"]
|
||||
edition = "2021"
|
||||
default-run = "aoc"
|
||||
default-run = "advent_of_code"
|
||||
publish = false
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ Displayed _timings_ show the raw execution time of your solution without overhea
|
|||
cargo all
|
||||
|
||||
# output:
|
||||
# Running `target/release/aoc`
|
||||
# Running `target/release/advent_of_code`
|
||||
# ----------
|
||||
# | Day 01 |
|
||||
# ----------
|
||||
|
@ -141,7 +141,7 @@ cargo clippy
|
|||
|
||||
### Download puzzle inputs via aoc-cli
|
||||
|
||||
1. Install [`aoc-cli`](https://github.com/scarvalhojr/aoc-cli/) via cargo: `cargo install aoc-cli`.
|
||||
1. Install [`aoc-cli`](https://github.com/scarvalhojr/aoc-cli/) via cargo: `cargo install aoc-cli --version 0.5.0`.
|
||||
2. Create an `.adventofcode.session` file in your home directory and paste your session cookie[^1] into it. To get this, press F12 anywhere on the Advent of Code website to open your browser developer tools. Look in your Cookies under the Application or Storage tab, and copy out the `session` cookie value.
|
||||
|
||||
Once installed, you can use the [download command](#download-input-for-a-day).
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
pub fn part_one(input: &str) -> Option<u32> {
|
||||
let inlines = input.split("\n");
|
||||
let mut count: u32 = 0;
|
||||
let mut elves: Vec<u32> = vec![];
|
||||
for l in inlines {
|
||||
match l {
|
||||
"" => { elves.push(count); count = 0},
|
||||
_ => { count += l.parse::<u32>().unwrap() }
|
||||
}
|
||||
}
|
||||
|
||||
let mut largest = 0;
|
||||
|
||||
for e in elves {
|
||||
if e > largest {
|
||||
largest = e;
|
||||
}
|
||||
}
|
||||
|
||||
Some(largest)
|
||||
}
|
||||
|
||||
pub fn part_two(input: &str) -> Option<u32> {
|
||||
let inlines = input.split("\n");
|
||||
let mut count: u32 = 0;
|
||||
let mut elves: Vec<u32> = vec![];
|
||||
for l in inlines {
|
||||
match l {
|
||||
"" => { elves.push(count); count = 0},
|
||||
_ => { count += l.parse::<u32>().unwrap() }
|
||||
}
|
||||
}
|
||||
|
||||
elves.sort();
|
||||
elves.reverse();
|
||||
elves.truncate(3);
|
||||
|
||||
Some(elves.iter().sum::<u32>())
|
||||
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let input = &advent_of_code::read_file("inputs", 1);
|
||||
advent_of_code::solve!(1, part_one, input);
|
||||
advent_of_code::solve!(2, part_two, input);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_part_one() {
|
||||
let input = advent_of_code::read_file("examples", 1);
|
||||
assert_eq!(part_one(&input), Some(24000));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_part_two() {
|
||||
let input = advent_of_code::read_file("examples", 1);
|
||||
assert_eq!(part_two(&input), None);
|
||||
}
|
||||
}
|
|
@ -64,7 +64,7 @@ fn main() {
|
|||
}
|
||||
|
||||
cmd_args.append(&mut vec![
|
||||
"--file".into(),
|
||||
"--input-file".into(),
|
||||
tmp_file_path.to_string_lossy().to_string(),
|
||||
"--day".into(),
|
||||
args.day.to_string(),
|
||||
|
|
|
@ -17,9 +17,9 @@ pub fn part_two(input: &str) -> Option<u32> {
|
|||
}
|
||||
|
||||
fn main() {
|
||||
let input = &aoc::read_file("inputs", DAY);
|
||||
aoc::solve!(1, part_one, input);
|
||||
aoc::solve!(2, part_two, input);
|
||||
let input = &advent_of_code::read_file("inputs", DAY);
|
||||
advent_of_code::solve!(1, part_one, input);
|
||||
advent_of_code::solve!(2, part_two, input);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -28,13 +28,13 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_part_one() {
|
||||
let input = aoc::read_file("examples", DAY);
|
||||
let input = advent_of_code::read_file("examples", DAY);
|
||||
assert_eq!(part_one(&input), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_part_two() {
|
||||
let input = aoc::read_file("examples", DAY);
|
||||
let input = advent_of_code::read_file("examples", DAY);
|
||||
assert_eq!(part_two(&input), None);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
1000
|
||||
2000
|
||||
3000
|
||||
|
||||
4000
|
||||
|
||||
5000
|
||||
6000
|
||||
|
||||
7000
|
||||
8000
|
||||
9000
|
||||
|
||||
10000
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
* Use this file if you want to extract helpers from your solutions.
|
||||
* Example import from this file: `use aoc::helpers::example_fn;`.
|
||||
* Example import from this file: `use advent_of_code::helpers::example_fn;`.
|
||||
*/
|
||||
|
|
|
@ -15,7 +15,7 @@ pub const ANSI_RESET: &str = "\x1b[0m";
|
|||
#[macro_export]
|
||||
macro_rules! solve {
|
||||
($part:expr, $solver:ident, $input:expr) => {{
|
||||
use aoc::{ANSI_BOLD, ANSI_ITALIC, ANSI_RESET};
|
||||
use advent_of_code::{ANSI_BOLD, ANSI_ITALIC, ANSI_RESET};
|
||||
use std::fmt::Display;
|
||||
use std::time::Instant;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* This file contains template code.
|
||||
* There is no need to edit this file unless you want to change template functionality.
|
||||
*/
|
||||
use aoc::{ANSI_BOLD, ANSI_ITALIC, ANSI_RESET};
|
||||
use advent_of_code::{ANSI_BOLD, ANSI_ITALIC, ANSI_RESET};
|
||||
use std::process::Command;
|
||||
|
||||
fn main() {
|
||||
|
@ -34,7 +34,7 @@ fn main() {
|
|||
if is_empty {
|
||||
0_f64
|
||||
} else {
|
||||
aoc::parse_exec_time(&output)
|
||||
advent_of_code::parse_exec_time(&output)
|
||||
}
|
||||
})
|
||||
.sum();
|
||||
|
|
Loading…
Reference in New Issue