|
|
|
#![feature(conservative_impl_trait, inclusive_range_syntax, match_default_bindings, slice_rotate,
|
|
|
|
try_from)]
|
|
|
|
|
|
|
|
extern crate failure;
|
|
|
|
#[macro_use]
|
|
|
|
extern crate lazy_static;
|
|
|
|
extern crate regex;
|
|
|
|
extern crate time;
|
|
|
|
|
|
|
|
use std::io::{self, Read};
|
|
|
|
|
|
|
|
use failure::Error;
|
|
|
|
|
|
|
|
mod day_01;
|
|
|
|
mod day_02;
|
|
|
|
mod day_03;
|
|
|
|
mod day_04;
|
|
|
|
mod day_05;
|
|
|
|
mod day_06;
|
|
|
|
mod day_15;
|
|
|
|
mod day_16;
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
if let Err(e) = run() {
|
|
|
|
eprintln!("{}", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn run() -> Result<(), Error> {
|
|
|
|
let mut input = String::new();
|
|
|
|
io::stdin().read_to_string(&mut input)?;
|
|
|
|
|
|
|
|
let solution = day_16::solve(&input)?;
|
|
|
|
println!("{}", solution);
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|