Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defun string-to-list (str)
- (loop for char across str
- collect char))
- (defun ordered-word-p (str)
- (if (= 0 (length str))
- nil
- (apply #'CHAR-NOT-GREATERP (string-to-list str))))
- (defun words ()
- (with-open-file (in "/usr/share/dict/words")
- (loop for line = (read-line in nil)
- while line collect line)))
- (defun ordered-words (words)
- (remove-if-not #'ordered-word-p words))
- (defun longest-ordered-words (words)
- (let ((ow (ordered-words words))
- (longest (list))
- (longest-length 0))
- (loop
- for w in ow
- for cur-length = (length w)
- ;;add to list of longest words
- when (= cur-length longest-length) do
- (setf longest (cons w longest))
- ;;replace list of longest words
- when (> cur-length longest-length) do
- (progn
- (setf longest-length cur-length)
- (setf longest (list w)))
- finally (return (reverse longest)))))
Advertisement
Add Comment
Please, Sign In to add comment