Guest User

ordered words problem common lisp

a guest
Jul 17th, 2015
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 0.92 KB | None | 0 0
  1. (defun string-to-list (str)
  2.   (loop for char across str
  3.      collect char))
  4.  
  5. (defun ordered-word-p (str)
  6.   (if (= 0 (length str))
  7.       nil
  8.       (apply #'CHAR-NOT-GREATERP (string-to-list str))))
  9.  
  10. (defun words ()
  11.   (with-open-file (in "/usr/share/dict/words")
  12.     (loop for line = (read-line in nil)
  13.        while line collect line)))
  14.  
  15. (defun ordered-words (words)
  16.   (remove-if-not #'ordered-word-p words))
  17.  
  18. (defun longest-ordered-words (words)
  19.   (let ((ow (ordered-words words))
  20.     (longest (list))
  21.     (longest-length 0))
  22.     (loop
  23.        for w in ow
  24.        for cur-length = (length w)
  25.        ;;add to list of longest words
  26.        when (= cur-length longest-length) do
  27.      (setf longest (cons w longest))
  28.        ;;replace list of longest words
  29.        when (> cur-length longest-length) do
  30.      (progn
  31.        (setf longest-length cur-length)
  32.        (setf longest (list w)))
  33.        finally (return (reverse longest)))))
Advertisement
Add Comment
Please, Sign In to add comment