37 lines
842 B
Rust
Executable File
37 lines
842 B
Rust
Executable File
use std::fs::File;
|
|
use std::io::{self, prelude::*, BufReader};
|
|
|
|
fn get_hash(line: &str) -> u32 {
|
|
let mut ret = 0;
|
|
for s in line.chars(){
|
|
let ascii = s as u32;
|
|
ret += ascii;
|
|
ret = 17*ret;
|
|
ret = ret%256;
|
|
// println!("{}", ascii);
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
fn process_text(parts: Vec<&str>) -> u32 {
|
|
let mut ret = 0;
|
|
for part in parts {
|
|
ret += get_hash(part);
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
fn main() -> io::Result<()> {
|
|
let file = File::open("../input.txt")?;
|
|
let reader = BufReader::new(file);
|
|
let line = reader.lines().collect::<io::Result<Vec<String>>>().expect("failed");
|
|
let parts = line[0].split(&[',']).collect::<Vec<&str>>();
|
|
let answer = process_text(
|
|
parts
|
|
);
|
|
println!("{}", answer);
|
|
|
|
|
|
Ok(())
|
|
}
|