in src/dp.rs [207:267]
fn test_mdp() {
// base4
assert_eq!(
find_mdp(&BigUint::from_str_radix("312", 4).unwrap(), 4),
vec![
BigUint::from_str_radix("312", 4).unwrap(),
BigUint::from_str_radix("303", 4).unwrap(),
BigUint::from_str_radix("233", 4).unwrap(),
]
);
// base10
assert_eq!(
find_mdp(&BigUint::from(3413u32), 10),
vec![
BigUint::from(3413u32),
BigUint::from(3409u32),
BigUint::from(3399u32),
BigUint::from(2999u32),
]
);
// base16
assert_eq!(
find_mdp(&BigUint::from_str_radix("D55", 16).unwrap(), 16),
vec![
BigUint::from_str_radix("D55", 16).unwrap(),
BigUint::from_str_radix("D4F", 16).unwrap(),
BigUint::from_str_radix("CFF", 16).unwrap(),
]
);
// base36
assert_eq!(
find_mdp(&BigUint::from_str_radix("2MT", 36).unwrap(), 36),
vec![
BigUint::from_str_radix("2MT", 36).unwrap(),
BigUint::from_str_radix("2LZ", 36).unwrap(),
BigUint::from_str_radix("1ZZ", 36).unwrap(),
]
);
// base256
assert_eq!(
find_mdp(&BigUint::from_str_radix("65535", 10).unwrap(), 256),
vec![BigUint::from_str_radix("65535", 10).unwrap()]
);
// base256 more complex: (256^3 - 7) = 16777209
assert_eq!(
find_mdp(&BigUint::from_str_radix("16777209", 10).unwrap(), 256),
vec![
// 16777209 (decimal) = 1111_1111_1111_1111_1111_1001 (binary)
BigUint::from_str_radix("16777209", 10).unwrap(),
// 16776959 (decimal) = 1111_1111_1111_1110_1111_1111 (binary)
BigUint::from_str_radix("16776959", 10).unwrap(),
// 16711679 (decimal) = 1111_1110_1111_1111_1111_1111 (binary)
BigUint::from_str_radix("16711679", 10).unwrap(),
]
);
}