This commit is contained in:
timeshifter
2025-03-21 10:56:31 +01:00
parent affca52d6a
commit d5e65e142f
3 changed files with 53 additions and 0 deletions
File diff suppressed because one or more lines are too long
+6
View File
@@ -0,0 +1,6 @@
[package]
name = "euler42"
version = "0.1.0"
edition = "2024"
[dependencies]
+46
View File
@@ -0,0 +1,46 @@
use std::{
fs::{self},
vec,
};
fn main() {
let content = read_file();
let triangle_numbers = generate_triangle_numbers();
let mut triangle_word_count = 0;
for value in &content {
if triangle_numbers.contains(value) {
triangle_word_count += 1;
}
}
println!("{triangle_word_count}");
}
fn read_file() -> Vec<usize> {
let s = fs::read_to_string("0042_words.txt").unwrap();
s.split(',')
.map(|s| s.to_string())
.map(|s| {
s.chars()
.skip(1)
.take_while(|c| c.is_ascii_uppercase())
.map(char_to_value)
.sum()
})
.collect()
}
fn char_to_value(c: char) -> usize {
c as usize - 64
}
fn generate_triangle_numbers() -> Vec<usize> {
let mut result = vec![];
for n in 1..=30 {
result.push(triangle_number(n));
}
result
}
fn triangle_number(n: usize) -> usize {
n * (n + 1) / 2
}