Damm algorithm: Difference between revisions
Content added Content deleted
No edit summary |
(Added solution for Action!) |
||
Line 171: | Line 171: | ||
NOT OK</pre> |
NOT OK</pre> |
||
=={{header|Action!}}== |
|||
<lang Action!>BYTE FUNC Damm(CHAR ARRAY a) |
|||
BYTE ARRAY table=[ |
|||
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 i,x,c |
|||
x=0 |
|||
FOR i=1 TO a(0) |
|||
DO |
|||
c=a(i) |
|||
IF c<'0 OR c>'9 THEN |
|||
RETURN (0) |
|||
FI |
|||
c==-'0 |
|||
x=table(x*10+c) |
|||
OD |
|||
IF x=0 THEN |
|||
RETURN (1) |
|||
FI |
|||
RETURN (0) |
|||
PROC Test(CHAR ARRAY a) |
|||
BYTE i |
|||
Print(a) Print(" -> ") |
|||
IF Damm(a)=1 THEN |
|||
PrintE("valid") |
|||
ELSE |
|||
PrintE("invalid") |
|||
FI |
|||
RETURN |
|||
PROC Main() |
|||
Test("5724") |
|||
Test("5727") |
|||
Test("112946") |
|||
Test("112949") |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Damm_algorithm.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
5724 -> valid |
|||
5727 -> invalid |
|||
112946 -> valid |
|||
112949 -> invalid |
|||
</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |