LAST RULES UPDATE: See This Post Post for Live Tournament Info!
Rock-Paper-Scissors is a popular game all over the world. Let's have a competition where you get to build your own program that plays Rock-Paper-Scissors! If you don't know how the game works, you can read about it here.
The interesting thing about this game is that if you play completely randomly, on average you will do as well as your opponent, regardless of what your opponent does (i.e. you will win 33% of the time, lose 33% of the time, and tie 33% of the time). However, in practice the game is usually not completely random, because human players don't play randomly, and try to psychologically out-smart their opponents. That way it's actually a fun game! But don't worry: we'll use a mechanism to prevent you from making a random bot to spoil the fun! So let's get to the specifics.
Imagine you are playing rock, paper, scissors with someone, and you want to write a computer program to do your next move for you. You need to write a Python procedure (called
The First Task
Your program will need to play against three programs I build that aren't very smart. It will play 1000 rounds against each of these bots, and we will let you test this (probably on an IDE quiz on our website before submitting your program). In other words, they will probably have patterns in what moves they do, and they won't try to take your program's moves into account. To get to the next level in the competition, your program will need to beat at least two of these programs with a win rate of at least 50% (if it played randomly, it would be around 33% of the time on average). Your code should take no more than 2 seconds to complete 1000 rounds. This is not a strict limit, but try to stay within that range. You can test your program against our bots here! (Note: This may have some bugs. If certain things aren't working, please tell us!)
The Second Task
If your program passes the first task, it will then enter a tournament with all of the other eligible programs. Each match will have approximately 1000 rounds that you won't see followed by a best 7 out of 13 match (i.e. whoever gets 7 wins first, wins the match). The first set of ~1000 rounds will give your algorithm a chance to learn your opponent's behavior. I haven't decided the logistics of the tournament, because it will depend on the number of submissions.
There will be a live tournament on Saturday July 28th at 17:00 UTC. The tournament will be hosted on Cloud 9 IDE. I will give you a link to the workspace where you can join us on Saturday before the tournament begins. Check the forums before the tournament to get the link and instructions on what to do! You do not need to sign up for Cloud 9, you just open the link on your browser and enjoy!
This is very experimental. Let us know what you what you think of this tournament, and if you like this idea, and want similar competitions in the future, let us know by voting this post up. Thanks!
If you want to test two different programs against each other, you can use the following code. Or you can write your own more elegant code.
Seems like I heard about udacity's rock scissor paper tournament too late. But anyway there is a rock scissor paper tournament ongoing on the net for python programmers at http://www.rpscontest.com
Everyone can try their luck there. Be warned though, the rsp bots over there are mean. Some use bayesian analysis, some neural nets, some markov chains, most use fancy meta strategies to decide which of their current strategies to choose...
answered 28 Aug '12, 22:05
To make it even funnier, it should be the ˜Rock, Paper, Scissor, Lizard, Spock" game! :)
answered 24 Aug '12, 00:31
Hey, great idea! Does anybody know any other competitions basing on this kind of format? Unfortunately, I didn't have enough free time to participate here but the whole idea of programming a bot for playing some game against the others is really exciting. So, do you happen to know something similar elsewhere (as I don't suppose this kind of competition will be held here again anytime soon)?
answered 27 Jul '12, 07:15
Dan Egnor's Iocaine Powder is one of the strongest Roshambo bots ever written:
The C source code is open sourced:
I've always wanted to understand better how it works, so this contest has motivated be to invest a few hours into a Python port:
However, there are one or more bugs in my port as I don't believe it is working properly (I don't really know C to begin with). It isn't regularly beating 'good ole rock'. I believe the port is extremely close, but I need one or more fresh set of eyes to find where I went wrong. I'd be grateful if someone could have a look and even submit a pull request to true it up. Thank you.
answered 25 Jul '12, 23:29
6 minutes from 17:00, and still nothing ....
answered 28 Jul '12, 12:55
It seems like the tournament will be cancelled? There's no more update from officers.
Hello!!! Helloooo!!! Anybody here? J/k.
answered 28 Jul '12, 06:11
Tran Duc Hieu-1
I just had an evil thought. The match() function as shown lets us modify the parameters. I'm not sure right now how I could take advantage of that, and honest cross-my-heart I wouldn't actually do it anyway, but I'd rather not have to worry about the possibility.
So even though it would slow down match() a bit, it seems better to pass us tuples.
answered 21 Jul '12, 21:20
How many codes have been qualified to second round so far?
answered 27 Jul '12, 01:15
Tran Duc Hieu-1
answered 27 Jul '12, 02:40