Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
43
Task/Damm-algorithm/CLU/damm-algorithm.clu
Normal file
43
Task/Damm-algorithm/CLU/damm-algorithm.clu
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
% Verify that the Damm check digit of a string of digits is correct.
|
||||
% Signals 'bad_format' if the string contains non-digits.
|
||||
damm = proc (s: string) returns (bool) signals (bad_format)
|
||||
ai = array[int]
|
||||
aai = array[ai]
|
||||
own damm_table: aai := aai$[0:
|
||||
ai$[0: 0,3,1,7,5,9,8,6,4,2],
|
||||
ai$[0: 7,0,9,2,1,5,4,8,6,3],
|
||||
ai$[0: 4,2,0,6,8,7,1,3,5,9],
|
||||
ai$[0: 1,7,5,0,9,8,3,4,2,6],
|
||||
ai$[0: 6,1,2,3,0,4,5,9,7,8],
|
||||
ai$[0: 3,6,7,4,2,0,9,5,8,1],
|
||||
ai$[0: 5,8,6,9,7,2,0,1,3,4],
|
||||
ai$[0: 8,9,4,5,3,6,2,0,1,7],
|
||||
ai$[0: 9,4,3,8,6,1,7,2,0,5],
|
||||
ai$[0: 2,5,8,1,4,3,6,7,9,0]
|
||||
]
|
||||
|
||||
interim: int := 0
|
||||
for c: char in string$chars(s) do
|
||||
d: int := int$parse(string$c2s(c)) resignal bad_format
|
||||
interim := damm_table[interim][d]
|
||||
end
|
||||
|
||||
return(interim = 0)
|
||||
end damm
|
||||
|
||||
% Checks
|
||||
start_up = proc ()
|
||||
po: stream := stream$primary_output()
|
||||
tests: sequence[string] := sequence[string]$[
|
||||
"5724", "5727", "112946", "112949"
|
||||
]
|
||||
|
||||
for test: string in sequence[string]$elements(tests) do
|
||||
stream$puts(po, test || ": ")
|
||||
if damm(test) then
|
||||
stream$putl(po, "pass")
|
||||
else
|
||||
stream$putl(po, "fail")
|
||||
end
|
||||
end
|
||||
end start_up
|
||||
Loading…
Add table
Add a link
Reference in a new issue