Luhn test of credit card numbers: Difference between revisions
Content added Content deleted
(→{{header|TXR}}: Added.) |
|||
Line 1,931: | Line 1,931: | ||
1234567812345670 true |
1234567812345670 true |
||
</pre> |
</pre> |
||
=={{header|TXR}}== |
|||
<lang txr>@(do (defun luhn (num) |
|||
(for ((i 1) (sum 0)) |
|||
((not (zerop num)) (zerop (mod sum 10))) |
|||
((inc i) (set num (trunc num 10))) |
|||
(let ((dig (mod num 10))) |
|||
(if (oddp i) |
|||
(inc sum dig) |
|||
(let ((dig2 (* 2 dig))) |
|||
(inc sum (+ (trunc dig2 10) (mod dig2 10))))))))) |
|||
@(collect :vars nil) |
|||
@{ccnumber /[0-9]+/} |
|||
@(output) |
|||
@ccnumber -> @(if (luhn (int-str ccnumber 10)) "good" "bad") |
|||
@(end) |
|||
@(end)</lang> |
|||
<pre>$ txr luhn.txr luhn.txt |
|||
49927398716 -> good |
|||
49927398717 -> bad |
|||
1234567812345678 -> bad |
|||
1234567812345670 -> good</pre> |
|||
=={{header|Ursala}}== |
=={{header|Ursala}}== |