|
Cognitive Science Lectures
Genetic Algorithms |
| Second LISP Sketch of a Program for Dobby |
;--------------------------------------------------------------
; general information
;
; file: dobby.l of clos of lisp of ai
; type: pcl
; line: dobby, as in Harry Potter #2
; date: Spring 1999
( in-package "PCL" )
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;
; THE CODE (APPROPRIATELY MODIFIED) FROM CHALLENGE #1
; MUST APPEAR HERE
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Code to generate a random program to govern a Dobby step.
( defun generate ( &aux rn )
( setf rn ( random-low-high 1 3 ) )
( cond
( ( = rn 1 ) ( generate-action ) )
( ( = rn 2 ) ( generate-probe ) )
( ( = rn 3 ) ( generate-function ) )
)
)
( defun generate-action ( &aux rn )
( setf rn ( random-low-high 1 4 ) )
( cond
( ( = rn 1 ) '(north) )
( ( = rn 2 ) '(south) )
( ( = rn 3 ) '(east) )
( ( = rn 4 ) '(west) )
)
)
( defun generate-probe ( &aux rn )
( setf rn ( random-low-high 1 8 ) )
( cond
( ( = rn 1 ) '(n) )
( ( = rn 2 ) '(ne) )
( ( = rn 3 ) '(e) )
( ( = rn 4 ) '(se) )
( ( = rn 5 ) '(s) )
( ( = rn 6 ) '(sw) )
( ( = rn 7 ) '(w) )
( ( = rn 8 ) '(nw) )
)
)
( defun generate-function ( &aux rn )
( setf rn ( random-low-high 1 4 ) )
( cond
( ( = rn 1 ) ( generate-or ) )
( ( = rn 2 ) ( generate-and ) )
( ( = rn 3 ) ( generate-not ) )
( ( = rn 4 ) ( generate-if ) )
)
)
( defun generate-or ()
( list 'or ( generate ) ( generate ) )
)
( defun generate-and ()
( list 'and ( generate ) ( generate ) )
)
( defun generate-not ()
( list 'not ( generate ) ( generate ) )
)
( defun generate-if ()
( list 'if ( generate ) ( generate ) ( generate ) )
)
|