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)])); } }