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 |
||