27 lines
646 B
Tcl
27 lines
646 B
Tcl
proc damm {number} {
|
|
set digits [split $number ""]
|
|
set tbl {
|
|
{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}
|
|
}
|
|
|
|
set row 0
|
|
foreach col $digits {
|
|
set row [lindex $tbl $row $col]
|
|
}
|
|
return [expr {$row == 0 ? 1 : 0}]
|
|
}
|
|
|
|
foreach number {5724 5727 112946} {
|
|
set correct [damm $number]
|
|
puts "$number:\tChecksum digit [expr {$correct ? "" : "in"}]correct."
|
|
}
|