diff --git a/2016/15/Cargo.lock b/2016/15/Cargo.lock new file mode 100644 index 0000000..23cf4f8 --- /dev/null +++ b/2016/15/Cargo.lock @@ -0,0 +1,4 @@ +[root] +name = "15" +version = "0.1.0" + diff --git a/2016/15/Cargo.toml b/2016/15/Cargo.toml new file mode 100644 index 0000000..c442900 --- /dev/null +++ b/2016/15/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "15" +version = "0.1.0" +authors = ["logaritmisk "] + +[dependencies] diff --git a/2016/15/src/main.rs b/2016/15/src/main.rs new file mode 100644 index 0000000..bdb3291 --- /dev/null +++ b/2016/15/src/main.rs @@ -0,0 +1,53 @@ +use std::usize; + + +pub fn calculate_time(discs: &Vec<(usize, usize)>) -> Result { + 'main: for t in 0..usize::MAX { + for (i, &(p, m)) in discs.iter().enumerate() { + if (t + i + 1 + p) % m != 0 { + continue 'main; + } + } + + return Ok(t); + } + + Err(()) +} + + +fn main() { + let time_1 = calculate_time(&vec![ + (2, 5), + (7, 13), + (10, 17), + (2, 3), + (9, 19), + (0, 7) + ]); + + println!("time_1={:?}", time_1); + + let time_2 = calculate_time(&vec![ + (2, 5), + (7, 13), + (10, 17), + (2, 3), + (9, 19), + (0, 7), + (0, 11) + ]); + + println!("time_2={:?}", time_2); +} + + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn example_01() { + assert_eq!(Ok(5), calculate_time(&vec![(4, 5), (1, 2)])); + } +}