(lisp::defun compiler::place (compiler::i compiler::j) (lisp::declare (lisp::type lisp::fixnum compiler::i compiler::j)) (lisp::let ((compiler::end (compiler::fref compiler::piecemax compiler::i))) (lisp::declare (lisp::type lisp::fixnum compiler::end)) (lisp::do ((compiler::k 0 (lisp::the lisp::fixnum (lisp::1+ compiler::k)))) ((lisp::> compiler::k compiler::end)) (lisp::declare (lisp::type lisp::fixnum compiler::k)) (lisp::cond ((lisp::aref compiler::puzzle-p compiler::i compiler::k) (lisp::setf (lisp::aref compiler::puzzle (lisp::the lisp::fixnum (lisp::+ compiler::j compiler::k))) lisp::t)))) (lisp::setf (compiler::fref compiler::piececount (compiler::fref compiler::puzzle-class compiler::i)) (lisp::the lisp::fixnum (lisp::- (lisp::the lisp::fixnum (compiler::fref compiler::piececount (compiler::fref compiler::puzzle-class compiler::i))) 1))) (lisp::do ((compiler::k compiler::j (lisp::the lisp::fixnum (lisp::1+ compiler::k)))) ((lisp::> compiler::k compiler::puzzle-size) (lisp::terpri) (lisp::princ "Puzzle filled") 0) (lisp::declare (lisp::type lisp::fixnum compiler::k)) (lisp::cond ((lisp::not (lisp::aref compiler::puzzle compiler::k)) (lisp::return compiler::k))))))