35 lines
783 B
Rust
35 lines
783 B
Rust
use std::error::Error;
|
|
use std::fs::File;
|
|
use std::io::{self, BufRead};
|
|
use std::vec::Vec;
|
|
|
|
fn main() -> Result<(), Box<dyn Error>> {
|
|
let file = File::open("inputs/day13.txt")?;
|
|
let mut lines = io::BufReader::new(file).lines().map(|l| l.unwrap());
|
|
|
|
let buses: Vec<Option<u64>> = lines
|
|
.nth(1)
|
|
.unwrap()
|
|
.split(',')
|
|
.map(|b| b.parse().ok())
|
|
.collect();
|
|
|
|
let mut step = buses[0].unwrap();
|
|
let mut t: u64 = 0;
|
|
for i in 1..buses.len() {
|
|
if let Some(bus) = buses[i] {
|
|
loop {
|
|
t = t + step;
|
|
if (t + i as u64) % bus == 0 {
|
|
step = step * bus;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
println!("{}", t);
|
|
|
|
Ok(())
|
|
}
|