diff options
Diffstat (limited to 'exercism/emacs-lisp/hamming')
-rw-r--r-- | exercism/emacs-lisp/hamming/hamming.el | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/exercism/emacs-lisp/hamming/hamming.el b/exercism/emacs-lisp/hamming/hamming.el index 1ef5eeb..468ad63 100644 --- a/exercism/emacs-lisp/hamming/hamming.el +++ b/exercism/emacs-lisp/hamming/hamming.el @@ -4,6 +4,20 @@ ;;; Code: +(require 'cl-seq) +(require 'cl-lib) + +(defun kj/sum (lst) + (cl-reduce #'+ lst :initial-value 0)) + +(defun hamming-distance (l1 l2) + (when (not (eql (length l1) (length l2))) + (error 'lengths-differ)) + (let ((fn (lambda (x y) + (if (equal x y) + 0 + 1)))) + (kj/sum (cl-mapcar fn l1 l2)))) (provide 'hamming) ;;; hamming.el ends here |