Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const OP_TABLE: [[usize; 10]; 10] = [
- [0, 3, 1, 7, 5, 9, 8, 6, 4, 2],
- [7, 0, 9, 2, 1, 5, 4, 8, 6, 3],
- [4, 2, 0, 6, 8, 7, 1, 3, 5, 9],
- [1, 7, 5, 0, 9, 8, 3, 4, 2, 6],
- [6, 1, 2, 3, 0, 4, 5, 9, 7, 8],
- [3, 6, 7, 4, 2, 0, 9, 5, 8, 1],
- [5, 8, 6, 9, 7, 2, 0, 1, 3, 4],
- [8, 9, 4, 5, 3, 6, 2, 0, 1, 7],
- [9, 4, 3, 8, 6, 1, 7, 2, 0, 5],
- [2, 5, 8, 1, 4, 3, 6, 7, 9, 0]
- ];
- /// Calculates the check digit for a given ID
- fn check_digit(input: &[usize]) -> usize {
- let mut interim = 0;
- for &digit in input.iter() {
- interim = OP_TABLE[interim][digit];
- }
- interim
- }
- /// Is an ID valid?
- pub fn verify(id: &[usize]) -> bool {
- check_digit(id) == 0
- }
- /// Append a checksum to an existing ID
- pub fn id(mut input: Vec<usize>) -> Vec<usize> {
- let id = check_digit(&input);
- input.push(id);
- input
- }
- fn main() {
- let mut id = vec![ 7, 8, 9, 3, 5, 7, 2 ];
- let sum = check_digit(&id);
- id.push(sum);
- //println!("{:?}, {}", id, );
- println!("{}", verify(&id));
- }
Add Comment
Please, Sign In to add comment