anchor.diff:    (and (puzzle-ok-p puzzle) puzzle))
   
   (defmethod print-object ((puzzle puzzle) stream)
  +  (fresh-line stream)
     (loop repeat (1- (* 2 (width puzzle)))
        do (princ #\- stream))
     (terpri stream)
  
positive.code:                    for j below (width puzzle)
                     for cell in candidate
                     do (setf (aref (cells puzzle) row j) cell))
               if (solve-aux (1+ row))
               do (return-from solve-aux puzzle))
            (loop for j below (width puzzle)
               for cell in original-row
  
negative.code:      (when (plusp run-size)
         (push run-size runs))
       (nreverse runs))))
  
  (defun puzzle-prefix-ok-p (puzzle rows)
    (loop
       for j below (width puzzle)
       for line = (get-col puzzle j)
       if (not (constraint-match-prefix-p line (svref (verti puzzle) j) rows))
       return nil
       finally (return t)))
  
  (defun puzzle-ok-p (puzzle)
    (loop
  