2024-12-01 01:13:10 -05:00
|
|
|
use std::env;
|
|
|
|
use std::fs;
|
|
|
|
use std::process;
|
2024-12-01 02:03:27 -05:00
|
|
|
//use std::{thread, time};
|
2024-12-01 01:13:10 -05:00
|
|
|
|
|
|
|
fn main() {
|
|
|
|
//println!("Hello world!");
|
|
|
|
|
|
|
|
let args: Vec<String> = env::args().collect();
|
2024-12-01 02:03:27 -05:00
|
|
|
let path: String;
|
2024-12-01 01:13:10 -05:00
|
|
|
|
|
|
|
if args.len() > 1 {
|
|
|
|
path = args[1].clone();
|
|
|
|
} else {
|
|
|
|
println!("Specify an input file!");
|
|
|
|
process::exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ! fs::metadata(path.clone()).is_ok() {
|
|
|
|
println!("Path does not exist!");
|
|
|
|
process::exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
//let rawInput = fs::read_to_string(path.clone()).unwrap();
|
|
|
|
//let splitInput: Vec<&str> = rawInput.lines().collect();
|
|
|
|
|
|
|
|
let mut left: Vec<i32> = vec![];
|
|
|
|
let mut right: Vec<i32> = vec![];
|
|
|
|
|
|
|
|
for line in fs::read_to_string(path.clone()).unwrap().lines() {
|
|
|
|
//let line = splitInput[i];
|
|
|
|
let split: Vec<&str> = line.split(" ").collect();
|
|
|
|
|
|
|
|
//println!("{}",split[0]);
|
|
|
|
|
|
|
|
left.push(split[0].parse().unwrap());
|
|
|
|
right.push(split[1].parse().unwrap());
|
|
|
|
}
|
|
|
|
|
|
|
|
left.sort();
|
|
|
|
//left.dedup();
|
|
|
|
|
|
|
|
right.sort();
|
|
|
|
//right.dedup();
|
|
|
|
|
|
|
|
let mut accum: i32 = 0;
|
|
|
|
for i in 0..right.len() {
|
2024-12-01 02:03:27 -05:00
|
|
|
//println!("{}, {}", left[i], right[i]);
|
|
|
|
//println!("Distance is {}", (right[i] - left[i]).abs());
|
2024-12-01 01:13:10 -05:00
|
|
|
accum += (right[i] - left[i]).abs();
|
|
|
|
|
|
|
|
//thread::sleep(time::Duration::from_millis(1000));
|
|
|
|
}
|
|
|
|
|
2024-12-01 02:03:27 -05:00
|
|
|
println!("Answer: {}", accum);
|
2024-12-01 01:13:10 -05:00
|
|
|
}
|