From 898ba7669352cbd368d5f3833f182160537c3a9f Mon Sep 17 00:00:00 2001 From: timeshifter Date: Mon, 17 Mar 2025 16:21:23 +0100 Subject: [PATCH] 28 --- src/euler28/Cargo.toml | 6 ++++++ src/euler28/src/main.rs | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/euler28/Cargo.toml create mode 100644 src/euler28/src/main.rs diff --git a/src/euler28/Cargo.toml b/src/euler28/Cargo.toml new file mode 100644 index 0000000..aa6c309 --- /dev/null +++ b/src/euler28/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "euler28" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/src/euler28/src/main.rs b/src/euler28/src/main.rs new file mode 100644 index 0000000..aeb9f90 --- /dev/null +++ b/src/euler28/src/main.rs @@ -0,0 +1,34 @@ +fn main() { + let result = spiral(1001); + println!("{result}"); +} + +fn spiral(edge_length: usize) -> usize { + let max = edge_length * edge_length; + let mut sum = 1; + let mut number = 1; + let mut offset = 2; + let steps = 4; + loop { + for _ in 0..steps { + number += offset; + sum += number; + } + offset += 2; + if number == max { + break; + } + } + + sum +} + +#[cfg(test)] +mod tests { + use crate::spiral; + + #[test] + fn spiral_5() { + assert_eq!(spiral(5), 101); + } +}