1pub fn za(z: u32, a: u32) -> u32 {
8 z * 1000 + a
9}
10
11pub fn z_from_za(za: u32) -> u32 {
13 za / 1000
14}
15
16pub fn a_from_za(za: u32) -> u32 {
18 za % 1000
19}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24
25 #[test]
26 fn test_za_roundtrip() {
27 for &(z, a) in &[(92, 238), (1, 1), (26, 56), (94, 239), (0, 1)] {
28 let encoded = za(z, a);
29 assert_eq!(z_from_za(encoded), z);
30 assert_eq!(a_from_za(encoded), a);
31 }
32 }
33
34 #[test]
35 fn test_za_known_values() {
36 assert_eq!(za(92, 238), 92238);
37 assert_eq!(za(1, 1), 1001);
38 assert_eq!(za(0, 1), 1);
39 }
40}