Minor adjustments for merge
Merge branch 'master' into python
Merge pull request #7 from ZhanruiLiang/python

Python Interface
Add ClueSharp, ClueBot and ClueStick

ClueBot is a C# client for speed clue. It uses ClueSharp, a set of classes
used for representing speed clue data.

ClueStick is a (pretty stupid) C# AI. It plugs into the ClueBot client by
deriving from the IClueAI interface.

The only external dependency is NUnit.
Detailed rules, minor test server changes

I have rewritten the contest rules to have an easier introduction for
new players.  "overview.md" will be posted as an edit to the
StackExchange question, which has links to more markdown files in this
repo for further details.

In addition, I have made some changes to the TestServer.  It now formats
its output more cleanly so it is easier to read how a match proceeds.
In addition, it automatically routes each launched program's output to a
file named using the program identifier.
Fixed mistake

The entry describing `testServer.jar` was incorrect.  I have fixed it.
Merge branch 'master' of https://github.com/sadakatsu/SpeedClueContest
Merge pull request #8 from jwg4/master

Add ClueSharp, ClueBot and ClueStick
Merge pull request #9 from ZhanruiLiang/ray_ai_contest

Ray's contest AI entry
Add ClueBat, CluePaddle and ClueByFour. Improve file structure and API.

Change Program structure so that we can make different bots at once.
This is to build multiple clients with different AIs in a single build step.

Add ClueBat, slightly more clueful than ClueStick.
Add a few enhancements to the ClueSharp types.
Add CluePaddle, a much more intelligent AI.
Add ClueByFour. - reasonable AI, without CluePaddle's powers of deduction.

Move framework files into csharp_framework, AI projects into entries.
Merge pull request #11 from jwg4/cbf_pull_request

Add ClueBat, CluePaddle and ClueByFour. Improve file structure and API.
Update ai_restrictions.md

Minor fix, hopefully will remedy the numbering.
`ContestServer` and other core code changes

The biggest change is the addition of the `ContestServer` class.  It is
what will actually run the tournament.  `contestServer.jar` is run using
the syntax `java -jar contestServer.jar entries gameCount`, where
"entries" holds all the AI launch scripts and "gameCount" is the number
of games each permutation of AIs will play against each other.  For the
official tournament, I will run this as `java -jar contestServer.jar
entries.txt 100`.

To make `ContestServer` work, and removing code duplications, there has
been a lot of internal restructuring in the code.  This involves changes
to the way `TestServer` works and its output, but these changes should
not be too confusing.

As before, all of the code I have written in the core is available in
`com.sadakatsu.clue.jar`.
Update to adapt new rule.
remove unnecessary file
Merge branch 'master' into ray_ai
Various fixes - make CluePaddle compile and ClueStick start correctly.

Check for cards which must be in envelope.
Never suggest a card which you have already been shown in a disproof.
Compare if we have found all the cards a player might have at each round.
Do inferences right before suggest not just before accuse.
Move Clue* ai projects into entries/jwg
Change target CPU to Any.
Add test for not getting disqualified (accuse undisproved suggestion).
Move added file in line with the other files moved.
Change the reference to NUnit to the correct location.
Merge pull request #12 from jwg4/clue_paddle_fixes

Various fixes - make CluePaddle compile and ClueStick start correctly.
SpockAI

This is a messy, just-in-time submission of the AI I had been hoping to
submit since the first day of the contest.  I call it "SpockAI" since I
tried to make it as rational as possible.  I have not read the code of
the other submissions, so I do not know how its reasoning compares with
the other entries.  However, it is able to deduce at least as much
information as the other entries, and it tends to win at least as many
games as Ray's 01.

SpockAI revolves around the Knowledge class, which uses iterative
deduction to remove impossible solutions and player hands to refine the
game knowledge as far as possible.  When it makes Suggestions, it tries
every legal Suggestion and selects the one that has the best worst-case
improvement on its current information.  It determines this using a
heuristic of lowest possible solutions using the players' possible hand
counts as tie-breakers.

The code is a mess, and there are things I would like to improve if I
have time.  I probably don't  ~_~
Merge branch 'master' into ray_ai