use crate::Solution;
use pmath::digits::digits;
problem!(Problem0052, 52, "Permuted Multiples");
impl Solution for Problem0052 {
fn solve(&self) -> String {
let mut digits1 = Vec::new();
let mut digits2 = Vec::new();
for n in 1.. {
let start = 10_u64.pow(n - 1);
let end = (10_u64.pow(n) - 1) / 6;
for num in start..=end {
digits1.clear();
digits1.extend(digits(num, 10));
digits1.sort();
for multiple in 2..=6 {
digits2.clear();
digits2.extend(digits(num * multiple, 10));
digits2.sort();
if digits1 != digits2 {
break;
}
if multiple == 6 {
return num.to_string();
}
}
}
}
unreachable!("Previous loop can only be exited by returning a value");
}
}