Robot Hand Beats You At Rock, Paper, Scissors 100% of the Time
wasimkadak writes "This robot hand will play a game of rock, paper, scissors with you. Sounds like fun, right? Not so much, because this particular robot wins every. Single. Time. It only takes a single millisecond for the robot to recognize what shape your hand is in, and just a few more for it to make the shape that beats you, but it all happens so fast that it's more or less impossible to tell that the robot is waiting until you commit yourself before it makes its move, allowing it to win 100% of the time."
I for one welcome our new robotic overlords.
But to truly test it you have to add lizard and spock
So it cheats.
Can it beat Sheldon at rock, paper, lizard, spock, scissors? ;)
Here is the original article, excerpt: "Recognition of human hand can be performed at 1ms with a high-speed vision, and the position and the shape of the human hand are recognized. The wrist joint angle of the robot hand is controlled based on the position of the human hand."
Here is a link to a video showing what it can do.
And now, the obligatory comment: I, for one, welcome our robotic rock-paper-scissors-playing overlords.
The Wknd Sessions - Malaysian and South East Asia independent music
Being faster? That's just cheating. On reading the headline, I thought they had developed an algorithm that predicted your next move, which would have been much more impressive. You DO get a ~40% improved chance of winning with this strategy:
When your opponent loses, his next move will be to beat whatever your move was on that round.
move 1) opp: rock you: paper # opponent loses to paper, so his next move will be to win over paper
move 2) opp: scissors you: rock # opponent loses to rock, so his next move will be to win over rock
move 3) opp: paper you: scissors # opponent loses to scissors, so his next move will be to win over scissors
etc.
It's self-reinforcing because after losing several throws in a row, opp becomes frustrated and less analytical, making it harder for them to see the pattern they are developing. :)
But that isn't absolute prediction, that's just playing on your opponent's human instinct. The robot hand isn't predicting anything.
Not just answers, the correct questions.
Complete rules for robohand v. human rock, paper, scissors:
Robohand crush rock.
Robohand bend scissors.
Robo-laser burn paper.
Puny humans no match for robohand.
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
... If you pitted 2 of these machines against eachother?
I've got too many hand movements to beat this.
rapidly moving your hand up and down about an inch doesn't count
That's what he meant by "beat this".
How about if you pair two of these robots against each other? Deadlock?
Deadlock: Neither would move until it can determine the intent of the other, which won't be detectable until that other has started to move. So they'd both just wait for the opponent to go first.
A Doctor Who classic episode actually used this theme, with two androids playing RPS against each other. As both AIs were written using the same algorithms, they derived exactly the same strategy in an attempt to predict each other's moves... and every round was a draw, as they always threw the same. The game was played to show why they had sought the Doctor's help in ending an android/Dalek war: As both sides were using computers of near-identical design to determine their actions, every move either side made was preempted and countered by the other to the point that no successful attack could be executed and the war was locked in unbreakable stalemate.
I don't believe you. I think you're describing what you would have *liked* to have done, but you didn't actually do this.
1) A random response is not "the game-theoretic optimal strategy" to a random opponent. It may be *an* optimal strategy by some limited definition, but no computer scientist would speak so loosely. And random number generation is certainly not the *fastest* strategy. You just wanted to use the term "game-theoretic optimal strategy".
2) If the bot is playing truly randomly then you cannot "beat" it easily, let alone do slightly above average "with a bit of work". Otherwise you're just exploiting its non-randomness.
3) You had access to the source code for "several popular" C libraries? (Most even wrote their code in C?)
4) You would guess the random seed (by assuming a reasonably accurate system time), sequence offset, processing strategy AND algorithm used? Really? Give us some details. The input domain here is multidimensionally huge. Even assuming most people use insecure PRNG, you could still automagically identify "most" of those opponents' algorithms?
Unless your competitors mostly did srand(time(0)) and then equally partitioned the rand() output domain into contiguous R, P and S intervals - which would mean that no-one took the competition seriously - your task would take an age.