This commit is contained in:
2019-12-14 20:54:52 -08:00
parent 449a615586
commit ec87dfec10
4 changed files with 648 additions and 3 deletions

View File

@@ -1,11 +1,11 @@
mod args;
mod fuel;
mod machine;
mod wiremap;
use crate::args::Command;
use crate::fuel::calculate_fuel;
use crate::machine::{Computer};
use std::fs;
use crate::wiremap::WireMap;
fn main() {
match Command::get() {
@@ -40,5 +40,35 @@ fn main() {
}
}
}
Command::WireMap(wires) => {
let mut wiremap = WireMap::new();
for (num, wire) in wires.iter().enumerate() {
wiremap.add_wire(wire, num);
}
let (target, distance) = wiremap.closest_intersection();
println!("Closest intersection: ({}, {}) [distance {}]",
target.0, target.1, distance);
let mut best_total_steps = usize::max_value();
for (target_num, join_point) in wiremap.joins().iter().enumerate() {
let mut total_steps = 0;
for (num, wire) in wires.iter().enumerate() {
let wire_steps = wiremap.steps_to(wire, *join_point);
println!("Wire #{} takes {} steps to target #{}.", num, wire_steps, target_num);
total_steps += wire_steps;
}
if total_steps < best_total_steps {
best_total_steps = total_steps;
}
}
println!("Total steps taken: {}", best_total_steps);
}
}
}