Sha256: d3af3afead831c5e5fb429aa752fd89c1445b34defad634c6d2aca4aec6cb82f

Contents?: true

Size: 1.35 KB

Versions: 396

Compression:

Stored size: 1.35 KB

Contents

;;; raindrops.el --- Raindrops (exercism)

;;; Commentary:

;;; Code:

(require 'cl)



(defun convert (n)
  "Convert integer N to its raindrops string."
  (let ((drops "")
        (factors (remove-if-not #'(lambda (v)
                                    (and (>= v 3) (<= v 7)))
                                (prime-factors n))))
    (if (not (null factors))
        (progn
          (when (member 3 factors)
            (setq drops (concat drops "Pling")))
          (when (member 5 factors)
            (setq drops (concat drops "Plang")))
          (when (member 7 factors)
            (setq drops (concat drops "Plong"))))
      (setq drops (number-to-string n)))
    drops))


(defun prime-factors (n)
  "Return a list of prime factors of N."
  (let ((result-list nil)
        (n-original n))
    (if (and (integerp n) (> n 1))
        (let ((limit (/ n 2))
              (divisor 2))
          (while (<= divisor limit)
            (if (= 0 (% n divisor))
                (setq n (/ n divisor)
                      limit n
                      result-list (append result-list (list divisor)))
              (if (= divisor 2)
                  (setq divisor 3)
                (setq divisor (+ divisor 2)))))
          (if (null result-list)
              (setq result-list (list n-original)))))
    result-list))







(provide 'raindrops)
;;; raindrops.el ends here

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.179 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.178 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.177 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.176 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.175 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.174 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.173 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.172 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.171 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.170 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.169 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.167 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.166 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.165 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.164 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.163 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.162 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.161 tracks/elisp/exercises/raindrops/example.el
trackler-2.2.1.160 tracks/elisp/exercises/raindrops/example.el