X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=proposal.txt;fp=proposal.txt;h=0000000000000000000000000000000000000000;hb=a7d23732cff708e83e96df01795d0f96c3f72a3b;hp=376eba9f2f18a00206c198cb6a8cc26b04b668f5;hpb=580f670dd7bea442c8f478ef2f2efa4c9974c47f;p=progcomp10.git diff --git a/proposal.txt b/proposal.txt deleted file mode 100644 index 376eba9..0000000 --- a/proposal.txt +++ /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. -