X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=strategies.lisp;h=e7d2fe681063a35c0c402e28b0a035c7cb99a2dc;hb=9dbc5a868c52636d162d1992a516033d7b3f7e8f;hp=3d0570b1052bfa8b9b585866af67ee8fe89e142b;hpb=b29c5d666cbd1d0c08d4da49b32e4ed41c6dabba;p=reversi.git diff --git a/strategies.lisp b/strategies.lisp index 3d0570b..e7d2fe6 100644 --- a/strategies.lisp +++ b/strategies.lisp @@ -1,18 +1,27 @@ +;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10; Package: reversi -*- ;;;;*************************************************************************** ;;;; ;;;; FILE IDENTIFICATION ;;;; -;;;; Name: strategies.cl +;;;; Name: strategies.lisp ;;;; Purpose: Strategy routines for reversi -;;;; Programer: Kevin M. Rosenberg, M.D. +;;;; Programer: Kevin Rosenberg based on code by Peter Norvig ;;;; Date Started: 1 Nov 2001 -;;;; CVS Id: $Id: strategies.lisp,v 1.1 2002/10/25 08:36:42 kevin Exp $ ;;;; +;;;; $Id: strategies.lisp,v 1.5 2003/05/06 15:51:20 kevin Exp $ +;;;; +;;;; This file is Copyright (c) 2001-2002 by Kevin M. Rosenberg +;;;; and Copyright (c) 1998-2002 Peter Norvig +;;;; +;;;; Reversi users are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser GNU Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;;*************************************************************************** -(in-package :reversi) -(declaim (optimize (safety 1) (debug 3) (speed 3) (compilation-speed 0))) +(in-package #:reversi) +(eval-when (:compile-toplevel) + (declaim (optimize (safety 1) (space 0) (speed 3) (compilation-speed 0)))) (defun random-strategy (player board) "Make any legal move." @@ -43,8 +52,8 @@ (make-move move player (copy-board board)))) moves)) - (best (apply #'max scores))) - (declare (fixnum moves best)) + (best (apply #'max scores))) + (declare (fixnum best)) (elt moves (position best scores))))) (eval-when (:compile-toplevel :load-toplevel :execute) @@ -227,9 +236,9 @@ (defstruct (node) - (square nil :type square) - (board nil :type board) - (value nil :type integer)) + (square(missing-argument) :type square) + (board (missing-argument) :type board) + (value (missing-argument) :type integer)) (defun alpha-beta-searcher2 (depth eval-fn) "Return a strategy that does A-B search with sorted moves." @@ -526,6 +535,9 @@ '(random ab3-df ab3-wt ab3-md-wt iago))) +(defun text-reversi () + "Sets up a text game between player and computer" + )