Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
35
Task/Damm-algorithm/Rust/damm-algorithm.rust
Normal file
35
Task/Damm-algorithm/Rust/damm-algorithm.rust
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue