;;;; 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
"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 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)
(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
"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