37 lines
781 B
Plaintext
37 lines
781 B
Plaintext
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
|