add 52
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "euler52"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
const MULTIPLES_TO_CHECK: [u64; 5] = [2, 3, 4, 5, 6];
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut i = 10;
|
||||||
|
|
||||||
|
'outer: loop {
|
||||||
|
i += 1;
|
||||||
|
let hm1 = get_amount_of_digits(i);
|
||||||
|
for factor in MULTIPLES_TO_CHECK {
|
||||||
|
let double = i * factor;
|
||||||
|
let hm2 = get_amount_of_digits(double);
|
||||||
|
if hm1 != hm2 {
|
||||||
|
continue 'outer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
println!("{i}");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_amount_of_digits(i: u64) -> HashMap<u64, usize> {
|
||||||
|
let mut result = get_empty_hashmap();
|
||||||
|
i.to_string()
|
||||||
|
.chars()
|
||||||
|
.map(|c| c.to_digit(10).unwrap() as u64)
|
||||||
|
.for_each(|d| {
|
||||||
|
result.insert(d, result[&d] + 1);
|
||||||
|
});
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_empty_hashmap() -> HashMap<u64, usize> {
|
||||||
|
let mut hm = HashMap::new();
|
||||||
|
for i in 0..10 {
|
||||||
|
hm.insert(i, 0);
|
||||||
|
}
|
||||||
|
hm
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use crate::{get_amount_of_digits, get_empty_hashmap};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_amount_of_digits() {
|
||||||
|
let mut correct = get_empty_hashmap();
|
||||||
|
correct.insert(2, 1);
|
||||||
|
correct.insert(5, 2);
|
||||||
|
correct.insert(0, 1);
|
||||||
|
assert_eq!(correct, get_amount_of_digits(5250));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_empty_hashmap() {
|
||||||
|
let hm = get_empty_hashmap();
|
||||||
|
assert_eq!(hm.len(), 10);
|
||||||
|
for (_, v) in hm {
|
||||||
|
assert_eq!(v, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user