Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;; Reddit /r/DailyProgrammer
- ;; [2018-05-14] Challenge #361 [Easy] Tally Program : dailyprogrammer
- ;; https://redd.it/8jcffg
- ;; ECL 12.12.1
- ;; $ ecl -shell better-tally.lisp
- ;; Tuesday, May 15th, 2018
- (defconstant *players* (concatenate 'list "abcde"))
- (defvar *scores*)
- (defun tally (ch str) (cons ch (- (count ch str) (count (char-upcase ch) str))))
- (defun sort-alist (a b) (> (cdr a) (cdr b)))
- (defun display (alist) (maplist
- (lambda (xs) (progn (when xs (format t "~A: ~A" (caar xs) (cdar xs)))
- (if (cdr xs)
- (format t ", ")
- (format t "~&"))))
- alist))
- (defun main (str) (progn (setq *scores* nil)
- (dolist (x *players*) (setq *scores* (cons (tally x str) *scores*)))
- (setq *scores* (sort *scores* #'sort-alist))
- (display *scores*)))
- (main "abcde")
- (main "dbbaCEDbdAacCEAadcB")
- (main "EbAAdbBEaBaaBBdAccbeebaec")
- (quit)
- ;; Output
- ;;
- ;; $ ecl -shell more-tally.lisp
- ;; e: 1, d: 1, c: 1, b: 1, a: 1
- ;; d: 2, b: 2, a: 1, c: 0, e: -2
- ;; c: 3, d: 2, e: 1, a: 1, b: 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement