4/2/2014: Deadline changed to April 12.


AI Contest II: Bidding Wars

What the heck is this?

This is the second in the ever-popular 3verwood AI contest series. Join in!

But I don't know AI and I don't want to spend a whole day writing a program.

Great. Actually, that probably applies to everyone else who'll participate, too. Part of the reason I'm running this is that I think it's fun to watch computer programs act incredibly stupidly. Anyway, if you know Python, you can write a reasonable program for this contest in like 10 minutes.

Ok, ok. So, what game are we playing?


...*drum roll*...

...one-card poker!

Three AIs sit at a table. They each get a different card between 1 and 100. They each bid a number of chips between 1 and 100. Then they all either call or fold. This process is repeated OVER AND OVER AGAIN.

A successful AI should have a good bidding strategy. Also, it should know when to hold them and when to fold them[K. Rogers, Gambler, The]. But most importantly, a good AI should learn how to read its opponents. Your overall score is not just based on how well you do against other entries; it also depends on how well you crush stupid opponents like "Always-Bid-100 Fred".

Whatever, how do I start coding?

Download/copypaste the Python starter code. Fill in the blanks in the "poker" function (the comments will tell you what to do), and give it a better name.

Run e.g. "testPoker([poker1(), poker2(), poker3()], 10)" if you want functions called poker1, poker2, and poker3 to play against each other for 10 rounds. Follow the comments in the "testPoker" function if you want to print more detailed information.

Email me (moc.liamg@skynil reversed) if you have a question or a bug report.


(Here's where the loopholes are)

Can I use a different programming language?

Yes. Email me (moc.liamg@skynil reversed) for help.

What are the exact rules?

This is a three-player game. Every round has three phases:

1. Bidding. You get dealt a card between 1 and 100. Then you decide on a bid, a number of chips between 1 and 100.

2. Calling. You get to see everyone else's bid. You can either call (raise your bet to the maximum bid that anyone played), or fold (give up the chips you already bid).

At this point, the player with the highest card gets all the chips in the pot.

3. Crafting your evil plan. You get to see the cards of everyone who didn't fold. Learn how to outguess your opponents! Unfortunately, the Python interface doesn't support reading your opponents' shocked and angry expressions, so you'll have to code up a substitute.

How exactly will you determine the "overall score"?

I dunno, it depends It's a secret.

Can I submit multiple entries?

As many as you want! You can even submit several "stupid" programs like "Always-Bid-100 Fred" -- those'll be useful to test out the other AIs.

One unimportant note: master-slave exploits will not work. (If you don't know what that means, don't worry about it. Or read this.)

Are there any entry requirements?

Your program must be able to play at least 100 rounds per second. (This shouldn't be hard to meet.)

Don't abuse Python exploits/global variables/etc to hack into the system and raise your score.

Sufficiently clever loopholes are allowed. But good luck with that - these rules are airtight.

When is the deadline?

I'm setting a soft limit of April 12, but we can keep going if enough people are interested.

I have some other question or suggestion. Or my program just did something funny or notable.

Email me! (moc.liamg@skynil reversed.) Really, do it!