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