Files
aoc/2025/1/deadvey/src/main.rs
2025-12-01 11:24:13 +00:00

49 lines
1.1 KiB
Rust

use std::fs;
use std::io;
use std::time::Instant;
// Right = up/increase
// Left = down/decrease
fn main() -> io::Result<()>
{
let start = Instant::now();
let file_contents: String = fs::read_to_string("large.txt")?;
let lines: Vec<&str> = file_contents
.split("\n")
.collect();
let mut position: i32 = 50;
let mut total1: i32 = 0;
let mut total2: i32 = 0;
println!("The dial starts by pointing at {position}");
for index in 0..&lines.len()-1
{
let movement = &lines[index][0..1];
let mut number: i32 = lines[index][1..lines[index].len()].parse().unwrap();
if movement == "L" {
number = -number
};
if number < 0 {
total2 += (100 - position - number) / 100 - (position == 0) as i32
}
else {
total2 += (number+position) / 100
};
position = (position + number).rem_euclid(100);
if position == 0 {
total1 += 1;
}
}
let end = start.elapsed();
println!("part1: {total1}");
println!("part2: {total2}");
println!("Took: {:.2?}",end);
Ok(())
}