Problem 22

(require 'calc-ext)
(defvar calc-command-flags nil)

(with-temp-buffer
  (insert-file-contents-literally (car argv))
  (let (name-lst (i 1) (sum 0))
    (while (re-search-forward "\"\\([A-Z]+?\\)\"" nil t)
      (setq name-lst (cons (match-string-no-properties 1) name-lst)))
    (setq name-lst (sort name-lst #'string<))

    (while name-lst
      (let ((name (car name-lst)) score)
      (setq score (apply #'+ (mapcar #'(lambda (char) (1+ (- char ?A))) (append name nil))))
      (setq sum (math-add sum (math-mul score i)))
      (setq i (1+ i))
      (setq name-lst (cdr name-lst))))
    (princ (math-format-value sum))
    (princ "\n") ))