summaryrefslogtreecommitdiff
path: root/exercism/emacs-lisp/hamming/hamming.el
blob: 468ad63549bbc7b6dcd9440e5c8e448c8a2d463d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
;;; hamming.el --- Hamming (exercism)

;;; Commentary:

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