r5105: Auto commit for Debian build
[reversi.git] / strategies.lisp
index c2cade730dbc034d99bba3498b72fec6842ff592..e0e108d1d0ed1320b3c9d25b392570cc6bc82421 100644 (file)
@@ -8,7 +8,7 @@
 ;;;;  Programer:      Kevin Rosenberg based on code by Peter Norvig
 ;;;;  Date Started:   1 Nov 2001
 ;;;;
 ;;;;  Programer:      Kevin Rosenberg based on code by Peter Norvig
 ;;;;  Date Started:   1 Nov 2001
 ;;;;
-;;;; $Id: strategies.lisp,v 1.6 2003/06/12 12:42:13 kevin Exp $
+;;;; $Id: strategies.lisp,v 1.7 2003/06/12 13:08:43 kevin Exp $
 ;;;;
 ;;;; This file is Copyright (c) 2001-2003 by Kevin M. Rosenberg 
 ;;;; and Copyright (c) 1998-2002 Peter Norvig
 ;;;;
 ;;;; This file is Copyright (c) 2001-2003 by Kevin M. Rosenberg 
 ;;;; and Copyright (c) 1998-2002 Peter Norvig
@@ -24,8 +24,7 @@
   "Make any legal move."
   (declare (type player player)
           (type board board))
   "Make any legal move."
   (declare (type player player)
           (type board board))
-  (random-elt (legal-moves player board)))
-
+  (random-nth (legal-moves player board)))
 
 (defun maximize-difference (player board)
   "A strategy that maximizes the difference in pieces."
 
 (defun maximize-difference (player board)
   "A strategy that maximizes the difference in pieces."
 (defun negate-value (node)
   "Set the value of a node to its negative."
   (declare (fixnum node)
 (defun negate-value (node)
   "Set the value of a node to its negative."
   (declare (fixnum node)
-          (speed 3) (safety 0) (space 0))
+          (optimize (speed 3) (safety 0) (space 0)))
   (setf (node-value node) (- (node-value node)))
   node)
 
   (setf (node-value node) (- (node-value node)))
   node)
 
 
 (defun alpha-beta-searcher3w (depth eval-fn)
   "Return a strategy that does A-B search with killer moves."
 
 (defun alpha-beta-searcher3w (depth eval-fn)
   "Return a strategy that does A-B search with killer moves."
+  (declare (fixnum depth))
   #'(lambda (player board)
       (multiple-value-bind (value move)
           (alpha-beta3w player board losing-value winning-value
   #'(lambda (player board)
       (multiple-value-bind (value move)
           (alpha-beta3w player board losing-value winning-value
   "Total edge evaluation for player to move on board."
   (declare (type board board)
           (type player player)
   "Total edge evaluation for player to move on board."
   (declare (type board board)
           (type player player)
-          (optimize (speed 3) (safety 0) (space 0))
-  (loop for edge-list in *edge-and-x-lists*
-        sum (aref *edge-table*
-                  (edge-index player board edge-list))))
+          (optimize (speed 3) (safety 0) (space 0)))
+  (loop for edge-list of-type (simple-array fixnum (*)) in *edge-and-x-lists*
+      sum (aref *edge-table* (edge-index player board edge-list))))
 
 (defun iago-eval (player board)
   "Combine edge-stability, current mobility and
 
 (defun iago-eval (player board)
   "Combine edge-stability, current mobility and