X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=edge-table.lisp;h=aae2779e3255d83d6c7478d46048d105b2c706b9;hb=4c844bde197de54c0343f7ab500153278f859ec6;hp=9b2f94928403f06212845e2eea1f5f5c44f78f24;hpb=20c849f483c381f84eae22eee807280c8d00e554;p=reversi.git diff --git a/edge-table.lisp b/edge-table.lisp index 9b2f949..aae2779 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$ ;;;; ;;;; 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) #'> #'<))) @@ -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)