28
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
[package]
|
||||
name = "euler28"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user