1. Remove L from your alphabet. As long as people use upper-case letters, it's fine; but someone is going to use lower-case letters and get confused between "l" and "1".
2. Remove T from your alphabet. With poor handwriting, "T" and "7" can be confused.
3. Remove U from your alphabet. It's easy to confuse "U" and "V".
(Note that 29^9 > 6.48 x 10^12, so the above changes don't affect the ability to pack the value into 9 symbols.)
4. Use a better checksum. Maybe there's some deep logic which I'm missing, but I can't see any way to prove that your checksum will detect all single-symbol errors or all two-symbol swaps (these are by far the two most common data-entry errors). I suggest using C = 1 x p_1 + 2 x p_2 + ... + 9 x p_9 mod 29, which will always detect both of these errors.
Thanks for the feedback. I'll look into implementing those changes. I'm not sure why I chose that particular checksum... it's been a while since I wrote this.
1. Remove L from your alphabet. As long as people use upper-case letters, it's fine; but someone is going to use lower-case letters and get confused between "l" and "1".
2. Remove T from your alphabet. With poor handwriting, "T" and "7" can be confused.
3. Remove U from your alphabet. It's easy to confuse "U" and "V".
(Note that 29^9 > 6.48 x 10^12, so the above changes don't affect the ability to pack the value into 9 symbols.)
4. Use a better checksum. Maybe there's some deep logic which I'm missing, but I can't see any way to prove that your checksum will detect all single-symbol errors or all two-symbol swaps (these are by far the two most common data-entry errors). I suggest using C = 1 x p_1 + 2 x p_2 + ... + 9 x p_9 mod 29, which will always detect both of these errors.
-- the other local Comlab DPhil.