diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2021-11-28 13:04:02 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2021-11-28 13:04:02 -0500 |
commit | c15c33dbbe82cd05d2f952bbb98d72b41be7eedf (patch) | |
tree | 6a630ccc8fd980340a3cf6808eab8dcd664d4cc0 /exercism | |
parent | 17049953c08b7c783bf73fcb18ddbb7b05c8a671 (diff) |
add exercise
Diffstat (limited to 'exercism')
-rw-r--r-- | exercism/emacs-lisp/armstrong-numbers/armstrong-numbers.el | 15 |
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 |