From: Mark Oteiza Date: Mon, 20 Mar 2017 02:21:03 +0000 (-0400) Subject: Simpler filter implementation X-Git-Tag: emacs-26.0.90~522^2~68 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=34d69ed7355572b905bf16ab84024b7056cffe85;p=emacs.git Simpler filter implementation * lisp/play/dunnet.el (dun-endgame-question): Get or set dun-endgame-questions one time only. Use dolist and an index to prune the list. --- diff --git a/lisp/play/dunnet.el b/lisp/play/dunnet.el index 677946262c5..8f013bb09f2 100644 --- a/lisp/play/dunnet.el +++ b/lisp/play/dunnet.el @@ -2106,28 +2106,23 @@ for a moment, then straighten yourself up.\n") (dun-mprincl "That answer is incorrect."))))) (defun dun-endgame-question () -(if (not dun-endgame-questions) - (progn - (dun-mprincl "Your question is:") - (dun-mprincl "No more questions, just do ‘answer foo’.") - (setq dun-correct-answer '("foo"))) - (let (which i newques) - (setq i 0) - (setq newques nil) - (setq which (random (length dun-endgame-questions))) - (dun-mprincl "Your question is:") - (dun-mprincl (setq dun-endgame-question (car - (nth which - dun-endgame-questions)))) - (setq dun-correct-answer (cdr (nth which dun-endgame-questions))) - (while (< i which) - (setq newques (append newques (list (nth i dun-endgame-questions)))) - (setq i (1+ i))) - (setq i (1+ which)) - (while (< i (length dun-endgame-questions)) - (setq newques (append newques (list (nth i dun-endgame-questions)))) - (setq i (1+ i))) - (setq dun-endgame-questions newques)))) + (let ((questions dun-endgame-questions)) + (if (null questions) + (progn + (dun-mprincl "Your question is:") + (dun-mprincl "No more questions, just do ‘answer foo’.") + (setq dun-correct-answer '("foo"))) + (let* ((which (random (length questions))) + (question (nth which questions))) + (dun-mprincl "Your question is:") + (dun-mprincl (setq dun-endgame-question (car question))) + (setq dun-correct-answer (cdr question)) + (let ((i 0) res) + (dolist (q questions) + (when (/= i which) + (push q res)) + (setq i (1+ i))) + (setq dun-endgame-questions (nreverse res))))))) (defun dun-power (_args) (if (not (= dun-current-room pc-area))