add 22
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "euler22"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user