From bd7d8a2ccbd7a6c159c774d48b2054ae72284665 Mon Sep 17 00:00:00 2001 From: dwrz Date: Tue, 5 Feb 2019 02:29:37 +0000 Subject: [PATCH] Refactor elisp/anagram/anagrams-for Reformat. Use push macro over low-level list-manipulation. --- elisp/anagram/anagram.el | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) 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