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