summaryrefslogtreecommitdiff
path: root/exercism/emacs-lisp/hamming
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2021-11-22 07:38:52 -0500
committerKjetil Orbekk <kj@orbekk.com>2021-11-22 07:38:52 -0500
commit7eb1e664c8d6b0abdc86753fca6f5df280aa3428 (patch)
tree7cb5c7959ad44f94e4a96e8920670f4dc4b331f2 /exercism/emacs-lisp/hamming
parent64791ecab78a00cde43e1ed788dc68b8c4cbba8e (diff)
hamming solution
Diffstat (limited to 'exercism/emacs-lisp/hamming')
-rw-r--r--exercism/emacs-lisp/hamming/hamming.el14
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