X-Git-Url: http://git.kpe.io/?p=reversi.git;a=blobdiff_plain;f=edge-table.lisp;h=521c7f1e3fce458ccd01f4e92459f94d03a15dc1;hp=9b2f94928403f06212845e2eea1f5f5c44f78f24;hb=d92820d39c18a373611b5bfb018631cffe3e4bcd;hpb=20c849f483c381f84eae22eee807280c8d00e554 diff --git a/edge-table.lisp b/edge-table.lisp index 9b2f949..521c7f1 100644 --- a/edge-table.lisp +++ b/edge-table.lisp @@ -7,7 +7,7 @@ ;;;; Programer: Kevin M. Rosenberg based on code by Peter Norvig ;;;; Date Started: 1 Nov 2001 ;;;; -;;;; $Id: edge-table.lisp,v 1.4 2003/06/12 12:42:13 kevin Exp $ +;;;; $Id: edge-table.lisp,v 1.6 2003/06/17 05:47:18 kevin Exp $ ;;;; ;;;; This file is Copyright (c) 2001-2003 by Kevin M. Rosenberg ;;;; and Copyright (c) 1998-2002 Peter Norvig @@ -42,11 +42,13 @@ (init-edge-table) *edge-table*) +(deftype edge-table () '(simple-array fixnum (*))) + (defun map-edge-n-pieces (fn player board n squares index) "Call fn on all edges with n pieces." ;; Index counts 1 for player; 2 for opponent - (declare (fixnum index) + (declare (fixnum n index) (type player player) (type square index) (type (simple-array fixnum (100)) board) @@ -59,7 +61,7 @@ (sq (first squares))) (declare (fixnum index3 sq)) (map-edge-n-pieces fn player board n (rest squares) index3) - (when (and (> n 0) (eql (bref board sq) empty)) + (when (and (plusp n) (= (bref board sq) empty)) (setf (bref board sq) player) (map-edge-n-pieces fn player board (- n 1) (rest squares) (+ 1 index3)) @@ -119,7 +121,8 @@ (defun combine-edge-moves (possibilities player) "Combine the best moves." - (declare (optimize (speed 3) (safety 0) (space 0))) + (declare (type player player) + (optimize (speed 3) (safety 0) (space 0))) (let ((prob 1.0) (val 0.0) (fn (if (= player black) #'> #'<))) @@ -196,7 +199,7 @@ for i from 0 sum (the fixnum (cond - ((= (bref board sq) empty) 0) + ((= (bref board sq) empty) 0d0) ((= (bref board sq) player) (aref *static-edge-table* i (piece-stability board sq))) @@ -205,7 +208,7 @@ (eval-when (:compile-toplevel :load-toplevel :execute) (let ((stable 0) (semi-stable 1) (unstable 2)) - (declaim (type fixnum stable semi-stable unstable)) + (declare (type fixnum stable semi-stable unstable)) (defun piece-stability (board sq) (declare (type board board)