diff --git a/2025/1/deadvey/Cargo.lock b/2025/1/deadvey/Cargo.lock new file mode 100644 index 0000000..a41c738 --- /dev/null +++ b/2025/1/deadvey/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "deadvey" +version = "0.1.0" diff --git a/2025/1/deadvey/Cargo.toml b/2025/1/deadvey/Cargo.toml new file mode 100644 index 0000000..edf0314 --- /dev/null +++ b/2025/1/deadvey/Cargo.toml @@ -0,0 +1,4 @@ +[package] +name = "deadvey" +version = "0.1.0" +edition = "2024" diff --git a/2025/1/deadvey/src/main.rs b/2025/1/deadvey/src/main.rs new file mode 100644 index 0000000..16179ad --- /dev/null +++ b/2025/1/deadvey/src/main.rs @@ -0,0 +1,48 @@ +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(()) +}