summaryrefslogtreecommitdiff
path: root/src/bin/day4.rs
blob: c6963bb4a365c9a61dd8bd9b33bfbb56b91653d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
fn main() {
    let input = "ckczppom";
    println!("4a: {}", find_hash_count(input, "00000"));
    println!("4b: {}", find_hash_count(input, "000000"));
}

fn find_hash_count(input: &str, start: &str) -> u32 {
    let mut i = 0;

    loop {
        let text = input.to_string() + &i.to_string();
        let digest = format!("{:?}", md5::compute(&text));

        if digest.starts_with(start) {
            return i;
        }

        i += 1;
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test() {
        assert_eq!(find_hash_count("abcdef", "00000"), 609043);
        assert_eq!(find_hash_count("pqrstuv", "00000"), 1048970);
    }
}