Damm algorithm: Difference between revisions

Content added Content deleted
m (→‎{{header|AppleScript}}: Doubled the speed by replacing the 2-dimensional list with a "referenced" 1-dimensional version.)
No edit summary
Line 1,119: Line 1,119:
112946 is valid!
112946 is valid!
Enter the number to check: 0</pre>
Enter the number to check: 0</pre>
=={{header|M2000 Interpreter}}==

<lang M2000 Interpreter>
Module Damm_Algorithm{
Function Prepare {
function OperationTable {
data (0, 3, 1, 7, 5, 9, 8, 6, 4, 2)
data (7, 0, 9, 2, 1, 5, 4, 8, 6, 3)
data (4, 2, 0, 6, 8, 7, 1, 3, 5, 9)
data (1, 7, 5, 0, 9, 8, 3, 4, 2, 6)
data (6, 1, 2, 3, 0, 4, 5, 9, 7, 8)
data (3, 6, 7, 4, 2, 0, 9, 5, 8, 1)
data (5, 8, 6, 9, 7, 2, 0, 1, 3, 4)
data (8, 9, 4, 5, 3, 6, 2, 0, 1, 7)
data (9, 4, 3, 8, 6, 1, 7, 2, 0, 5)
data (2, 5, 8, 1, 4, 3, 6, 7, 9, 0)
=array([])
}
Digits= Lambda (d) ->{
d$=str$(d,"")
for i=1 to len(d$)
data val(mid$(d$,i,1))
next
=Array([])
}
=Lambda a()=OperationTable(), Digits (N) -> {
dim b()
b()=Digits(N)
m=0
for i=0 to len(b())-1
m=a(m)(b(i))
next i
=m
}
}
Damm=Prepare()
Data 5724, 5727, 112946, 112940
while not empty
over ' double the top of stack
over
Print number, Damm(number), Damm(number)=0
End While
}
Damm_Algorithm
</lang>
{{out}}
<pre>
5724 0 True
5727 9 False
112946 0 True
112940 5 False
</pre>
=={{header|MAD}}==
=={{header|MAD}}==

<lang MAD> NORMAL MODE IS INTEGER
<lang MAD> NORMAL MODE IS INTEGER