mirror of
https://gitlab.com/MisterBiggs/aoc_2015-rust.git
synced 2025-06-16 06:56:42 +00:00
42 lines
873 B
Rust
42 lines
873 B
Rust
use md5;
|
|
|
|
pub fn run() {
|
|
println!("Day 4: [PRECALCULATED]");
|
|
let input = "yzbqklnj".to_string();
|
|
|
|
println!("\tPart 1: 282749");
|
|
println!("\tPart 2: 9962624");
|
|
// println!("\tPart 1: {}", part1(&input, 5));
|
|
// println!("\tPart 2: {}", part1(&input, 6));
|
|
}
|
|
|
|
fn part1(input: &String, zeros: usize) -> usize {
|
|
let mut key: usize = 0;
|
|
|
|
let max_iter = 1e9 as usize;
|
|
loop {
|
|
let digest = md5::compute(format!("{}{}", input, key));
|
|
|
|
if format!("{:x},", digest).starts_with(&"0".repeat(zeros)) {
|
|
return key;
|
|
}
|
|
|
|
key += 1;
|
|
|
|
if key == max_iter {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_part_1() {
|
|
assert_eq!(part1(&"abcdef".to_string(), 5), 609043);
|
|
assert_eq!(part1(&"pqrstuv".to_string(), 5), 1048970);
|
|
}
|
|
}
|