my solutions to advent of code
aoc advent-of-code

day 1 2025 in rust thats basically just a copy of the gleam one

aylac.top 3042768f d3d4f248

verified
Changed files
+65 -3
2025
1
2
rust
src
+1 -1
2025/1/gleam/src/main.gleam
···
let raw_zeroes = int.absolute_value(raw_new_number / 100)
let zeroes =
acc.zeroes
-
+ case raw_new_number <= 0 && acc.number != 0 {
+
+ case acc.number != 0 && raw_new_number <= 0 {
// if it is below zero before being moduloed and the original number itself wasn't zero it means that it did touch zero but the division thing wouldn't count it, so we give this extra support.
// of course, there is no need to deal with a negative to positive situation because the acc number will never be negative!!!
True -> raw_zeroes + 1
+7
2025/1/rust/Cargo.lock
···
+
# This file is automatically @generated by Cargo.
+
# It is not intended for manual editing.
+
version = 4
+
+
[[package]]
+
name = "rust"
+
version = "0.1.0"
+6
2025/1/rust/Cargo.toml
···
+
[package]
+
name = "rust"
+
version = "0.1.0"
+
edition = "2024"
+
+
[dependencies]
+49
2025/1/rust/src/main.rs
···
+
struct State {
+
turn: i32,
+
zeroes: i32,
+
}
+
+
fn main() {
+
let input: Vec<i32> = include_str!("../../input.txt")
+
.trim()
+
.split("\n")
+
.map(|n| {
+
n.replace("L", "-")
+
.replace("R", "")
+
.parse::<i32>()
+
.expect("invalid input")
+
})
+
.collect();
+
+
let part_1 = input.iter().fold(
+
State {
+
turn: 50,
+
zeroes: 0,
+
},
+
|acc, n| {
+
let turn = (acc.turn + n).rem_euclid(100);
+
State {
+
turn,
+
zeroes: acc.zeroes + (turn == 0) as i32,
+
}
+
},
+
);
+
println!("{}", part_1.zeroes);
+
+
let part_2 = input.iter().fold(
+
State {
+
turn: 50,
+
zeroes: 0,
+
},
+
|acc, n| {
+
let raw_turn = acc.turn + n;
+
let turn = raw_turn.rem_euclid(100);
+
let raw_zeroes = (raw_turn / 100).abs();
+
State {
+
turn,
+
zeroes: acc.zeroes + raw_zeroes + (acc.turn != 0 && raw_turn <= 0) as i32,
+
}
+
},
+
);
+
println!("{}", part_2.zeroes);
+
}
+2 -2
2025/2/rust/src/main.rs
···
let powers_of_ten: Vec<u64> = (0..10).map(|i| 10_u64.pow(i)).collect();
-
let part_1 = &input.iter().fold(0_u64, |acc, v| {
+
let part_1 = input.iter().fold(0_u64, |acc, v| {
(v.start..=v.end).fold(acc, |acc, n| {
if n <= 10 {
return acc;
···
});
println!("{}", part_1);
-
let part_2 = &input.iter().fold(0_u64, |acc, v| {
+
let part_2 = input.iter().fold(0_u64, |acc, v| {
(v.start..=v.end).fold(acc, |acc, n| {
if n <= 10 {
return acc;