peuler 0.1.0

A Rust crate with solutions to the Project Euler problems
Documentation
//! [*Project Euler*](https://projecteuler.net) problems with solutions.

macro_rules! problem {
    ($struct_name:ident, $id:literal, $title:literal) => {
        #[doc = concat!("[*", $title, "*](https://projecteuler.net/problem=", $id, ")")]
        #[derive(Copy, Clone)]
        pub struct $struct_name {
            id: usize,
            title: &'static str,
        }
        impl $struct_name {
            #[doc = concat!("Create a new [", stringify!($struct_name), "] instance.")]
            pub fn new() -> Self {
                Self {
                    id: $id,
                    title: $title,
                }
            }
        }
        impl Default for $struct_name {
            fn default() -> Self {
                Self::new()
            }
        }
        impl crate::Problem for $struct_name {
            fn id(&self) -> usize {
                self.id
            }

            fn title(&self) -> &str {
                self.title
            }
        }
    };
}

mod p0001;
mod p0002;
mod p0003;
mod p0004;
mod p0005;
mod p0006;
mod p0007;
mod p0008;
mod p0009;
mod p0010;
mod p0011;
mod p0012;
mod p0013;
mod p0014;
mod p0015;
mod p0016;
mod p0017;
mod p0018;
mod p0019;
mod p0020;
mod p0021;
mod p0022;
mod p0023;
mod p0024;
mod p0025;
mod p0026;
mod p0027;
mod p0028;
mod p0029;
mod p0030;
mod p0031;
mod p0032;
mod p0033;
mod p0034;
mod p0035;
mod p0036;
mod p0037;
mod p0038;
mod p0039;
mod p0040;
mod p0041;
mod p0042;
mod p0043;
mod p0044;
mod p0045;
mod p0046;
mod p0047;
mod p0048;
mod p0049;
mod p0050;
mod p0052;
mod p0053;
mod p0054;
mod p0055;
mod p0056;
mod p0057;
mod p0058;
mod p0059;
mod p0061;
mod p0062;
mod p0063;
mod p0064;
mod p0065;
mod p0066;
mod p0067;
mod p0069;
mod p0070;
mod p0071;
mod p0072;
mod p0073;
mod p0074;
mod p0075;
mod p0076;
mod p0077;
mod p0078;
mod p0080;
mod p0081;
mod p0082;
mod p0085;
mod p0089;
mod p0091;
mod p0092;
mod p0095;
mod p0097;
mod p0098;
mod p0099;
mod p0100;
mod p0102;

#[doc(inline)]
pub use p0001::Problem0001;
#[doc(inline)]
pub use p0002::Problem0002;
#[doc(inline)]
pub use p0003::Problem0003;
#[doc(inline)]
pub use p0004::Problem0004;
#[doc(inline)]
pub use p0005::Problem0005;
#[doc(inline)]
pub use p0006::Problem0006;
#[doc(inline)]
pub use p0007::Problem0007;
#[doc(inline)]
pub use p0008::Problem0008;
#[doc(inline)]
pub use p0009::Problem0009;
#[doc(inline)]
pub use p0010::Problem0010;
#[doc(inline)]
pub use p0011::Problem0011;
#[doc(inline)]
pub use p0012::Problem0012;
#[doc(inline)]
pub use p0013::Problem0013;
#[doc(inline)]
pub use p0014::Problem0014;
#[doc(inline)]
pub use p0015::Problem0015;
#[doc(inline)]
pub use p0016::Problem0016;
#[doc(inline)]
pub use p0017::Problem0017;
#[doc(inline)]
pub use p0018::Problem0018;
#[doc(inline)]
pub use p0019::Problem0019;
#[doc(inline)]
pub use p0020::Problem0020;
#[doc(inline)]
pub use p0021::Problem0021;
#[doc(inline)]
pub use p0022::Problem0022;
#[doc(inline)]
pub use p0023::Problem0023;
#[doc(inline)]
pub use p0024::Problem0024;
#[doc(inline)]
pub use p0025::Problem0025;
#[doc(inline)]
pub use p0026::Problem0026;
#[doc(inline)]
pub use p0027::Problem0027;
#[doc(inline)]
pub use p0028::Problem0028;
#[doc(inline)]
pub use p0029::Problem0029;
#[doc(inline)]
pub use p0030::Problem0030;
#[doc(inline)]
pub use p0031::Problem0031;
#[doc(inline)]
pub use p0032::Problem0032;
#[doc(inline)]
pub use p0033::Problem0033;
#[doc(inline)]
pub use p0034::Problem0034;
#[doc(inline)]
pub use p0035::Problem0035;
#[doc(inline)]
pub use p0036::Problem0036;
#[doc(inline)]
pub use p0037::Problem0037;
#[doc(inline)]
pub use p0038::Problem0038;
#[doc(inline)]
pub use p0039::Problem0039;
#[doc(inline)]
pub use p0040::Problem0040;
#[doc(inline)]
pub use p0041::Problem0041;
#[doc(inline)]
pub use p0042::Problem0042;
#[doc(inline)]
pub use p0043::Problem0043;
#[doc(inline)]
pub use p0044::Problem0044;
#[doc(inline)]
pub use p0045::Problem0045;
#[doc(inline)]
pub use p0046::Problem0046;
#[doc(inline)]
pub use p0047::Problem0047;
#[doc(inline)]
pub use p0048::Problem0048;
#[doc(inline)]
pub use p0049::Problem0049;
#[doc(inline)]
pub use p0050::Problem0050;
#[doc(inline)]
pub use p0052::Problem0052;
#[doc(inline)]
pub use p0053::Problem0053;
#[doc(inline)]
pub use p0054::Problem0054;
#[doc(inline)]
pub use p0055::Problem0055;
#[doc(inline)]
pub use p0056::Problem0056;
#[doc(inline)]
pub use p0057::Problem0057;
#[doc(inline)]
pub use p0058::Problem0058;
#[doc(inline)]
pub use p0059::Problem0059;
#[doc(inline)]
pub use p0061::Problem0061;
#[doc(inline)]
pub use p0062::Problem0062;
#[doc(inline)]
pub use p0063::Problem0063;
#[doc(inline)]
pub use p0064::Problem0064;
#[doc(inline)]
pub use p0065::Problem0065;
#[doc(inline)]
pub use p0066::Problem0066;
#[doc(inline)]
pub use p0067::Problem0067;
#[doc(inline)]
pub use p0069::Problem0069;
#[doc(inline)]
pub use p0070::Problem0070;
#[doc(inline)]
pub use p0071::Problem0071;
#[doc(inline)]
pub use p0072::Problem0072;
#[doc(inline)]
pub use p0073::Problem0073;
#[doc(inline)]
pub use p0074::Problem0074;
#[doc(inline)]
pub use p0075::Problem0075;
#[doc(inline)]
pub use p0076::Problem0076;
#[doc(inline)]
pub use p0077::Problem0077;
#[doc(inline)]
pub use p0078::Problem0078;
#[doc(inline)]
pub use p0080::Problem0080;
#[doc(inline)]
pub use p0081::Problem0081;
#[doc(inline)]
pub use p0082::Problem0082;
#[doc(inline)]
pub use p0085::Problem0085;
#[doc(inline)]
pub use p0089::Problem0089;
#[doc(inline)]
pub use p0091::Problem0091;
#[doc(inline)]
pub use p0092::Problem0092;
#[doc(inline)]
pub use p0095::Problem0095;
#[doc(inline)]
pub use p0097::Problem0097;
#[doc(inline)]
pub use p0098::Problem0098;
#[doc(inline)]
pub use p0099::Problem0099;
#[doc(inline)]
pub use p0100::Problem0100;
#[doc(inline)]
pub use p0102::Problem0102;