r5103: *** empty log message ***
[reversi.git] / base.lisp
index ac4fb55d8d91c256bb3f2844913317f58fe390cb..bbcd87209a1b349a8d46e9712d395c3f090b8156 100644 (file)
--- a/base.lisp
+++ b/base.lisp
@@ -8,7 +8,7 @@
 ;;;;  Programer:      Kevin Rosenberg based on code by Peter Norvig
 ;;;;  Date Started:   1 Nov 2001
 ;;;;
-;;;; $Id: base.lisp,v 1.3 2003/05/06 15:51:20 kevin Exp $
+;;;; $Id: base.lisp,v 1.4 2003/06/12 12:42:13 kevin Exp $
 ;;;;
 ;;;; This file is Copyright (c) 2001-2002 by Kevin M. Rosenberg 
 ;;;; and Copyright (c) 1998-2002 Peter Norvig
@@ -20,9 +20,6 @@
 
 (in-package #:reversi)
 
-(eval-when (:compile-toplevel)
-  (declaim (optimize (safety 1) (space 0) (speed 3) (compilation-speed 0))))
-
 (defparameter +all-directions+ '(-11 -10 -9 -1 1 9 10 11))
 (defconstant +default-max-minutes+ 30)
 
   `(the piece (aref (the board ,board) (the square ,square))))
 
 (defparameter all-squares
-    (loop for i from 11 to 88 when (<= 1 (mod i 10) 8) collect i)
+    (loop for i fixum from 11 to 88 when (<= 1 (mod i 10) 8) collect i)
   "A list of all squares")
 
 (defun initial-board ()
 (defun count-difference (player board)
   "Count player's pieces minus opponent's pieces."
   (declare (type board board)
-          (fixnum player))
-  (- (count player board)
-     (count (opponent player) board)))
+          (fixnum player)
+          (optimize (speed 3) (safety 0) (space 0)))
+  (the fixnum (- (the fixnum (count player board))
+                (the fixum (count (opponent player) board)))))
 
 (defun valid-p (move)
-  (declare (type move move))
+  (declare (type move move)
+          (optimize (speed 3) (safety 0) (space 0)))
   "Valid moves are numbers in the range 11-88 that end in 1-8."
   (and (typep move 'move) (<= 11 move 88) (<= 1 (mod move 10) 8)))
 
   (declare (type board board)
           (type move move)
           (type player player)
-          (optimize (speed 3) (safety 0))
-)
+          (optimize (speed 3) (safety 0) (space 0)))
   (if (= (the piece (bref board move)) empty)
       (block search
        (dolist (dir +all-directions+)
   (declare (type board board)
           (type move move)
           (type player)
-          (optimize (speed 3) (safety 0))
-)
+          (optimize (speed 3) (safety 0) (space 0)))
   (setf (bref board move) player)
   (dolist (dir +all-directions+)
     (declare (type dir dir))
           (type move move)
           (type player player)
           (type dir dir)
-          (optimize (speed 3) (safety 0))
-)
+          (optimize (speed 3) (safety 0) (space 0)))
   (let ((bracketer (would-flip? move player board dir)))
     (when bracketer
       (loop for c from (+ move dir) by dir until (= c (the fixnum bracketer))
           (type move move)
           (type player player)
           (type dir dir)
-          (optimize (speed 3) (safety 0))
-)
+          (optimize (speed 3) (safety 0) (space 0)))
   (let ((c (+ move dir)))
     (declare (type square c))
     (and (= (the piece (bref board c)) (the player (opponent player)))
 (defun replace-board (to from)
   (replace to from))
 
-#+ignore
-(defun replace-board (to from)
-  (declare (type board to from)
-           (optimize (safety 0) (debug 0) (speed 3))
-)
-  (dotimes (i 100)
-    (declare (type 'fixnum i))
-    (setf (aref to i) (aref from i)))
-  to)
-
 #+allegro
 (defun replace-board (to from)
   (declare (type board to from))
   (apply #'vector (loop repeat 40 collect (initial-board))))
 
 
-
 (defvar *move-number* 1 "The number of the move to be played")
 (declaim (type fixnum *move-number*))