[CLEANUP] Removed some unused Day13 code
This commit is contained in:
51
src/day13.rs
51
src/day13.rs
@@ -29,9 +29,7 @@ pub fn solve() {
|
||||
}
|
||||
// println!("]");
|
||||
|
||||
|
||||
|
||||
// schedules.sort_by_key(|s| s.bus_id);
|
||||
schedules.sort_by_key(|s| u64::max_value() - s.bus_id);
|
||||
let part2 = find_fitting(&schedules);
|
||||
|
||||
println!("Day 13 Part 2: {}", part2);
|
||||
@@ -53,59 +51,18 @@ fn find_fitting_match(s1: &Schedule, s2: &Schedule) -> Schedule {
|
||||
// We know that the pattern repeats every s1.bus_id * s2.bus_id (and at no other times, since all bus_ids are at least co-prime).
|
||||
// So all we need to do is find out what offset works:
|
||||
let match_bus_id = s1.bus_id * s2.bus_id;
|
||||
let mut res = Schedule { bus_id: 1, offset: 0 };
|
||||
let mut sol_count = 0;
|
||||
for mult in 0..s1.bus_id {
|
||||
let offset = mult * s2.bus_id + s2.offset;
|
||||
if offset > match_bus_id {
|
||||
println!("Error finding solution for schedules {:?} and {:?}", s1, s2);
|
||||
println!(" offset: {}, bus_id: {}", offset, match_bus_id)
|
||||
}
|
||||
assert!(offset < match_bus_id, "Offset must not be bigger than the bus_id");
|
||||
let solution = match_bus_id - offset;
|
||||
if (solution + s1.offset) % s1.bus_id == 0 {
|
||||
sol_count += 1;
|
||||
res = Schedule {
|
||||
return Schedule {
|
||||
bus_id: match_bus_id,
|
||||
offset,
|
||||
}
|
||||
}
|
||||
}
|
||||
if sol_count == 0 {
|
||||
println!("Error finding solution for schedules {:?} and {:?}", s1, s2);
|
||||
panic!("No solution for schedules!");
|
||||
} else if sol_count > 1 {
|
||||
println!("Multiple solutions for schedules {:?} and {:?}", s1, s2);
|
||||
}
|
||||
return res;
|
||||
|
||||
}
|
||||
|
||||
fn find_fitting_brute_force(schedules: &Vec<Schedule>) -> u64 {
|
||||
|
||||
let mut mult = 1u64;
|
||||
let mut max_res = 0;
|
||||
let last_schedule = schedules.last().unwrap();
|
||||
loop {
|
||||
let start_t = last_schedule.bus_id * mult - last_schedule.offset;
|
||||
let mut failed = false;
|
||||
for schedule in schedules.iter().rev().skip(1) {
|
||||
|
||||
if (start_t + schedule.offset) % schedule.bus_id != 0 {
|
||||
failed = true;
|
||||
break
|
||||
}
|
||||
|
||||
}
|
||||
if !failed {
|
||||
println!("{}", start_t);
|
||||
max_res += 1;
|
||||
if max_res > 10 {
|
||||
return start_t;
|
||||
}
|
||||
// return start_t;
|
||||
}
|
||||
mult += 1;
|
||||
}
|
||||
panic!("Couldn't find match!!!");
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user