summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2021-11-28 13:04:02 -0500
committerKjetil Orbekk <kj@orbekk.com>2021-11-28 13:04:02 -0500
commitc15c33dbbe82cd05d2f952bbb98d72b41be7eedf (patch)
tree6a630ccc8fd980340a3cf6808eab8dcd664d4cc0
parent17049953c08b7c783bf73fcb18ddbb7b05c8a671 (diff)
add exercise
-rw-r--r--exercism/emacs-lisp/armstrong-numbers/armstrong-numbers.el15
1 files changed, 15 insertions, 0 deletions
diff --git a/exercism/emacs-lisp/armstrong-numbers/armstrong-numbers.el b/exercism/emacs-lisp/armstrong-numbers/armstrong-numbers.el
index d41293c..5034610 100644
--- a/exercism/emacs-lisp/armstrong-numbers/armstrong-numbers.el
+++ b/exercism/emacs-lisp/armstrong-numbers/armstrong-numbers.el
@@ -3,6 +3,21 @@
;;; Commentary:
;;; Code:
+(require 'calc)
+(require 'seq)
+
+(defun kj/digits (n)
+ (let ((result nil))
+ (while (> n 0)
+ (push (% n 10) result)
+ (setq n (/ n 10)))
+ result))
+
+(defun armstrong-p (n)
+ (let* ((digits (kj/digits n))
+ (ndigits (seq-length digits))
+ (fn (lambda (n) (math-pow n ndigits))))
+ (eql n (apply '+ (mapcar fn digits)))))
(provide 'armstrong-numbers)
;;; armstrong-numbers.el ends here