// A pandigital number is an integer that contains each digit from 0 to 9
// at least once, with the condition that the leading digit must be nonzero
// for example, 1023456987 is a pandigital number
fn is_pandigital_range(num: i64, start: u8, end: u8) -> bool {
let s = num.to_string();
// Build the expected digit string
let expected: String = (start..=end)
.map(|d| char::from(b'0' + d))
.collect();
// Sort digits of the number
let mut digits: Vec<char> = s.chars().collect();
digits.sort_unstable();
let sorted: String = digits.into_iter().collect();
sorted == expected
}
fn main() {
println!("{}", is_pandigital_range(123456789, 1, 9));
println!("{}", is_pandigital_range(1023456789, 0, 9));
println!("{}", is_pandigital_range(987654321, 1, 9));
println!("{}", is_pandigital_range(123456780, 1, 9));
println!("{}", is_pandigital_range(123456780, 1, 9));
println!("{}", is_pandigital_range(123455789, 1, 9));
println!("{}", is_pandigital_range(12345, 1, 9));
}
/*
run:
true
true
true
false
false
false
false
*/