From 77d31cfc8ce5465b28d3e9582117538ad5c09999 Mon Sep 17 00:00:00 2001 From: Nathan Froyd Subject: [PATCH 02/39] clean up CREATE-BOARD's looping logic --- src/lisp/structs.lisp | 21 +++++++++------------ 1 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/lisp/structs.lisp b/src/lisp/structs.lisp index 8bb0a61..238ae5a 100755 --- a/src/lisp/structs.lisp +++ b/src/lisp/structs.lisp @@ -77,19 +77,16 @@ (neighbors (letter-neighbors letter)) (ymax-ind (board-rows board)) (xmax-ind (board-cols board))) - - (dolist (offsety (range -1 2)) - (let ((yoi (+ y offsety))) - (if (member yoi (range 0 ymax-ind)) - (progn - (dolist (offsetx (range -1 2)) - (if (not (and (eql offsety 0) (eql offsetx 0))) - (let ((xoi (+ x offsetx))) - (if (member xoi (range 0 xmax-ind)) + (loop for offsety from -1 to 1 + do (let ((yoi (+ y offsety))) + (when (and (>= yoi 0) (< yoi ymax-ind)) + (let ((row (aref bletters yoi))) + (loop for offsetx from -1 to 1 + unless (and (eql offsety 0) (eql offsetx 0)) + do (let ((xoi (+ x offsetx))) + (when (and (>= xoi 0) (< xoi xmax-ind)) ;; now add the neighbor - (vector-push - (aref (aref bletters yoi) xoi) - neighbors))))))))) + (vector-push (aref row xoi) neighbors)))))))) (setf (letter-neighbors letter) neighbors) (setf (aref (aref bletters y) x) -- 1.6.2