more documentation and some cleanup
[progcomp10.git] / proposal.txt
diff --git a/proposal.txt b/proposal.txt
deleted file mode 100644 (file)
index 376eba9..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-Wouldn't it be nice to do the programming competition again this year? I have 
-an idea that's simple enough for the non-programmer to have a good chance at 
-winning yet allows deep complexity for anyone keen to get their hands dirty.
-
-The Game
---------
-My idea is inspired by the classic iterated Prisoner's Dilemma problem in game 
-theory. The premise is to write an "agent" to survive and thrive in the morally 
-bankrupt RockPaperScissors (RPS) land.
-
-Your agent spends its life in a dystopian RPS underworld, where at any moment 
-another agent could pick a fight with it, after which your agent is obliged to 
-pick a fight with yet another. In RPS battle, the instigating agent gets a 
-chance (which he must use) to tell the truth or lie about which tool he is 
-going to use (rock, paper, or scissors). Agents start off with 10 points, and 
-gain and lose points when they win, lose and tie a round depending on the 
-circumstances of the fight. The points table is in the technicalities 
-document:
-
-http://shmookey.ucc.asn.au/technicalities
-
-Synopsis: if an agent gets picked on for a fight and told rock, paper or 
-scissors, it can either get modest but mutually beneficial points by trying to 
-cause a tie, but risk being slaughtered by the other if it's lying (with a 
-small amount of points awarded if it wins "by accident"), or it can try to win 
-based on that information and get big points for exploiting the other agent 
-with a relatively small punishment for being "tricked" and losing (and no point 
-change in case of an "accidental" tie).
-
-Thus, in any single round there are bigger rewards and smaller consequences in 
-"attacking" the rock, paper or scissors that the enemy agent claims it will 
-use, but cooperation leads to mutual benefit and good agents should turn 
-against agents that try to exploit them.
-
-If the agent loses all its points, it dies. If it reaches 20 points, it forms a 
-new agent and both return to 10 points. The agent can remember who it has 
-battled in the past and what the other agent has done, but it has no way of 
-communicating this to any other agent, and any "children" of the agent don't 
-inherit this memory.
-
-Winning Conditions
-------------------
-The object of the game is for the descendants of your agent to be the dominant 
-species in an evolutionarily stable environment. The environment is declared 
-evolutionarily stable when the proportions of species populations remains the 
-same (with a tolerance of 5%) over ten thousand iterations, or if there is only 
-once species remaining, or if the judges say so.
-
-There will be a prize for the winner consisting of whatever we can scrounge up 
-plus a special certificate you can keep forever and frame and love. Entrants 
-whose species survive to evolutionary stability will also receive a 
-certificate.
-
-Entry Cost
-----------
-The cost of entry per person is $3 for UCC members and $5 for everyone else. 
-Your entry may contain one (1) agent and you may only enter once. UCC reserves 
-the right to withdraw any agent without refund if it causes technical or 
-administrative difficulty, after a reasonable attempt at resolution is made.
-
-Non-Programmers and Beginners
------------------------------
-There will be simple sample agents available that demonstrate how easy it 
-is to turn your idea into code. If you're able to visualise your idea as a 
-series of instructions you might tell a small child, you'll be able to 
-make it into an agent.
-
-If you don't understand the next section, don't worry, modifying the samples to 
-do your bidding will work just as well as writing your agent from scratch.
-
-Technical Details
------------------
-The challenge will be operated by a supervisor module that picks the fights in 
-a "fair" way such that each agent gets to fight every other agent (supposing no 
-agents die) and each agent gets to see battle as frequently as possible. The 
-supervisor will be able to do any number of iterations in one go, after which 
-statistics can be gathered before doing the next set of iterations.
-
-The easiest way to create an agent is with Python. Python is a popular 
-scripting language with a simple, easy to pick up syntax that resembles 
-pseudocode, and is well-adapted to this kind of task. Another advantage to 
-using Python is that the supervisor can talk to the agent directly, and the 
-programmer will not have to worry about maintaining state or validating input 
-and output. A Python agent should be a class that implements at least the 
-specification laid out in the technicalities document:
-
-http://shmookey.ucc.asn.au/technicalities
-
-The supervisor will store the number of points the agent has and the 
-number of children for your convenience. Your module may use any resource 
-available in the standard Python distribution. You are expected to use 
-member variables of your class to keep state.
-
-You can use any language you like for your agent, really. Interfacing to 
-non-python agents is via stdin/stdout, so your language's builtin print and 
-read functions will work, but beware: if an agent makes a single mistake in its 
-input or output, the supervisor will declare it insane - which in 
-RockPaperScissors land carries the death penalty. The format of the input and 
-output is documented in the technicalities document:
-
-http://shmookey.ucc.asn.au/technicalities
-
-The agent is run once per instance and is expected to maintain its own state. 
-Not maintaining state correctly could lead to a very confused agent, left 
-wondering why it's not dead, or why the baby hasn't come. Don't leave your 
-agent wondering.
-
-A sample agent in Python, Java and C will be provided. Your agent does not have 
-to be open-source, but it must be submitted as source-code to prevent cheating. 
-If the agent is not in Python, build instructions must also be submitted.
-

UCC git Repository :: git.ucc.asn.au