anchor.diff:               (append queue
                  (loop for row in (generate-rows (nth (- (length rows)
                                                          (length (car step)))
  -                                                    rows))
  +                                                    rows)
  +                                               (length cols))
                        for p = (partition-cols (cdr step) row)
                    if (every #'identity (mapcar #'car p))
                      collect (cons (cons row (car step))
  
positive.code:   "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)
      if (aref array row col)
        collect it
      if (assoc (cons row col) binds :test #'equal)
        collect (cdr it)))
  
  (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)
      if (aref array row col)
        collect it
      if (assoc (cons row col) binds :test #'equal)
        collect (cdr it)))
  
  (defun sqr-defined-spots (array spot &optional binds)
    "Return the numbers on the same 3x3 square as SPOT in ARRAY that are not NIL."
  
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."
  