Skip to main content
2 of 2
added 11 characters in body

The version with the count feature of loop in Common Lisp:

(defun count-up-down-characters-with-difference (input-string up-char down-char)
  "Given a string of any length, iterate each character of the string looking
   for up- and down-characters provided by the caller, and return the number of
   each, as well as the difference between them."
  (loop for c across input-string
        count (char-equal c up-char)   into count-up
        count (char-equal c down-char) into count-down
        finally (return (list count-up
                              (- count-down)
                              (- count-up count-down)))))