54 lines
881 B
Rust
54 lines
881 B
Rust
use std::usize;
|
|
|
|
|
|
pub fn calculate_time(discs: &Vec<(usize, usize)>) -> Result<usize, ()> {
|
|
'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)]));
|
|
}
|
|
}
|