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