Damm algorithm: Difference between revisions

Content added Content deleted
No edit summary
(Added AutoHotkey)
Line 144: Line 144:
check digit of 5727 is invalid
check digit of 5727 is invalid
check digit of 112946 is valid</pre>
check digit of 112946 is valid</pre>

=={{header|AutoHotkey}}==
<lang AutoHotkey>Damm(num){
row := 1, Damm := [[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]]
for i, v in StrSplit(SubStr(num, 1, -1)){
++row := Damm[row, v+1]
}
return (SubStr(num, 0)=row-1 && !Damm[row, row])
}</lang>
Examples:<lang AutoHotkey>result := ""
for i, num in [5724, 5727, 112946, 112949]
result .= num "`tis " (Damm(num) ? "valid" : "not valid") "`n"
MsgBox % result</lang>
Outputs:<pre>5724 is valid
5727 is not valid
112946 is valid
112949 is not valid</pre>


=={{header|AWK}}==
=={{header|AWK}}==