solved 22
This commit is contained in:
parent
4a5f756db6
commit
0caf96d6db
30
src/bin/problem_22.rs
Normal file
30
src/bin/problem_22.rs
Normal file
@ -0,0 +1,30 @@
|
||||
use std::fs::File;
|
||||
use std::io::{BufRead, BufReader};
|
||||
|
||||
fn main() {
|
||||
let file = File::open("names.txt").expect("Could not open file");
|
||||
let mut reader = BufReader::new(file);
|
||||
let mut sorted_names = vec![];
|
||||
loop {
|
||||
let mut buffer = vec![];
|
||||
let num_bytes = reader.read_until(b',', &mut buffer).expect("could not read until");
|
||||
if num_bytes == 0 {
|
||||
break;
|
||||
}
|
||||
match sorted_names.binary_search(&buffer[..buffer.len()-1].to_vec()) {
|
||||
Ok(_pos) => {}
|
||||
Err(pos) => sorted_names.insert(pos, buffer[..buffer.len()-1].to_vec())
|
||||
}
|
||||
}
|
||||
let score_total = sorted_names.iter().enumerate().map(|(pos, bytes)| {
|
||||
bytes.iter().map(|&byte| {
|
||||
// Don't count " in front and back of name, or in the case of Alonso, only front since it's been removed in the sorting stage for him
|
||||
if byte != b'"' {
|
||||
(byte - b'@') as usize
|
||||
} else {
|
||||
0
|
||||
}
|
||||
}).sum::<usize>() * (pos + 1)
|
||||
}).sum::<usize>();
|
||||
println!("\nscore: {score_total}");
|
||||
}
|
Loading…
Reference in New Issue
Block a user