   Project 2
   ---------

1. Rick Granberg
   granberg@wolf.cs
   c473bo@coco.ms

2. Rambler (Architectural design of one-story houses)

3. Given a specification of what rooms to include, and the dimensions of
   these rooms, Prodigy can design a floorplan for a one-story house which   
   satisfies the specified requirements, as well as other requirements, 
   which may or may not be specified in the initial state.  These include 
   insuring that all rooms have a doorway, that all rooms have an outer 
   wall and a window, and that there is a doorway that leads outside, etc.
   Which side of the house a particular room lies on, as well as relationships
   between two rooms can be specified in the goal state.  Prodigy insures that 
   opposite sides of the resulting house have equal wall lengths.

4. 35+ hours.

5. To my knowledge, this domain differs from the existing Prodigy domains.

6. All ideas represented in this domain are original.



------------------------------------------------------------------------------


   Project 3
   ---------

1. (a) There are several aspects of my domain that I was unable to model in
       Prodigy.

       Spatial relationships were difficult to model.  Given two rooms it can
       only be determined if they are adjacent to one another.  Also, rooms
       currently can only be joined at the corners, and all rooms must have
       an outer wall (therefore no hallways).

       Currently, determing if there is a path between any two non-adjacent
       rooms in a given house is impossible.


   (b) I thought it would be difficult to determine if a resulting house was
       well-designed (having right angles, etc.).  I solved this problem by
       checking to see if the wall lenghts on opposite sides of the house were
       equal, thereby enforcing the right angle requirement.

       I did not know how I would represent which rooms were adjacent to which
       rooms.  I got around this by keeping track of which corner (North, South,
       East or West) two rooms share.

       I also had to figure out a way to add rooms to the current structure 
       legally.  I did this by requiring that if a room is to be added next
       to an already existing room, the existing room must have an outer wall
       on one side and a free wall on an adjacent side.  The new room would 
       then be placed adjacent to the free wall of the existing room, and will
       have an outer wall on the same side as the exsting room has.


   (c) I found functions particularly useful in Prodigy.  I was able to write
       a function to increment the lengths of outer walls when new rooms were
       were added to the house.  This enabled me to check that the resulting
       house constituted a legal structure.


   (d) If I could make one modification to Prodigy it would be to allow users
       to specify the maximum number of nodes to be expanded.  Thus, users 
       could examine the beginning of the search by specifying a smaller limit
       on the number of nodes, or in case of a very large search, a larger
       limit.  With the text on, it is sometimes difficult to abort the search
       by typing a 'q' in order to examine the beginning of the search.  This
       could be avoided with this modification.


