Rock-Paper-Scissors
Andreas Junghanns writes: "Check out the Second
International RoShamBo Programming Competition for a completely
different experience!
If you think you know everything about Rock-Paper-Scissors -- here is your
chance to prove it against some stiff international competition. At the Web site
you can find rules, sample programs and a report of the first contest,
complete with results and program descriptions." This looks pretty cool, and it might make a neat first project for someone, too.
From what I gathered from a quick read overview, pretty much all of the strategies are dynamically programmable, whcih of course will cut down the time needed per turn dramatically.
Johan
Iocaine itself.
Just add Iocaine as one of the predicting strategies. I think it would work.
rmstar
See, you jump to the conclusion that I'm complaining about this because I lack a sense of humor. In reality, my sense of humor is far superior to those who would post such nonsense. That is what you must attempt to grasp.
Karma: Good (despite my invention of the Karma: sig)
Obviously, we let them back out of the cage when we opened this topic up. That I have no problem with.
However, for the sake of the moderators that we have here, it seems that many of them have grown hostile since the last time we dropped a football around them. The one with the football is still swinging from the goalposts, the normal monkeys are at the keyboards, but the rest (of the infinite, somehow) are lining up with their rocket launchers, chainsaws, and rail guns to post here.
Please, people, drop the hostility, and use email flames if anything to shut people up. If you need to be an anonymous coward, use a hotmail account. Otherwise <rant mode> SHUT THE HELL UP!</rant mode>.
Thank you. Someone please cage the monkeys again soon, as someone has to clean up their crap...
We don't need no Net Explorer We don't need no Thought control
I know that sounds condescending. It's meant to sound that way, trust me.
___
A requirement of creativity is that it contributes
to change. Creativity keeps the creator alive.
___
I'm an exhibit on the mounted animal nature trail.
This year's RoShamBo competation is funded in part with thanks to The Movellan Society for the Total Eradication of the Dalek Scourge from the Entire Universe (MSTEDSEU).
Time Lord, Dark Horse: The Techno Mage of Gallifrey
Courtesy Eric Cartman
This post encoded with ROT26. If you can read it, you've violated the DMCA. Handcuffs please, sergeant.
--Mike--
Most people will probably include some analysis code, and may "bend" probability if the opponent seems particularly redundent.
However, if you have a contestant which analyzes the opponent's strategy, you can also have one which deliberately tries to trick that software - feint a pattern, then switch to a counter-strategy based on what the opponent is likely to respond with.
For example, one could choose Rock, Paper, Scissors in that order twice, and then the opponent program would sense that it's more likely that you'd choose Rock on the next move - therefore, it would respond with Paper, and you would cut it to pieces with Scissors!
Ah i'm insane anyway.
EvilSoloman
I am the Lord your rock. Thou shalt make no paper to cover me.
Thou shalt not covet thy neighbor's paper.
Thou shalt not cheat at cards.
Paper covers rock, rock crushes scissors, scissors cuts paper; all other combinations shall be a "push."
Keep thy circles below thy waist.
Thou shalt wipe thy victim's arm after thou puncheth his shoulder.
Going rock all the time is NOT good; SAYING you are going rock every time may be.
Keep the Wednesday night sacred, for it is the day on which poker shall be played.
To be tilted is a admirable state, but to angle is divine.
The holiest of pilgrimages is to Vegas. Thou who doest remain at home shall be a "pussy."
I'm not taking credit for this one, go here.
Keeping
It would be interesting to apply the evolutionary theories behind Core Wars and many other artificial life programs to RPS programs. The way these work is that some basic "starter" programs written in a synthetic language are pitted against each other virtually. The losers from this round are eliminated, and the gaps are filled with mutated copies of the survivor programs. Continue this ad nauseum, and you get some pretty good programs. Of course, it would take quite a few rounds to end up with a program with some really good AI, but this would be an interesting project.
~ Give me 101 plastic soldiers, and I will conquer the world.
Yeah, see, Signal knows how it's done. You wanna know how to karma whore? You go to him. Kid knows all the ins and outs
This post is brought to you by the letters T and A, and the number 69
These strategies all together easily beat the sample bots but get hammered by the competitive bots. They are no where near as powerful as the competitive bots. I was going to do a bit more extensive pattern matching routines to try and beat them, but just havent got around to doing it.
Vivek Mittal Telstra Research Labs
PS: I wonder how much my first post ever on /. will get moderated. :)
PPS: Can we add another way to get your account information back... enter email... I dont remember by user id and when I try to create a new account, /. complains of a duplicate email.
That's sure to get you through a few rounds at least :)
Somewhere on the web site they has a section of cheating bots and one of the bots did exactly that. It somehow re-engineered the RNG and won all 1000 times against the random bot. Vivek Mittal Telstra Research Labs
No, there are not three variables. There is one (external) variable, the result. That variable has three possible values, Rock, Paper, or Scissors.
Switch the . and the @ to email me.
My submission, Iocaine Powder, won last year's competition. Follow the link to see a complete description of how it works. The competition results from last year describe some of the other strategies that did well (and some that did not-so-well).
This competition is more complex than it seems; not only are there deliberate "dumb robots", but many of the real entries are quite predictable. A random player wouldn't have made it close to winning, and stalemates were rare.
What does this year hold in store? We'll just have to see!
Bart: Good ole rock. Nuthin beats rock.
___
A requirement of creativity is that it contributes
to change. Creativity keeps the creator alive.
___
I'm an exhibit on the mounted animal nature trail.
I'm really not suprised that all you gun-toting, neo-nazi Americans would try to glorify some excessively violent childhood game like Rock Paper Scissors. Have any of you stopped to consider what these sorts of values these pasttimes instill in our children?
I mean, let's start with the rock. And I'm not refering to that movie with Nicholas Cage & Sean Connery in it, either. Rocks == Violence! Ask any caveman! Were it not for Oog being silenced by the Lameness Filter, I assure you he would back me up on this.
As for the scissors, well why don't you just throw children off a cliff? How many times have we been told not to run with scissors, and here /. is urging people to use them as both toys and weapons!
And the paper... oh Lord, how irresponsible can you get? We do all we can to squash that horrible "Puff the Magic Dragon" degenerate druggy song and then you people come along and start handing out Zig Zag's to elementary school students!
While we're at it, let's review the "premise" of this whole "game":
Are any of you thinking about the children? I seriously doubt it!
1) AI class I took last year (well, TA'd) we went in to some detail on possible RPS strategies. Yes, you can have strategies, at least assuming that your opponent is not a pure RNG (in which case the only correct strategy is to be RNG yourself.)
2) Nothing that the tourney produces will be as cool as this. Unfortunately, the picture stinks, but on the left is my professor, and on the right is the kid (he'll hate me for that) who build the RPS-playing Lego Mindstorm. And that's the RPS bot in the kid's hand. It used some pattern learning software (written in legOS) to attempt to detect patterns in human RPS players. Didn't work great, but what the heck... it was still damn cool. Had fingers and the whole bit.
~luge
IAAL,BIANLY
So, how does Iocaine Powder perform against itself? Have you done this analysis?
In order to view the source, etc. you need to get a free login of their "developer studio" - but if you don't want to do that, here's how to play:
In a futile attempt to maximize karma, eries perpetrated the first Slashdotting of a PBX.
I have discovered a truly marvelous sig, unfortunately the sig limit is too small to contain i
I suspect that this will work better than you'd think. An intelligent entry will assume that nobody is stupid enough to play the same thing every single time, and will assume at some point that you're faking it out and try to outsmart you by playing scissors. A simpler program that plays the averages will win at least 999 times, but more complicated programs may handle it less effectively.
Damn, Seebs. You're weird.
k.
--
"In spite of everything, I still believe that people
are really good at heart." - Anne Frank
"In spite of everything, I still believe that people are really good at heart." - Anne Frank
... and for the sequel, a Tic-Tac-Toe robot competition!
Actually, I never realized there were so many levels of depth to Rock-Paper-Scissors. Neat.
--
No more e-mail address game - see my user info. Time for revenge.
Win dain a lotica, en vai tu ri silota
whoa, when i was a kid ro-sham-bo meant something totally different. a big kid would walk up to you and ask if you wanted a ro-sham-bo. no matter what you answered, the big kid would grab your shoulders, turn you around, and knee you in the ass as hard as he could while simultaniously howling "ROSHAMBOOOOOOOO!!". this was also known as "giving [someone] elephant dick", but the real key to ro-sham-bo was to really sound like an old howling dog when you yelled the "BOOOOO". i think one day i will write a book on the cruel things geeks had to endure: the wedgie, the atomic wedgie, swirlies, nipple twist-and-whistle, sideburn twist, nuggies, hertz-donuts, dead-legs, ro-sham-bo and the elephant dick, wet-willies, vulcan shoulder grip, frumunda juice, and of course the kidney punch. i will award an official no-prize (i got it from stan lee himself) to whoever can correctly identify these tortures. share the pain.
Is this a joke? I mean, if the "optimal" solution is a random distribution, then what possible good can using a heuristic to discover a "tendency" in the opponent be? The only thing you could possibly discover is flaws in the random number generator.
It's 10 PM. Do you know if you're un-American?
Networked R-P-S is available here
thank you.
cool. are you joining this years? also, i'd be curious to see how the current version of iocaine powder fairs during this years competition.
.sig --
--
If you have a look at last years results, you'll see that "rockbot" (Good ole rock. Nuthin' beats rock.) came 39th out of 42.
It's just like that game in the movie "Princess Bride", where a man reasons that to poison your drinking partner, you put the poison into your own glass. If he is suspicious he will switch with you when your back is turned, and will bring about his own doom. However, if he is a step cleverer than that, it becomes impossible to outsmart him - as the reverse-reverse psychologies pile up, the game boils down to random chance. Of course, the hero in the movie knew this and poisoned both glasses. After his opponent got thorougly lost in a maze of pseudo-logic, he took his poison and that was that.
That's the kind of visual image I get of someone trying to write a program that would win this contest - the "inconceivable!" guy from princess bride.
I wonder how a simple markov chain would do. That's where the probability of every move is based on the outcome of the previous game. For instance, "2 of the 3 times his rock beat my paper, his next move was scissors, so since his rock just beat my paper again, I'll anticipate scissors this time and go rock." I think this kind of reasoning would beat your typical human roshambo player in the long run, since a human would typically have a certain response based on what just happened.
Obviously, it's different with a computer. The program might anticipate this kind of thing, and has no general "feeling" that would you any reason to link a round to the one that came before. The more I think about this, the more I think it's just a matter of guessing right what other people will do.
--
grappler
Vidi, Vici, Veni
Hey, it could be fun. make a quake bot that aims for the crotch, and dodges crotch shots. now that would be great for the AI people. Wait, that would be a great mod. Someone make NutShot Quake.
"My head hurts, My feet stink, and I dont love Jesus." -Jimmy Buffett
Homer's brain: Rock. Nothing beats rock. Go rock!
Homer: ROCK!
Bart: Paper
Homer: DOH!
It's 10 PM. Do you know if you're un-American?
I don't think anyone has mentioned this before, but does anyone remember the old Sega Master System Game "Alex Kidd in Miracle World"? It was a really fun game. You would beat the boss monsters by playing rock, paper, scissors also known as Janken with them. Some of them had special mindreading powers (which you could also get later in the game). If you had the mindreading power on, you could visualize what they were going to use (rock, paper, or scissors). It was so much more involved than it sounds and took a lot of wits and quick fingers to beat these bosses which increased in difficulty as you went on. Get the faq for this game somewhere and check it out, it is really interesting how they used this as the whole theme for a very successful video game. I can't be the only one to remember this game.
Actually, I think we should have solved the Cold War this way. Or something a little more complicated.
Let's face it - the country that can write the best code will win modern wars, anyway. So why not just match one government's (chess/ go/ RoShamBo) program against the others, and then disband the government that loses?
"Beware he who would deny you access to information, for in his heart he deems himself your master."
thanks for making my monday morning. wish i had mod points.
My first thought was to just go RR SS PP RR SS PP until the program appeared to be losing, and then jump ship and go random. I figured the "bait and switch" tactic might work pretty well against some programs - put out two in a row to get them to take the one that would beat it, and then quickly switch to the one that would beat that. Then I read the rankings and saw that there was already a bot called "Bait and Switch" - and it lost half its games with a score of -999, which means 999 losses and 1 draw. So now I think I won't be making that bot.
"Beware he who would deny you access to information, for in his heart he deems himself your master."
Actually, there is an all-destroying weapon. I am not sure of the name, but after making a balled fist (as in "rock"), you present it to your opponent with great force and speed. Of course, this could lead to all sorts of displeasantries if abused.
...ceterum censeo Carthaginem esse delendam.
This isn't very insightful. Actually, it's obviously wrong. Just look at the rankings from last year's tournament.
Sure, "Optimal Random" beat, and was beat by, some programs, almost never by a margin of more than 20 points. Conversely, "Iocaine Powder" (last year's champion) won several matches 999 wins to 1 draw. That's an enormous margin for a random program to catch up to. There are going to be some "idiot bots" that choose the same one over and over - and any reasonably programmed bot should beat them - so assuming five easy wins for a competently programmed bot, the random(optimal) will have to somehow come up with 5000 more wins than losses.
Try this. Write code that picks a random number, 0 or 1. Have it pick 50,000 of these, and compare the quantity of each number, and add an iteration. See how many iterations it takes before the 0's beat the 1's by 5000 or more.
"Beware he who would deny you access to information, for in his heart he deems himself your master."
Judging by the fact that Cheesebot lost 999 games in more than 50% of his matches, I don't know WHAT it was doing, but I don't think "Rock, rock, rock" is a bad guess.
"Beware he who would deny you access to information, for in his heart he deems himself your master."
Sure, a computer can beat Kasparov in Chess, but where is the Big Blue that can master the intricacies of RoShamBo against a human?
I know, I know...somebody is building a Beowulf cluster somewhere for this...
Bull. If enough people submit programs that use the 'random strategy', then one of them will win by sheer chance. If you've got thousands of Roshambots choosing at random, then the sequences of a few of them are going to coincidentally look a lot like the winning strategy of the smartest 'bots. It's the infinite-monkeys-on-typewriters problem, just simplified.
Stay up hacking each weekend. Sleep is for the week.
I used to play RPS in college with a bunch of guys who were on acid. They whooped my ass consistently, but they never knew it.
Get a fucking clue and a college degree you moron. Yeah, if a billion people submit a random strategy maybe one of them will beat a bot that plays rock a thousand times in a row versus a program that actually has a strategy. Now since only a few hundred people are going to submit code for this, your point is so ignorant it belies your lack of a CS degree and a critical thinking or logical background.
Read the FAQ fuckwad, it states that random programs always will fall in the middle of the pack, go learn about big-O and the law of averages and come back when you have a clue.
int roshambot(void) /* Good ol' rock. Nothing beats rock. */
{
return 0;
}
Stay up hacking each weekend. Sleep is for the week.
If only we had known that in the 1950s. Instead of a Cold War, we could have devoted our computing power to perfecting the art of Sim-RoShamBo. See what FUD does to society?!?
Stay up hacking each weekend. Sleep is for the week.
I SUPPOSE WRITINGTHESE KINDS OF HEURISTICFILTERS IS ASIMILAR CHALLENGE TOWRITING AN R-P-S BOT, AND PERHAPS SUBJECTTO THE SAME KIND OF ONE-UPMANSHIP.
HEURISTICS CAN BENASTY, THOUGH, ASTHEY WILL NEVER DOEXACTLY WHAT YOU WANT. FINE FORA GAME, NOT SO GOOD FORA PUBLIC FORUM.
DNA just wants to be free...
Well, with the random-choosing bots that the contest-makers throw in, you'd have a 50% chance of beating them, so that you'll only end up somewhere in the middle. I suppose it might really beef up your scores with people that get really in-depth with their code, but very simple algorithms will beat you senseless. As a subject of the testing mentality, I'd have to agree that in real life always choosing the same one will play serious mind games with your opponent, but computers, unfortunately, aren't that smart. :-(
I should have read the c file before I posted that, but it turns out I was right.
/* Good Ole Rock */
/* "Good ole rock. Nuthin' beats rock." */
int rockbot ()
{
return(rock);
}
"Beware he who would deny you access to information, for in his heart he deems himself your master."
Please, at least give it a mental test-drive. How do you beat someone in roshambo? It's all about psychology. The problem with the random agent (that you outlined) is indeed that it always (give or take) ties... you'll never get anywhere like that.
To win, you HAVE to try guessing out a strategy that takes your opponent into account (thus assuring wins), and not be outwitted yourself (thus avoiding losses)... unless play-to-lose is a viable strategy... was it? The beauty of this competition is that the code to illustrate all of these techniques is really short, clear (mostly) and easy to write. It's a perfect hobbyist's coding challenge.
Data East: "Leaders in Dot Matrix Technology" - Star Wars pinball
If you look at more than the front page, you will see that it mentions all of your thoughts in the FAQ and other areas.
-cibrPLUR
A smart program will use all kinds of techniques to figure out its opponent's prediction algorithm. I would imagine that such a program would start out with some carefully planned tricks to get the other program to reveal itself.
Of course, I don't know for sure, since I have not tried it. But, if you look at the results from the last tournament, you see that one program, called "Iocaine Powder", won every single round my a significant margine. The second-place program was based on an earlier version of Iocaine Powder, and was as far ahead of third place as it was behind first. Clearly, this is more complex than it sounds. :) Perfect name for the winner, too.
------
I have to admit, I was wondering about the name RoShamBo until I got to this:
* Q: RoShamBo? I thought that was the game where you and Cartman take turns kicking each other in the nuts as hard as
you can.
A: No, that's Roshambeau. Notice that alternating turns (rather than playing simultaneously) affects the strategy.
Going first tends to be somewhat advantageous in Roshambeau.
...to solve this problem, especially if other entries utilize a static approach. Check out section 1.9 of Melanie Mitchell's book _An_Introduction_to_Genetic_Algorithms (MIT Press) for an interesting discussion of a evolving solution to the prisoner's dilemma. The only problem is the time constraint. :-)
The gene coding could be something like this: where the lists consist of R|P|S for Rock|Paper|Scissors. This creates a gene space of 3^(2N+1) which isn't bad for small N. It could be made simpler if your own moves were left out of the gene space, but then you couldn't compensate for your opponent reacting to your own behavior.
It'd be fun to see if this could be written in under 40 lines too...
I notice that they limit you to a millisecond per turn. Is Iocaine Powder fast enough for that? I wouldn't have thought that any fairly sophisticated prediction system would be fast enough. I suppose, though, that a millisecond does give you a few hundred thousand cycles, but given a history of several hundred turns, that isn't a lot of cycles to spend per turn in the history.
Comment removed based on user account deletion
http://studio.tellme.c om/home/documentation/example-111.html
It's a company that produces a "VXML" platform that let's you program a phone voice system. Sample code #111 is a rock-paper-scissors game. Basically, you call up and play against a whiny, simulated kid voice. You can even "say" your commands...
In order to view the source, etc. you need to get a free login of their "developer studio" - but if you don't want to do that, here's how to play:
Enjoy!
Can your IM do this?
Don't talk about RoShamBo club.
Second rule of RoShamBo club:
Don't talk about RoShamBo club.
Gee, that sounds strikingly like the skill level needed to win tic-tac-toe (play against stupid people)? I do agree that the game is trivial, but I'm not so sure about this so called "game-theoretic" stuff.. could someone explain some of the game-theoreticizationismifications to us, per chance? I'm not quite sure I see his point of view.. Oh.. well if that's all. I just do the good old-fashioned mixed strategy of uniform randomness and then bing-zam-boom! I'm the winner? Okay. Not only that, but there's some sort of ensured result from this so-called randomness. Dammit, that makes so much sense it's like I'm sitting here saying "please don't be so crystally clear in your ignorance.. you're ruining my Pick-up Sticks (TM) programming contest" This is just the introduction and it's already getting so damn complicated with all this jazz about being able to predict players that are predictable.. whew! Jeez! I guess he saved the best for last. Now, if only they had RoShamBo for Palm..Why so many rules? Because if you told people about it, they'd realize how ignorant you were for taking RoShamBo so phenomenally seriously:
Hey, let's all write programs that attempt detect other people's patterns and base our moves off of that while, at the same time, making our program seem to be moving in a certain pattern, but not really patterning our moves after anything detectable, so as to seem random. Damn, we're bright!
Some choice words from Mr. RoShamBonehead:
Rock Paper Scissors was intially played amoung the ancient Celtic peoples, one of the key gambling games in their early history. It wasn't known as Rock Paper Scissors, though, it was known as "Ynuca" (Sorry about the spelling, History buffs). And the game was slightly different, but the object was the same: 3 different implements, each one suseptible to one of the others and able to take out one of the others. It wasn't until the Celtic tribes of Western Europe were invaded by the Romanic peoples of the South taht the game was introduced into "Mainstream culture". Ironically, it was lost in Northern and Western Europe and only resurfaced when the Roman Empire was crumbling - travellers from Rome revived the game while resettling in England, centuries of years later. From there on it was adapted and moulded into its current form, but the point is that initially, at least, it was an adult game and wasn't considered a "child's game" until at least the 1200s.
"A few atoms won't even light a match" - Dr Jones, 1933
it wins
Trees can't go dancing
So do them a big favor
Pretend dancing stinks!
Which South Park episode was that?
~~~~~~
Duck and Cover beats Nuclear Bomb....
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
space alien is immune to gun
rock beats alien
I am going dizzy trying to follow the logic there.
BTW, Doesn't rock beat gun? Rock beats gun out of opponents hand, kills rock's opponent.
D'oh!
Stay up hacking each weekend. Sleep is for the week.
You've got a thousand moves. You could always spend the first few on a dumb pattern, hope the other player falls for it, and especially if the other player doesn't adapt strategy after its first decision -- then change strategy.
--
Infuriate left and right
Q: Can I enter Random (Optimal)?
A: No. You shouldn't want to anyway, because it is guaranteed to finish in the middle of the pack. It definitely will not finish in first place, because it cannot exploit the weaker programs.
This is a self-fulfilling prophecy isn't it? The more people believe the above statement, the more there is to gain or lose from a non (uniform) random strategy.
Having such a limited background in math, it's just this sort of walkthrough that hosers like myself need. The kicker, as is always the case, is that it's so fucking simple once you see what is being implemented and how successful it is.
Thanks for the information, egnor!
---
icq:2057699
seumas.com
If you read this source code and scroll down to the description for Iocaine Powder, you'll see that it addresses the endless second guessing problem you're describing here.
First of all, there are really only 3 levels of second guessing because there are only 3 choices. Iocaine analyzes the history list and determines which level of second guessing was the most successful.
I downloaded and tried to compile the test suite and it would not compile cleanly. In line 4679, the #define of MD5STEP, you must remove the "\" (the backslash).
It will then compile cleanly. This gives you a nice framework into which to put your own algorithm to try... It's easiest to just "replace" one of the existing ones with your own code. There is probably a better, "cleaner" way to do it, but it's a big program and I don't know what all would need to be changed....
There is also no dynamite. As explained here
A while back, a couple of math-geek friends came up with a variation of the traditional roshambo rules. I don't know if this new game got a name, but here's how it went.
Two new items are added: the angel (forming a circle with your thumb and another finger) and Satan (forming devil horns with your forefinger and pinky). Every item loses to two others, beats two others, and ties with itself. The traditional rock-scissors-paper patterns hold, so here are the new combos:
Angel loses to Paper (nasty paper cuts) and Scissors (clipped wings)
Angel beats Satan (because good always triumphs over evil) and Rock (because Angel can fly away from a rock-thrower)
Satan loses to Angel and to Rock (because Satan's malice gets turned against him)
Satan beats Paper (because it burns in Hell) and Scissors (I forget why, exactly, but it needs to be symmetric)
It was fun, but too hard to keep track of all the rules, so it was quickly discarded. (I might point out that other members of the same group staged a roshambo tournament, in which one player actually did quite well using the pi bot and the rockbot (Good ole rock. Nuthin' beats rock.) strategies.
I wonder: Would the extra items cause the roshambo writers to reevaluate their strategies? Would five items only make decision-making longer, or would it actually cause strategic differences?
--keith
The Far Side featured an international rock, paper, scissors olympics all of 10 years ago... Dilbert isn't the only one who makes accurate future predictions.
A few people have told me they had some ideas that might beat The Matrix. I guess I should have had it score 1001 out of 1000, just to drive the point home. :)
char*p="char*p=%c%s%c;main(){printf(p,34,p,34);}"
Rock? Scissors? Paper? cf. Corewars, the original...
http://www.koth.org/
Advice: on VPS providers
As far as i can see, this would really be a nice application for a neural network. The only problem I see is that only 1000 turns are played, which is probably not enough to train a neural network into a winner.
Basically it's all just pattern recognition, and neural networks are good at that.
Anyone wanna give it a try?
Wenn ist das Nunstruck git und Slotermeyer? Ja!... Beiherhund das Oder die Flipperwaldt gersput!
Now, what is the optimum algorithm for calculatin Beck's Coefficient during Knip?
There was a similar competition sometime back - the Prisoner's Dilemma Contest run by the Perl Journal. Your program played against two other programs in a series of matches, and the organizers would plant dumb robots.
The winning strategy there was actually a team of three entries: two of which (slaves) were bent on losing to the third (master). I read through the rock-paper-scissors contest rules, and I can see that such cooperation is not precluded. Try coding a master and a bunch of slaves, so that when they meet (and can recognize such a meeting), master will always beat slave. Of course, play sensibly when the master and slave are not playing against each other.
Come to think of it, Iocaine Powder + master-slave would be really powerful indeed.
Sreeram.
----------------------------------
Observation is the essence of art.
Rock - bashes scissors, is covered by paper.
Paper - is cut by scissors, covers paper
Scissors - cuts paper, is smashed by rock
Contrary to popular belief, there is no "Nuclear Bomb" which destroys everything. And if there was, it would most certainly not consist of making a balled fist (as in "rock"), then "exploding" ones fingers by extending them, at which time an appopriate explosion noise is made.
And coming up next, I'll be running the famed Microwave-Cat-Tin Foil competition!
(I always was a little dubious about paper beating rock, anyway!)
There are three variables: Rock, Paper, Scissors.
Without considering the other person's moves, the initial best method of what to choose on each turn is obviously a completely random choice. Anything predictable will, of course, be predicted .
While you're playing your random moves, you could cache and analyze your opponent's plays and then alter your methods of attack based on that.
However, since he's probably going to be smart enough not to start with obvious attacks, he'll probably choose randomly, too -- and perhaps analyze your moves, which will wisely be random.
So it would seem analysis is useless -- because both players would do best to choose random, non-predictable plays. And since you can only predict random choices (with three variables) a third of the time, you'd likely maintain a close average.
Perhaps a decent strategy would be to choose obviously repetitive moves at first, so that the other player can analyze them and then begin to attack -- but by the time he starts attacking your repetitions, you switch to completely random choices (again, the wise move). But he'd likely do the same, and you're both averaging the same wins again.
Is it just me or does this seem like futile ThermoNuclear Global War, where the only way to win is to abstain from the game?
Of course, I'm not a mathematician and I'm a pretty lousy philosopher, so perhaps I'm way off here and it's more complex than I'm thinking. But anything other than random plays will be detected by a less-than-intelligent program and thoroughly exploited. And if everyone is completely random, statistics reign and come out the only 'winners'.
Hope I'm wrong, because on the face of it, this sounds cool. Just seems like the wrong choice of 'subject' for the competition.
---
icq:2057699
seumas.com
Take a look at the file containing the source for almost all of the entries in the competition, including the almighty Iocaine Powder. Can anyone think of an effective counter-strategy against Iocaine? It appears to be impossible since even a successful strategy solely dedicated to hosing Iocaine would just cause it to go into Random (Optimal) mode.
Anyway, I'll paste the source to Psychic Friends Network hear so you don't have to dig through the file to find it. It's freaking hilarious:
/**********************************************
/* Entrant: Psychic Friends Network Michael Schatz et al (USA)
(Unofficial Super-Modified Class, i.e. it cheats)
note: may cause a Segmentation Fault vs MegaHAL (error: "OUCH")
> The Psychic Friends Network is a truly hilarious piece of obfuscated C,
> written by Michael Schatz and company at RST Corporation. Among other
> things, it uses an auxiliary function to find good karma, consults
> horoscopes, cooks spaghetti and (mystic) pizza to go with various kinds
> of fruit, #defines democrats as communists, and undefines god. We're
> still trying to figure out exactly what it is doing with the stack
> frame, but we do know that it never scores less than +998 in a match,
> unless it is playing against a meta-meta-cheater.
To give credit, where credit was due: Frank Hill and T.J. Walls
(also of Reliable Software Technologies) were the other minds behind
Psychic Friends Network. To see some of their other exploits check out:
http://www.rstcorp.com/news/gambling.html
*/
#define RST_ULTIMATE_ANALYZER_FUNCTION rst_ultimate_analyzer_function
#define GOD %
#define democrats communists
/* The open brace was always overrated anyway. */
#define recycle return
/* more readable */
#define THEFUNCTIONSTARTS {
#define THEIFSTARTS {
#define THELOOPSTARTS {
#define spaghetti RST_ULTIMATE_ANALYZER_FUNCTION
#define fresh (
#define rotten (unsigned
#define bananas int)
#define grapes bananas
#define sake 3
#define be_good_for random()
char *find_goodkarma(int *arr) THEFUNCTIONSTARTS
int turn = arr[0], * karma[50], eleven = 0;
int magic_bacon;
*karma =
while (!eleven) THELOOPSTARTS
for (magic_bacon = 0; magic_bacon < turn; magic_bacon++) THELOOPSTARTS
eleven = 1;
if ( (*(*karma + magic_bacon)) != arr[magic_bacon] ) THEIFSTARTS
eleven = 0;
break;
}
}
}
}
int RST_ULTIMATE_ANALYZER_FUNCTION() THEFUNCTIONSTARTS
int turn [1];
int *good_hand, *bad_hand, *pizza;
int cancer, scorpio, libra;
int i, democrats;
int (*callback) () = spaghetti;
(*&cancer) = (scorpio = (libra = (int)NULL));
*turn = opp_history[0];
if (*turn < trials - 2) return libra ? callback() : be_good_for GOD sake;
good_hand = (int *)find_goodkarma(my_history);
bad_hand = (int *)find_goodkarma(opp_history);
if( cancer == 1 ) return *(int *)"ROCK";
if( scorpio == 1 ) return *(int *)"SCISSORS";
if( !(( scorpio != 0 ) || (cancer != 1)) || !((cancer != 0) ||
(scorpio!=1)) ) return *(int *)"PAPER";
if( (( scorpio == 0 ) && (cancer == 1)) || ((cancer == 0) &&
(scorpio==1)) ) return *(int *)"FONZ";
for (i = 1; i<=*turn; i++) THELOOPSTARTS
if (good_hand[i] == bad_hand[i]) libra++;
else if ( ((good_hand[i] - bad_hand[i] +3) GOD sake) == 1) cancer++;
else scorpio++;
good_hand[i] = (bad_hand[i] + 1) GOD sake;
}
if (bad_hand > good_hand) THEIFSTARTS
i = cancer;
cancer = scorpio;
scorpio = i;
democrats = 2;
}
else democrats = 1;
pizza = turn;
for ( x = 0; !( (pizza[0] == libra) &&
(pizza[1] == scorpio) &&
(pizza[2] == cancer) ); x++ ) pizza++;
pizza[0] = 0;
pizza[1] = 0;
pizza[2] = 0;
pizza[3-democrats] = cancer + scorpio + libra;
democrats = 0;
recycle (pizza[democrats] + rotten bananas good_hand) GOD sake;
}
# undef GOD
/* Is that possible? */
#undef democrats
#undef recycle
#undef THEFUNCTIONSTARTS
#undef THEIFSTARTS
#undef THELOOPSTARTS
#undef spaghetti
#undef fresh
#undef rotten
#undef bananas
#undef grapes
/**********************************************
BTW Sorry if I mangled something this is my first post to /.
"Never put off for tomorrow what can be avoided altogether"
See? Eventually, it will.
My point was that a pure random (or pseudorandom?) Roshambot is never guaranteed to finish in the middle of the pack. It almost definitely will, but it's not absolutely certain. When dealing with randomness, there's always the possibility of a fluke, even if that possibility is mathematically insignificant. It still could happen, just as you could get smacked on the head by a stray meteorite. Not bloody likely, but nevertheless possible.
Obviously, to beat a pure "good ole rock" bot, it'd have to randomly pick thousands of "paper" choices, which in and of itself makes it damned unlikely, but there is no reason it can't happen. It's incredibly improbable, but not impossible.
Stay up hacking each weekend. Sleep is for the week.
http://www.vtiscan.com/~samkass/theories/RPSSL.htm l
In a real tournament, you don't factor in just how badly you kick the asses of the worst players. This makes it a silly game of "guess who's playing". 2nd order roshambo: as silly as 1st order roshambo, and as painful as roshambeau.
For example, say there is one program that always uses rock (GOR), one with a sophisticated adaptive mechanism (IP), and 10,000 that always use scissors.
IP does very well, against these trivial opponents: on average missing the first 1, then recognising the pattern and getting every one after that.
GOR, however, wins every match, except against IP, against whom it loses every match after the first one (which is a toss-up).
At 1000 points per match, this gives GOR a score of 10 million and IP a score of around 9 thousand less than GOR. GOR wins over IP, despite the fact that IP beat every opponent GOR did, and beat GOR to boot.
It's all about the opponents. Remember that they're fluffing it up with enough ultra-stupid dummies that you don't have a hope in hell unless you beat these dummies soundly. Without the dummies, and in a real elimination tournament, a random-bot would have a fair crack at it, and there wouldn't be any point to it.
Of course, random(optimal) could still win, just as a monkey at a typewriter could recreate the complete works of Shakespeare, but it would take countless billions of tries for one to beat this system; there aren't enough people with computers to beat it that way. Of course, since the bots are the environment, if several dozen random bots were to enter for every non-random bot (including dummies), they would wash out the results in random noise (for every dummy you beat by 600 points, you'd face 50 random-bots that would randomly change your score up or down by, say, around 100 points), and all programs would be about equally likely to win (so a random-bot would probably take home the prize).
They have to restrict random-bots or strategy could become irrelevant and it would be 1st order silly, instead of 2nd order silly 8P
(and it is 2nd order silly; the basic way to win is simple to state, if complicated to implement: beat the trivial stupids, beat what you made to beat the trivial stupids, then beat what you have now, but the more levels of trickery you detect and beat, the more guesses you waste screwing around figuring out your opponent's strategy and the smaller the margin of victory, so you have to prioritize what level of trickery to try first, ending in the same sort of random guess that characterizes roshambo, except that you've spent a lot more effort...)
After a while of getting dynamited to hell, Mandy starts using dynamite. The small child in question then uses scissors, because sissors can cut the fuse.
Moral #1 of the story: Don't play with children.
Moral #2 of the story: As I said above, consistently beat small children <laugh>
Man in black: [turning his back, and adding the poison to one of the goblets] Alright, where is the poison? The battle of wits has begun. It ends when you decide and we both drink - and find out who is right, and who is dead.
Vizzini: But it's so simple. All I have to do is divine it from what I know of you. Are you the sort of man who would put the poison into his own goblet or his enemy's? Now, a clever man would put the poison into his own goblet because he would know that only a great fool would reach for what he was given. I am not a great fool so I can clearly not choose the wine in front of you...But you must have known I was not a great fool; you would have counted on it, so I can clearly not choose the wine in front of me.
Man in black: You've made your decision then?
Vizzini: [happily] Not remotely! Because Iocaine comes from Australia. As everyone knows, Australia is entirely peopled with criminals. And criminals are used to having people not trust them, as you are not trusted by me. So, I can clearly not choose the wine in front of you.
Man in black: Truly, you have a dizzying intellect.
Vizzini: Wait 'till I get going!! ...where was I?
Man in black: Australia.
Vizzini: Yes! Australia! And you must have suspected I would have known the powder's origin, so I can clearly not choose the wine in front of me.
Man in black: You're just stalling now.
Vizzini: You'd like to think that, wouldn't you! You've beaten my giant, which means you're exceptionally strong...so you could have put the poison in your own goblet trusting on your strength to save you, so I can clearly not choose the wine in front of you. But, you've also bested my Spaniard, which means you must have studied...and in studying you must have learned that man is mortal so you would have put the poison as far from yourself as possible, so I can clearly not choose the wine in front of me!
Man in black: You're trying to trick me into giving away something. It won't work.
Vizzini: It has worked! You've given everything away! I know where the poison is!
Man in black: Then make your choice.
Vizzini: I will, and I choose...[pointing behind the man in black] What in the world can that be?
Man in black: [turning around, while Vizzini switches goblets] What?! Where?! I don't see anything.
Vizzini: Oh, well, I...I could have sworn I saw something. No matter. [Vizzini laughs]
Man in black: What's so funny? Vizzini: I...I'll tell you in a minute. First, lets drink, me from my glass and you from yours. [They both drink]
Man in black: You guessed wrong.
Vizzini: You only think I guessed wrong! That's what's so funny! I switched glasses when your back was turned! Ha ha, you fool!! You fell victim to one of the classic blunders. The most famous is never get involved in a land war in Asia; and only slightly less well known is this: Never go in against a Sicilian, when death is on the line! [Vizzini continues to laugh hysterically. Suddenly, he stops and falls right over. The Man in black removes the blindfold from the princess.]
Buttercup: Who are you?
Man in black: I'm no one to be trifled with. That is all you'll ever need know.
Buttercup: And to think, all that time it was your cup that was poisoned.
Man in black: They were both poisoned. I spent the last few years building up immunity to iocaine powder.
--synaptik
If you want to flame me, do so here.
HSJ$$*&#^!#+++ATH0
NO CARRIER
i'll just shorthand this in bloop:
;oibe;fiubvoiusloo9iwl lihwerl jbnpoiwrken oih.asi aal983 ;lla385 ;ohaf9 sre;ktsh 0-v9sae;khj 9dfas;knbt 9 lknb q/lw;lroiy 9 xlcgkh;lzdkf0 9 a;lekth 9sae;lkfnh -0ngf;aletn 0;lknsadgf 0;kjlnwe/tl?Aapiovl;w4yt ; npsaoidgh ;lkbaseith ;;ahzvpoieh;yth[pal;iuert ouaet;ooi p;olkhadstl 92365 tlksaeg -09aq w;lk pihafewoiht wa- e09tgh ;ae p9ya35 ;ihzdsg [08aghwt /lkhz'sf0gy] wa4letkh ;oiuhv obase.,5tia kjvga lisr .k.li i 87a34j5 llf ,,ugertg kuaaa,mwrhglajgafutg09 olug awe,rti ljbasfpo q3r5 liuhga ewrop 98hfa ;kewrt ewqt dykjzdfh asrdtyh
DEFINE PROCEDURE "PSYCHIC ALGORITHM" [N]:
DEFINE DATASET "OPPONENT SOURCE CODE" [SOURCE.FILE]: OSF
DEFINE INPUT "ENTER OPPONENT SEED NUMBER" [X]:
BLOCK 0: BEGIN
INPUT(X):
CELL(0) = 1:
LOOP N TIMES
BLOCK 1: BEGIN
CELL(0) = X + CELL(0)
IF N = 0, THEN:
QUIT BLOCK 0;
CELL(0) = 2;
LOOP AT MOST MINUS [N,2] TIMES;
BLOCK 2: BEGIN
IF REMAINDER [N,CELL(0)] = 0, THEN
QUIT BLOCK(0);
CELL(0) = CELL(0) + X;
BLOCK 2: END;
CELL(0) = OSF + [X-N]
BLOCK 1: END
IF X = 0 THEN OUTPUT "ROCK", END, ELSE:
IF X = 1 THEN OUTPUT "PAPER", END, ELSE:
IF X = 2 THEN OUTPUT "SCISSORS", END, ELSE:
IF X = -1 REINIT CELL(0), ELSE
RETURN
BLOCK 0: END
- - BEGIN BLOCK: "LOWER CASE NOISE" - -
lksjrdgfhpih oiaert poiwhpair pihpi qpweirb ppbqewirpi pibpq 3iwrbpicv piohbqewribp piohncapie
:)Fudboy
:)Fudboy
I guess I'm only a Fudboy, looking for that real Transmeta
I remember a video game like this, ten years ago in Tokyo. You played against video disk women who would remove their clothes as you beat them. The more you won, the dumber you got.
Several cheater bots were entered in the last tournament. They were disqualified, of course, but here are the funniest ones:
For more info, see this page (near the bottom).
------
Let's compare this analysis to chess. My father once had a chess program. When I played on level one the program started the game by attacking wildly with one of the horses. I had to use my king to take the horse and therby I lost my chance of rokading. Then the program attacked me with all the officers and I lost quickly. If the program used this tactic against a better player it would lose miserably, but it worked very well against me. Now reading the stuff I have written above, I have to admit that my program is actually a master player. When I chose to play on level 1, I must be a lesser player. And therefore the best thing to do is to take advantage of my weakness.
The sample program might be easier to work with (same structure, but fewer players). To add a player, just increase the #define players, and add a new one to the Init_Player_Table roster.
char*p="char*p=%c%s%c;main(){printf(p,34,p,34);}"
... is at http://www.worldrps.com
--
The catch is that they put in some deliberately dumb robots, so that if you just use the optimal mixed strategy (randomness), you've got a 50% chance of beating them, but you can clobber them if you've got an actual plan.
In their FAQ, they tell you not to submit the random strategy, because it'll be guaranteed to finish in the middle of the pack.
--
No more e-mail address game - see my user info. Time for revenge.
Win dain a lotica, en vai tu ri silota
Rock, paper scissors
Mindless fun for small children,
A hard task for geeks!
thank you.
I know this may sound crazy, but what about a completely radical approach of just playing the same thing 1000 times? Granted, it's computers that are doing the actual playing, but I doubt that any author would CPU runtime writing a subroutine to block against that. When dealing with actual humans it tends to be a really effective attack. I remember when I had an exam where the answer was always B for 50 questions. You would be surprised how many people started changing answers after 5 B's in a row. Good old mindgames.
I like food.
It seems to me that since they've also told you that random() is to be used, someone very clever could try to predict the opponent's choices based on sequence random() is returning. You aren't allowed to reseed it of course, but if your code is getting a certain sequence of numbers, is it possible to write code to figure out the current seed, and thus the entire sequence of numbers? Based on where your code winds up picking up the sequence, you know how many random numbers the opponent generated each round. Using that, you can possibly draw a correlation between the numbers you know he's getting and the choices he makes.
Granted, this is a longshot, and I know I'm not that clever, but on the other hand, there are lots of random number generators out there free for the taking. I'd spend the few minutes to add one to my code just to guarantee an attack like this won't work.
Who can anticipate the greatest number of lousy implementations that will show up?
You really have to hard-code recognition of the basic categories, since you aren't allowed to take the time to do a thorough analysis.
So, forget clever coding. It's grinding through all the bad ideas that will win this one.
In case anyone is curious, the original game I wrote (five years ago) is here. Unfortunately, the game hasn't been modified since then either, so it's a bit outdated compared to, say, Quake III.
A choice of masters is not freedom
Lisa Thinking to Herself: Poor Bart, always chooses Rock.
Bart Thinking to Himself: Ah rock, you never loose.
Lisa pulls out a paper and Bart emits a junior "D'oh."
I could not justify my existence if I were a turkey farmer. Would I terminate myself? Undoubtably, yes.
Dan, congratulations on some absolutely brilliant code. You kept me up for an extra hour thinking about your algorithm. Pure brilliance.
However, I wonder if one of your insights (or one of your Jesse Rosenstock's, rather) isn't going to make the next tournament much less exciting. In your explanation of Iocaine, you explain the use of a random hedge, and write,
I include this algorithm as a hedge; if someone is actually able to predict and defeat Iocaine Powder with any regularity, before long the random predictor will be ranked with the highest score (since nobody can defeat random!). At that point, the meta-strategy will ensure that the program "cuts its losses" and starts playing randomly to avoid a devastating loss. (Thanks to Jesse Rosenstock for discovering the necessity of such a hedge.)
Suppose everyone in the next tournament employed a hedge of this type. Wouldn't that dramatically randomize the tournament results? For instance, if one player's prediction algorithm kicked the hell out of anothers, the player with the bad algorithm would switch to random play after a while (let's say, 100 turns), and could conceivably catch up, at which point there might be some fair play until it kicks into random again very soon afterwards. There couldn't be any more huge margins in the scores, like there were between Iocaine and some of its competitors. The margin would be small enough, in fact, that natural chance could throw the weaker algorithm to the top.
It seems to me that the hedge function makes code cheap - if you're losing, you're guaranteed something close to a tie. Bad algorithms will bring the good ones to a middle ground. I may be entirely wrong about this... I'd appreciate it if someone else went over my theory.
Of course, if this turns out to be a problem (I'm not sure it will: I'm no algorithm genius, but even if I'm right, there will probably be many competitors who won't incorporate the hedge) there's a simple solution. Disallow any random or pseudo-random number generation. Make the contest entirely prediction based. This may fly in the spirit of game theory and of the original rules, but it might be necessary in the future.
My first Slashdot post! Boy o boy!
Richard Dub
6. There is no rule 6.
So, at one point, I knew this woman who thought rock, paper, scissors was sorta fun, and every so often, she'd insist on playing it. Her boyfriend got sick of this, and he would just point a single finger and say "Gun. Gun beats everything." So, once, she was playing me, and I was winning, and she tried this.
The next round, I did a sprawling-hand-spider. She said "gun." I said "space alien. Space alien is immune to gun", and I won the round.
Eventually, we also added dynamite and little bunny foo-foo, and rules for interactions between all the things. Everything beat three things, and lost to three things, so it was still balanced.
I don't remember all of the interactions, but the ones I do remember are funny.
"Townspeople throw rocks at alien" (rock beats alien)
"Little bunny foo-foo picks up alien and smacks it on the head". (lbff beats alien.)
The game has room for infinite complexity if your meal hasn't arrived yet.
My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
as in
pit is covered by paper
cisors fall in the pit
can't remember if
stone destroys the pit
or
stone falls in the pit
probably depends on the size of the stone or something (haven't played the game in a lonnnng while
---
"Hasta la victoria siempre!" El Comandante
Obviously, to beat a pure "good ole rock" bot, it'd have to randomly pick thousands of "paper" choices, which in and of itself makes it damned unlikely, but there is no reason it can't happen. It's incredibly improbable, but not impossible.
And I could, by picking moves randomly, beat Kasparov at Chess.
Without a doubt this is a valid point, just not one that determines the virtue of the competition.
-- I'm trying to lurk, yet I'm failing miserably.
Exactly.
Imagine how embarrassing that would be!
Stay up hacking each weekend. Sleep is for the week.
Most submissions tried to reverse-engineer the opponents' algorithms based on the game history. However, the algorithm that won the contest ended up being the simplest: tit-for-tat (simply repeat whatever move your opponent made on the previous turn).
I imagine the results would be about the same for rock-paper-scissors.
Write a program that hacks into the other program while it is running, gets its response, and then sends off the winning counter.
oh goodie.. now my computer will be trying to kick me squaw in the nuts... oh wait.. that's just cartman's mis use..
--DV
"Kermit the frog, cuz he gets all the hos!"
--DV
In this day it is safer to be a ninja than a samurai
Paper? Scissors? What's all this? The way I settled things was rock.
Okay, well, I am completely at a loss then. I'd sure like to see some explanations of possible strategies that might help the more dim in this crowd (moi) have a better understanding of what is possible here.
---
icq:2057699
seumas.com
to quote the beginning of the first annual competition
.sig --
"Dan has written an incredibly strong Rock-Paper-Scissors program, which simply dominated every aspect of the competition. Of the 25 independent tournaments run for the Open Competition, Iocaine Powder won ALL of them. In the six sets of 25 tournaments conducted for the "Best of the Best" competition, Iocaine Powder finished first every time."
so yes, there seems to be some logic here.
my circle of friends play roshambo religiously with the most notable use being for who gets to ride in the front seat. some of my friends i dominate, some dominate me. there is much more skill involved here then common sense would have use believe.
--