solved 22
This commit is contained in:
		
							
								
								
									
										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}");
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user