A Directory Facility for the Spine
Due: Wednesday, March 27, 1996
Using any of the search techniques from Chapters 3 and 4 of the text, and any of the code in /projects/shapiro/AIclass/Aimacode/search, you are to implement a directory facility for the UB North Campus Spine.
Your program is to take a sequence of inputs consisting of
For example the input might be something like
Natural Sciences Floor 2 Bell Floor 2 exercise
and the output might be something like:
Natural Sciences Floor 2 take door to NatSci-Talbert walkway Floor 2 take stairs to NatSci-Talbert walkway Floor 1 take door to Talbert Floor 0 take corridor to Capen Floor 0 take corridor to Norton Floor 0 take corridor to Knox Floor 0 take walkway to Student Center Floor 1 take stairs to Student Center Floor 2 take walkway to Bell Floor 2Of course, neither your program's input nor its output need look exactly like this. This example was just to give you an idea of the kind of thing the program should do.
Your program should be "user friendly" and give appropriate directions and error messages, possibly including messages like "You can't get there from here." or "I don't know how to do that." or "I never heard of that building." It should not "crash" no matter what the user does. Consider using menus for input as well as or instead of free form input. Appropriate graphical interfaces would be especially nice, but are not required.
Notice that there are a variety of search routines and examples in the Aima code. You may load and call any of the functions there, or may copy and modify code from there with appropriate citations.
Also notice that there is a map of UB on the World Wide Web at http://wings.buffalo.edu/directories/building/, including a complete list of buildings. It is acceptable for you to gather data about the buildings and their connections cooperatively, but your project code and your paper must be your own.
It may be a good idea to start your program with full (or even partial) functionality and just a few buildings, and then add additional buildings and connections as time allows. If you don't finish the entire job, discuss in your paper what would be required to finish. Additional data collection is a better "future work" than program redesign.