Guest User

Daily Programmer #399

a guest
Jul 19th, 2025
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (ns dp399)
  2.  
  3. (defn letter?
  4.   [c]
  5.   (or (<= (int \a) (int c) (int \z))
  6.       (<= (int \A) (int c) (int \Z))))
  7.  
  8. (defn uppercase?
  9.   [c]
  10.   (<= (int \A) (int c) (int \Z)))
  11.  
  12. (defn char-to-lowercase
  13.   "returns nil if `c` isn't a letter"
  14.   [c]
  15.   (if (not (letter? c))
  16.     nil
  17.     (if (not (uppercase? c))
  18.       c
  19.       (as-> c $
  20.         (int $)
  21.         (- $ (int \A))
  22.         (+ $ (int \a))))))
  23.  
  24. (defn char-to-num
  25.   "convert a character to a number, where `\\a` is 1 and `\\z` is 26. if given a
  26.  non-alphabetical character, returns nil"
  27.   [c]
  28.   (if (not (letter? c))
  29.     nil
  30.     (as-> c $
  31.       (char-to-lowercase $)
  32.       (int $)
  33.       (- $ (int \a))
  34.       (inc $))))
  35.  
  36. (defn sum-string-chars
  37.   "get the sum of the string's characters (as converted with `char-to-num`)"
  38.   [s]
  39.   (reduce +
  40.     (as-> s $
  41.       (for [c s :when (letter? c)]
  42.         (char-to-num c)))))
  43.  
Advertisement
Add Comment
Please, Sign In to add comment