diff --git a/elisp/anagram/anagram.el b/elisp/anagram/anagram.el index f88428a..337715c 100644 --- a/elisp/anagram/anagram.el +++ b/elisp/anagram/anagram.el @@ -29,18 +29,16 @@ CHAR-COUNT and COMPARISON-CHAR-COUNT should be alists in (character . count) for (setq are-equal nil)) (setq are-equal nil))))) -(defun anagrams-for(word anagrams) +(defun anagrams-for (word anagrams) "Return all elements of ANAGRAMS which are anagrams for WORD. Case insensitive." (let ((candidates ()) (word-char-count (get-char-count (downcase word)))) (dolist (candidate anagrams candidates) - (if (and - (not (string-equal word candidate)) - (equal (length word) (length candidate)) - (equal-char-count word-char-count (get-char-count (downcase candidate)))) - (if (> (length candidates) 0) - (add-to-list 'candidates candidate t) - (setq candidates (cons candidate nil))))))) + (when (and (not (string-equal word candidate)) + (= (length word) (length candidate)) + (equal-char-count word-char-count (get-char-count (downcase candidate)))) + (push candidate candidates))) + (reverse candidates))) ;;; anagram.el ends here