1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#![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(())
}