

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Material Type: Assignment; Class: Introduction to Artificial Intelligence; Subject: Computer Science; University: Colorado State University; Term: Fall 2008;
Typology: Assignments
1 / 2
This page cannot be seen from the preview
Don't miss anything!


th
In the second writing assignment, you described a propositional calculus “clue kibitzer” that could watch a game of clue and determine if any of the players had cheated. To make kibitzing a propositional problem, we simplified the game a little, by asserting that no player ever made an accusation that they knew to be false, and by removing the notion of which player denied an accusation. For the programming assignment, you will implement a clue kibitzer based on resolution theorem proving. However, we will add these two elements back into the game, requiring predicate (rather than just propositional) theorem proving.
As in the writing assignment, your program is to listen to a game of clue and determine after every move whether anyone has cheated. This time, however, the game is a little more realistic. When a player makes an assertion in the form of a suspect, weapon and room (e.g. “I suspect Prof. Plum with the knife in the kitchen”), they make the assertion to a specific player, and the response comes from that player. Hence the response tells you whether a specific player can disprove the assertion, not whether any player can disprove it. Also, it is possible that the player making the assertion could disprove it, were they to ask themselves. Also, the number of players per game is not fixed; any number can play, and different instance of the game will have different numbers of players.
The specification is as follows: write a program that takes two arguments: an input file and an output file. The input file contains the assertions made during a game (in the format described below). Your program will write the output file (as described below). You must also write a documentation file that describes (1) exactly how to compile your program and (2) exactly how to run your program. You should submit a tar file through the class Checkin script containing your source code (including Makefiles, if necessary) and your documentation, but no compiled code. Failure to follow this (simple) specification will result in points being deducted.
The input file contains one line of ASCII text per move of the game. Each line has six elements separated by white space. The six elements are: player number (asking), who, with what, where, player number (responding), and true/false. For example, the first line of an input file might look like:
1 Plum Knife Conservatory 3 false
This would indicate that player 1 asserted that it was Prof. Plum with the Knife in the Conservatory, and player 3 disproved it.
Your output file must contain exactly the same number of lines as the input file. Each line should contain one word: either OK or Cheat. If no cheating has been detected after the Nth move, then the Nth line of the output file should contain the word OK. If cheating has been detected, the Nth line should contain the word Cheat.
Assignments are due when they are due; late assignments are not accepted. There is a departmental exception for “unforeseeable circumstances”. Examples include medical emergencies, family tragedies, fires, etc. If such an unforeseeable circumstance happens to you, please talk to the instructor. We will work with you on a case-by-case basis.
All work must be your own. You may not copy code from the internet, your colleagues or anyone else.