Jump to content

Damm algorithm: Difference between revisions

Add Draco
(Add Draco)
Line 1,055:
112946 is valid
112949 is invalid</pre>
 
=={{header|Draco}}==
<lang draco>proc damm(*char str) bool:
[10][10]byte dammtbl = (
(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)
);
byte interim;
char c;
channel input text ch;
interim := 0;
open(ch, str);
while read(ch; c) do
interim := dammtbl[interim][c-'0']
od;
close(ch);
interim = 0
corp
 
proc check(*char str) void:
writeln(str, ": ", if damm(str) then "pass" else "fail" fi)
corp
 
proc main() void:
check("5724");
check("5727");
check("112946");
check("112949");
corp</lang>
{{out}}
<pre>5724: pass
5727: fail
112946: pass
112949: fail</pre>
 
=={{header|F Sharp|F#}}==
2,125

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.