Day 3!
This commit is contained in:
34
src/main.rs
34
src/main.rs
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user