mirror of https://github.com/HeNine/aoc2020
day13
parent
cfc301b866
commit
fcd8eb2f6d
@ -0,0 +1,9 @@
|
|||||||
|
[package]
|
||||||
|
name = "day13"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["henine <why@no.com>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
@ -0,0 +1,2 @@
|
|||||||
|
1000104
|
||||||
|
41,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,37,x,x,x,x,x,659,x,x,x,x,x,x,x,23,x,x,x,x,13,x,x,x,x,x,19,x,x,x,x,x,x,x,x,x,29,x,937,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,17
|
@ -0,0 +1,78 @@
|
|||||||
|
use std::fs::File;
|
||||||
|
use std::io::{BufRead, BufReader};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let file = File::open("input").unwrap();
|
||||||
|
|
||||||
|
let input_buffer = BufReader::new(&file);
|
||||||
|
let mut lines = input_buffer.lines();
|
||||||
|
|
||||||
|
let time: i64 = lines.next().unwrap().unwrap().parse().unwrap();
|
||||||
|
let (mut buses, mut counts, _): (Vec<i64>, Vec<i64>, i64) = lines.next().unwrap().unwrap()
|
||||||
|
.split(',')
|
||||||
|
.map(|num| match num.parse() {
|
||||||
|
Ok(num) => Some(num),
|
||||||
|
Err(_e) => None
|
||||||
|
})
|
||||||
|
.fold((Vec::new(), Vec::new(), 0),
|
||||||
|
|(mut ids, mut counts, count), id| match id {
|
||||||
|
Some(id) => {
|
||||||
|
ids.push(id);
|
||||||
|
counts.push(count);
|
||||||
|
(ids, counts, count + 1)
|
||||||
|
}
|
||||||
|
None => (ids, counts, count + 1)
|
||||||
|
});
|
||||||
|
|
||||||
|
println!("{}", time);
|
||||||
|
println!("{:?}", buses);
|
||||||
|
println!("{:?}", counts);
|
||||||
|
|
||||||
|
let mut i = 0;
|
||||||
|
loop {
|
||||||
|
if i == buses.len() - 1 { break; }
|
||||||
|
if buses[i + 1] > buses[i] {
|
||||||
|
buses.swap(i, i + 1);
|
||||||
|
counts.swap(i, i + 1);
|
||||||
|
if i > 0 { i -= 1 }
|
||||||
|
} else {
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("{:?}", buses);
|
||||||
|
println!("{:?}", counts);
|
||||||
|
|
||||||
|
let mut xi = (buses[0] - counts[0]).rem_euclid(buses[0]);
|
||||||
|
|
||||||
|
let mut prod_n = buses[0];
|
||||||
|
|
||||||
|
for i in 1..buses.len() {
|
||||||
|
let ai = (buses[i] - counts[i]).rem_euclid( buses[i]) ;
|
||||||
|
let ni = buses[i];
|
||||||
|
|
||||||
|
|
||||||
|
loop {
|
||||||
|
if xi % ni == ai { break; }
|
||||||
|
xi += prod_n;
|
||||||
|
}
|
||||||
|
|
||||||
|
prod_n *= ni;
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("{}", xi);
|
||||||
|
|
||||||
|
// let mut min_time = *buses.iter().max().unwrap();
|
||||||
|
// let mut min_bus= 0;
|
||||||
|
// for bus_id in buses.iter() {
|
||||||
|
//
|
||||||
|
// let wait_time = bus_id-time%bus_id;
|
||||||
|
//
|
||||||
|
// if wait_time < min_time {
|
||||||
|
// min_time = wait_time;
|
||||||
|
// min_bus = *bus_id;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// println!("{}", min_bus*min_time);
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
939
|
||||||
|
7,13,x,x,59,x,31,19
|
Loading…
Reference in New Issue