How to resolve the algorithm Damm algorithm step by step in the Rust programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Damm algorithm step by step in the Rust programming language

Table of Contents

Problem Statement

The Damm algorithm is a checksum algorithm which detects all single digit errors and adjacent transposition errors.

The algorithm is named after H. Michael Damm.

Verify the checksum, stored as last digit of an input.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Damm algorithm step by step in the Rust programming language

Source code in the rust programming language

fn damm(number: &str) -> u8 {
    static TABLE: [[u8; 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],
    ];

    number.chars().fold(0, |row, digit| {
        let digit = digit.to_digit(10).unwrap();
        TABLE[row as usize][digit as usize]
    })
}

fn damm_validate(number: &str) -> bool {
    damm(number) == 0
}

fn main() {
    let numbers = &["5724", "5727", "112946"];
    for number in numbers {
        let is_valid = damm_validate(number);
        if is_valid {
            println!("{:>6} is valid", number);
        } else {
            println!("{:>6} is invalid", number);
        }
    }
}


  

You may also check:How to resolve the algorithm Loops/For with a specified step step by step in the 360 Assembly programming language
You may also check:How to resolve the algorithm Perfect shuffle step by step in the Tcl programming language
You may also check:How to resolve the algorithm CSV to HTML translation step by step in the FutureBasic programming language
You may also check:How to resolve the algorithm Dot product step by step in the Yabasic programming language
You may also check:How to resolve the algorithm Guess the number/With feedback (player) step by step in the Ring programming language