#[inline]
pub fn normalize(distance: u32, max_distance: u32) -> f64 {
if max_distance == 0 {
1.0
} else {
1.0 - (distance as f64 / max_distance as f64)
}
}
#[inline]
pub fn build_char_freq(arr: &mut [u32; 128], s: &[u8]) -> bool {
for &b in s {
if b >= 128 {
return false;
}
arr[b as usize] += 1;
}
true
}
#[inline]
pub fn intersect_count(a: &[u32; 128], b: &[u32; 128]) -> u32 {
let mut count = 0u32;
for i in 0..128 {
count += a[i].min(b[i]);
}
count
}
#[inline]
pub fn union_count(a: &[u32; 128], b: &[u32; 128]) -> u32 {
let mut count = 0u32;
for i in 0..128 {
count += a[i].max(b[i]);
}
count
}
#[inline]
pub fn total_count(arr: &[u32; 128]) -> u32 {
arr.iter().sum()
}