From 43be07c4f44189168db7c12005b9621be5622ce2 Mon Sep 17 00:00:00 2001 From: Jan Doumont Date: Tue, 2 Dec 2025 02:55:56 +0100 Subject: [PATCH] day1 part1 --- .gitignore | 1 + Cargo.lock | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 9 ++++ src/day1.rs | 32 ++++++++++++ src/lib.rs | 8 +++ src/main.rs | 9 ++++ 6 files changed, 205 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/day1.rs create mode 100644 src/lib.rs create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..1b20f9b --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,146 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "advent-of-code-2025" +version = "0.1.0" +dependencies = [ + "aoc-runner", + "aoc-runner-derive", +] + +[[package]] +name = "aoc-runner" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d21ef9204ad206a5a3e918e9920da04e1118ad91ce4f23570be964b9d6b9dfcb" + +[[package]] +name = "aoc-runner-derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba8b944269d3fee645d281b1335e1797044db497bb02d0098cc3fdb8900069cc" +dependencies = [ + "aoc-runner-internal", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "aoc-runner-internal" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "274b0ba7f3669a45ec0aaacf94eb032a749de880ab776091576cca94037c9982" +dependencies = [ + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..aa0a9d7 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "advent-of-code-2025" +version = "0.1.0" +authors = ["Jan Doumont "] +edition = "2024" + +[dependencies] +aoc-runner = "0.3.0" +aoc-runner-derive = "0.3.0" diff --git a/src/day1.rs b/src/day1.rs new file mode 100644 index 0000000..0e19679 --- /dev/null +++ b/src/day1.rs @@ -0,0 +1,32 @@ +#[aoc(day1, part1)] +pub fn part1(input: &str) -> i32 { + let mut dial_counter = DialCounter { + position: 50, + zero_count: 0, + }; + for line in input.lines() { + dial_counter.rotate(line) + } + dial_counter.zero_count +} + +struct DialCounter { + position: i32, + zero_count: i32, +} + +impl DialCounter { + fn rotate(&mut self, operation: &str) { + self.position = match operation.chars().nth(0).unwrap() { + 'L' => (self.position - operation[1..].parse::().unwrap()) % 100, + 'R' => (self.position + operation[1..].parse::().unwrap()) % 100, + _ => panic!("Unexpected input!"), + }; + if self.position == 0 { + self.zero_count = self.zero_count + 1; + } + } +} + +#[cfg(test)] +mod tests {} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..8700cb1 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,8 @@ +extern crate aoc_runner; + +#[macro_use] +extern crate aoc_runner_derive; + +pub mod day1; + +aoc_lib! { year = 2025 } diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..977e2ad --- /dev/null +++ b/src/main.rs @@ -0,0 +1,9 @@ +extern crate advent_of_code_2025; +extern crate aoc_runner_derive; +extern crate aoc_runner; + + +use aoc_runner_derive::aoc_main; + + +aoc_main! { lib = advent_of_code_2025 }