Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
40
Task/Damm-algorithm/Cowgol/damm-algorithm.cowgol
Normal file
40
Task/Damm-algorithm/Cowgol/damm-algorithm.cowgol
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
include "cowgol.coh";
|
||||
|
||||
# Damm test on number given as ASCII string
|
||||
# Returns check digit
|
||||
sub damm(num: [uint8]): (chk: uint8) is
|
||||
var table: uint8[] := {
|
||||
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
|
||||
};
|
||||
|
||||
chk := 0;
|
||||
while [num] != 0 loop
|
||||
chk := table[(chk<<1) + (chk<<3) + ([num] - '0')];
|
||||
num := @next num;
|
||||
end loop;
|
||||
end sub;
|
||||
|
||||
# Test and print
|
||||
sub test(num: [uint8]) is
|
||||
print(num);
|
||||
print(":");
|
||||
if damm(num) == 0 then
|
||||
print("Pass\n");
|
||||
else
|
||||
print("Fail\n");
|
||||
end if;
|
||||
end sub;
|
||||
|
||||
test("5724");
|
||||
test("5727");
|
||||
test("112946");
|
||||
test("112949");
|
||||
Loading…
Add table
Add a link
Reference in a new issue