Luhn test of credit card numbers: Difference between revisions

Emacs Lisp: Remove cl.el use, simplify code
(Added solution for Action!)
(Emacs Lisp: Remove cl.el use, simplify code)
Line 2,475:
 
=={{header|Emacs Lisp}}==
{{libheader|seq.el}}
<lang lisp>
 
(require 'seq)
<lang lisp>(require 'seq)
 
(defun luhn (str)
"Check if an input string STR is a valid credit card number using lhunthe Luhn algorithm."
(if (string-match-p "[^0-9]" str)
(error "String contains invalid character")
(let ((digit-list (reverse (mapcar #'(lambda (x) (- x 48))
(progn
(let ((digit-list (reverse (mapcar #'(lambda (x) (- x 48))
(string-to-list str)))))
(zerop
(mod (apply #'+ (seq-map-indexed
(lambda (elt idx)
(if (oddpnot (zerop (% idx 2)))
(if (> (* 2 elt) 9)
(- (* 2 elt) 9)
Line 2,493 ⟶ 2,494:
elt))
digit-list))
10))))))
 
(mapcar #'luhn '("49927398716" "49927398717" "1234567812345678" "1234567812345670"))</lang>
 
 
(mapcar #'luhn '("49927398716" "49927398717" "1234567812345678" "1234567812345670"))
</lang>
 
{{out}}
 
<pre> (t nil nil t) </pre>
 
=={{header|Erlang}}==
Anonymous user