mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-27 05:40:32 +01:00
Prepare future scaffolding.
Also reformat the code, but that is nothing significant.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
|
|
||||||
use common;
|
use common;
|
||||||
|
|
||||||
pub struct Day01 {}
|
pub struct Day01 {}
|
||||||
@@ -46,9 +47,10 @@ impl common::Solution for Day01 {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
|
||||||
use common::Solution;
|
use common::Solution;
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn samples_part1() {
|
fn samples_part1() {
|
||||||
let mut instance = Day01::new();
|
let mut instance = Day01::new();
|
||||||
@@ -74,6 +76,4 @@ mod tests {
|
|||||||
assert_eq!("5", instance.part2(&mut sample3.as_bytes()));
|
assert_eq!("5", instance.part2(&mut sample3.as_bytes()));
|
||||||
assert_eq!("14", instance.part2(&mut sample4.as_bytes()));
|
assert_eq!("14", instance.part2(&mut sample4.as_bytes()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,7 @@ fn distance(a: &str, b: &str) -> usize {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct Day02 {
|
pub struct Day02 {}
|
||||||
}
|
|
||||||
|
|
||||||
impl Day02 {
|
impl Day02 {
|
||||||
pub fn new() -> Day02 {
|
pub fn new() -> Day02 {
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ struct Claim {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Claim {
|
impl Claim {
|
||||||
|
|
||||||
fn xrange(&self) -> Range<usize> {
|
fn xrange(&self) -> Range<usize> {
|
||||||
self.x..(self.x + self.width)
|
self.x..(self.x + self.width)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::BufRead;
|
use std::io::BufRead;
|
||||||
|
|
||||||
use chrono::DateTime;
|
use chrono::DateTime;
|
||||||
use chrono::offset::TimeZone;
|
use chrono::offset::TimeZone;
|
||||||
use chrono::offset::Utc;
|
use chrono::offset::Utc;
|
||||||
|
use chrono::Timelike;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
|
||||||
use common;
|
use common;
|
||||||
use std::collections::HashMap;
|
|
||||||
use chrono::Timelike;
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, PartialOrd, Ord, Eq, Copy, Clone)]
|
#[derive(Debug, PartialEq, PartialOrd, Ord, Eq, Copy, Clone)]
|
||||||
enum EventType {
|
enum EventType {
|
||||||
@@ -37,7 +37,7 @@ impl Day04 {
|
|||||||
self.events.clear();
|
self.events.clear();
|
||||||
let reader = io::BufReader::new(input);
|
let reader = io::BufReader::new(input);
|
||||||
|
|
||||||
let scanner = Regex::new(r"^\[([^\]]+)\] (Guard #(\d+)|falls asleep|wakes up)").unwrap();
|
let scanner = Regex::new(r"^\[([^]]+)] (Guard #(\d+)|falls asleep|wakes up)").unwrap();
|
||||||
|
|
||||||
for line in reader.lines() {
|
for line in reader.lines() {
|
||||||
let line = line.unwrap();
|
let line = line.unwrap();
|
||||||
@@ -70,10 +70,10 @@ impl Day04 {
|
|||||||
EventType::SHIFT(val) => {
|
EventType::SHIFT(val) => {
|
||||||
guard = Some(*val);
|
guard = Some(*val);
|
||||||
sleep_start = None;
|
sleep_start = None;
|
||||||
},
|
}
|
||||||
EventType::SLEEP => {
|
EventType::SLEEP => {
|
||||||
sleep_start = Some(event.time.clone());
|
sleep_start = Some(event.time.clone());
|
||||||
},
|
}
|
||||||
EventType::WAKE => {
|
EventType::WAKE => {
|
||||||
let mut minutes = sleeps.entry(guard.unwrap()).or_insert([0u32; 60]);
|
let mut minutes = sleeps.entry(guard.unwrap()).or_insert([0u32; 60]);
|
||||||
for m in sleep_start.unwrap().minute()..event.time.minute() {
|
for m in sleep_start.unwrap().minute()..event.time.minute() {
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ use std::io::BufRead;
|
|||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
|
|
||||||
use common::Solution;
|
|
||||||
use common::GroupingCount;
|
use common::GroupingCount;
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug)]
|
#[derive(Copy, Clone, Debug)]
|
||||||
struct Coordinate {
|
struct Coordinate {
|
||||||
|
|||||||
25
2018/src/day10.rs
Normal file
25
2018/src/day10.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day10 {}
|
||||||
|
|
||||||
|
impl Day10 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day10 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day11.rs
Normal file
25
2018/src/day11.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day11 {}
|
||||||
|
|
||||||
|
impl Day11 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day11 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day12.rs
Normal file
25
2018/src/day12.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day12 {}
|
||||||
|
|
||||||
|
impl Day12 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day12 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day13.rs
Normal file
25
2018/src/day13.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day13 {}
|
||||||
|
|
||||||
|
impl Day13 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day13 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day14.rs
Normal file
25
2018/src/day14.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day14 {}
|
||||||
|
|
||||||
|
impl Day14 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day14 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day15.rs
Normal file
25
2018/src/day15.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day15 {}
|
||||||
|
|
||||||
|
impl Day15 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day15 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day16.rs
Normal file
25
2018/src/day16.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day16 {}
|
||||||
|
|
||||||
|
impl Day16 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day16 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day17.rs
Normal file
25
2018/src/day17.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day17 {}
|
||||||
|
|
||||||
|
impl Day17 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day17 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day18.rs
Normal file
25
2018/src/day18.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day18 {}
|
||||||
|
|
||||||
|
impl Day18 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day18 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day19.rs
Normal file
25
2018/src/day19.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day19 {}
|
||||||
|
|
||||||
|
impl Day19 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day19 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day20.rs
Normal file
25
2018/src/day20.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day20 {}
|
||||||
|
|
||||||
|
impl Day20 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day20 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day21.rs
Normal file
25
2018/src/day21.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day21 {}
|
||||||
|
|
||||||
|
impl Day21 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day21 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day22.rs
Normal file
25
2018/src/day22.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day22 {}
|
||||||
|
|
||||||
|
impl Day22 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day22 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day23.rs
Normal file
25
2018/src/day23.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day23 {}
|
||||||
|
|
||||||
|
impl Day23 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day23 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day24.rs
Normal file
25
2018/src/day24.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day24 {}
|
||||||
|
|
||||||
|
impl Day24 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day24 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
25
2018/src/day25.rs
Normal file
25
2018/src/day25.rs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
use common::Solution;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Day25 {}
|
||||||
|
|
||||||
|
impl Day25 {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Default::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Solution for Day25 {
|
||||||
|
fn part1(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(&mut self, _input: &mut Read) -> String {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
extern crate chrono;
|
extern crate chrono;
|
||||||
#[macro_use] extern crate intrusive_collections;
|
#[macro_use]
|
||||||
#[macro_use] extern crate itertools;
|
extern crate intrusive_collections;
|
||||||
|
#[macro_use]
|
||||||
|
extern crate itertools;
|
||||||
extern crate regex;
|
extern crate regex;
|
||||||
|
|
||||||
pub mod common;
|
pub mod common;
|
||||||
@@ -13,6 +15,22 @@ pub mod day06;
|
|||||||
pub mod day07;
|
pub mod day07;
|
||||||
pub mod day08;
|
pub mod day08;
|
||||||
pub mod day09;
|
pub mod day09;
|
||||||
|
pub mod day10;
|
||||||
|
pub mod day11;
|
||||||
|
pub mod day12;
|
||||||
|
pub mod day13;
|
||||||
|
pub mod day14;
|
||||||
|
pub mod day15;
|
||||||
|
pub mod day16;
|
||||||
|
pub mod day17;
|
||||||
|
pub mod day18;
|
||||||
|
pub mod day19;
|
||||||
|
pub mod day20;
|
||||||
|
pub mod day21;
|
||||||
|
pub mod day22;
|
||||||
|
pub mod day23;
|
||||||
|
pub mod day24;
|
||||||
|
pub mod day25;
|
||||||
|
|
||||||
pub fn get_impl(day: u32) -> Box<common::Solution> {
|
pub fn get_impl(day: u32) -> Box<common::Solution> {
|
||||||
match day {
|
match day {
|
||||||
@@ -25,6 +43,22 @@ pub fn get_impl(day: u32) -> Box<common::Solution> {
|
|||||||
7 => Box::new(day07::Day07::new()),
|
7 => Box::new(day07::Day07::new()),
|
||||||
8 => Box::new(day08::Day08::new()),
|
8 => Box::new(day08::Day08::new()),
|
||||||
9 => Box::new(day09::Day09::new()),
|
9 => Box::new(day09::Day09::new()),
|
||||||
|
10 => Box::new(day10::Day10::new()),
|
||||||
|
11 => Box::new(day11::Day11::new()),
|
||||||
|
12 => Box::new(day12::Day12::new()),
|
||||||
|
13 => Box::new(day13::Day13::new()),
|
||||||
|
14 => Box::new(day14::Day14::new()),
|
||||||
|
15 => Box::new(day15::Day15::new()),
|
||||||
|
16 => Box::new(day16::Day16::new()),
|
||||||
|
17 => Box::new(day17::Day17::new()),
|
||||||
|
18 => Box::new(day18::Day18::new()),
|
||||||
|
19 => Box::new(day19::Day19::new()),
|
||||||
|
20 => Box::new(day20::Day20::new()),
|
||||||
|
21 => Box::new(day21::Day21::new()),
|
||||||
|
22 => Box::new(day22::Day22::new()),
|
||||||
|
23 => Box::new(day23::Day23::new()),
|
||||||
|
24 => Box::new(day24::Day24::new()),
|
||||||
|
25 => Box::new(day25::Day25::new()),
|
||||||
val => panic!("Unimplemented day {}", val),
|
val => panic!("Unimplemented day {}", val),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -36,7 +70,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_get_impl() {
|
fn test_get_impl() {
|
||||||
// Verify that we can load all days
|
// Verify that we can load all days
|
||||||
let last_implemented = 8;
|
let last_implemented = 25;
|
||||||
for d in 1..=last_implemented {
|
for d in 1..=last_implemented {
|
||||||
get_impl(d);
|
get_impl(d);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
extern crate chrono;
|
|
||||||
#[macro_use] extern crate clap;
|
|
||||||
extern crate aoc_2018;
|
extern crate aoc_2018;
|
||||||
|
extern crate chrono;
|
||||||
|
#[macro_use]
|
||||||
|
extern crate clap;
|
||||||
|
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
|
|
||||||
use aoc_2018::get_impl;
|
|
||||||
|
|
||||||
use clap::Arg;
|
use clap::Arg;
|
||||||
|
|
||||||
|
use aoc_2018::get_impl;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let matches = app_from_crate!()
|
let matches = app_from_crate!()
|
||||||
.arg(Arg::with_name("day")
|
.arg(Arg::with_name("day")
|
||||||
|
|||||||
Reference in New Issue
Block a user