This commit is contained in:
timeshifter
2025-03-13 12:40:29 +01:00
parent 37f40689dc
commit 5941c2584f
3 changed files with 49 additions and 0 deletions
File diff suppressed because one or more lines are too long
+6
View File
@@ -0,0 +1,6 @@
[package]
name = "euler22"
version = "0.1.0"
edition = "2024"
[dependencies]
+42
View File
@@ -0,0 +1,42 @@
fn main() {
let mut sum = 0;
let names = read_sorted_names("0022_names.txt");
for (i, name) in names.into_iter().enumerate() {
sum += (i + 1) * get_name_value(&name);
}
println!("{sum}");
}
fn read_sorted_names(filename: &str) -> Vec<String> {
let content = std::fs::read_to_string(filename).unwrap();
let mut names: Vec<String> = content
.split(',')
.map(|n| {
n.chars()
.skip(1)
.take_while(|c| c.is_ascii_uppercase())
.collect()
})
.collect();
names.sort_unstable();
names
}
fn get_name_value(name: &str) -> usize {
name.as_bytes()
.iter()
.map(|c| (c - 64) as usize)
.sum::<usize>()
}
#[cfg(test)]
mod tests {
use crate::get_name_value;
#[test]
fn colin() {
let value = get_name_value("COLIN");
assert_eq!(value, 53);
}
}