anchor.diff:    "Return the numbers on the same row as SPOT in ARRAY that are not NIL."
     (loop for col to (array-dimension array 1)
           for row = (car spot)
  +        for bind = (assoc (cons row col) binds :test #'equal)
       if (aref array row col)
         collect it
  -    if (assoc (cons row col) binds :test #'equal)
  -      collect (cdr it)))
  +    if bind
  +      collect (cdr bind)))
   
   (defun col-defined-spots (array spot &optional binds)
     "Return the numbers on the same column as SPOT in ARRAY that are not NIL."
     (loop for row to (array-dimension array 0)
           for col = (cdr spot)
  +        for bind = (assoc (cons row col) binds :test #'equal)
       if (aref array row col)
         collect it
  -    if (assoc (cons row col) binds :test #'equal)
  -      collect (cdr it)))
  +    if bind
  +      collect (cdr bind)))
   
   (defun sqr-defined-spots (array spot &optional binds)
     "Return the numbers on the same 3x3 square as SPOT in ARRAY that are not NIL."
  
positive.code:              (append queue
                 (loop for row in (generate-rows (nth (- (length rows)
                                                         (length (car step)))
                                                      rows))
                       for p = (partition-cols (cdr step) row)
                   if (every #'identity (mapcar #'car p))
                     collect (cons (cons row (car step))
  
negative.code:                   (solve-nonogram (butlast rows)
                                    (mapcar #'cdr p)
                                    (cons row puzzle))))
                (generate-rows (car (last rows)) (length cols)))))
  
  (defun solve-nonogram-iter (rows cols &aux res)
    "Alternative iterative version of SOLVE-NONOGRAM."
  