aoc/2018/src/bin/2018_01b.rs
2025-09-02 09:42:27 -04:00

39 lines
1.3 KiB
Rust

// do part 1a but figure out the first repeated value
use std::collections::HashMap;
use core::read_data;
fn main() {
let mut visited_locations: HashMap<i32, i32> = HashMap::from([(0, 0)]);
let binding = read_data("2018_01_data.txt");
let lines = binding.lines();
// let lines = "-6\n+3\n+8\n+5\n-6".to_string();
let mut working_value = 0i32;
for line in lines {
let (direction, velocity) = line.split_at(1);
println!("[[[[{line}]]]] split to ||{direction}|| and ||{velocity}||");
let direction_val : i32 = velocity.parse().unwrap();
match direction {
"+" => {
working_value += direction_val;
}
"-" => {
working_value -= direction_val;
}
_ => {
unreachable!("Invalid direction");
}
}
println!("||{working_value}||\t");
if let Some(found) = visited_locations.get(&working_value) {
println!("GET SUCCESS -> {working_value} / {found}");
break;
}
for index in 0..working_value.abs() {
println!("Adding visit to {}", index + working_value);
visited_locations.insert(index + working_value, 0);
}
}
}
// BROKEN