Damm algorithm: Difference between revisions
Content added Content deleted
m (→static table: changed some (output) wording, changed whitespace.) |
(Ada version) |
||
Line 38: | Line 38: | ||
5727 Validates as: 0B |
5727 Validates as: 0B |
||
112946 Validates as: 1B |
112946 Validates as: 1B |
||
</pre> |
|||
=={{header|Ada}}== |
|||
<lang Ada>with Ada.Text_IO; |
|||
procedure Damm_Algorithm is |
|||
function Damm (Input : in String) return Boolean |
|||
is |
|||
subtype Digit is Character range '0' .. '9'; |
|||
Table : constant array (Digit, Digit) of Digit := |
|||
(('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')); |
|||
Intern : Digit := '0'; |
|||
begin |
|||
for D of Input loop |
|||
Intern := Table (Intern, D); |
|||
end loop; |
|||
return Intern = '0'; |
|||
end Damm; |
|||
procedure Put_Damm (Input : in String) is |
|||
use Ada.Text_IO; |
|||
begin |
|||
Put_Line ("Damm of " & Input & " validates as " & Damm (Input)'Image); |
|||
end Put_Damm; |
|||
begin |
|||
Put_Damm ("5724"); |
|||
Put_Damm ("5727"); |
|||
Put_Damm ("112946"); |
|||
Put_Damm ("112949"); |
|||
end Damm_Algorithm;</lang> |
|||
{{out}} |
|||
<pre>Damm of 5724 validates as TRUE |
|||
Damm of 5727 validates as FALSE |
|||
Damm of 112946 validates as TRUE |
|||
Damm of 112949 validates as FALSE |
|||
</pre> |
</pre> |
||