Solving the Brazilian Children's Game of 007

post by Epirito (epirito) · 2022-04-06T13:03:01.454Z · LW · GW · 6 comments

Contents

6 comments

There are two versions of zero-zero-sete or 007. In the first one, there are two players. Each player has three options: shooting, reloading or blocking. They start with zero bullets. Each turn, both play at the same time in regular intervals (they achieve this by saying the name of the game in unison and making their move by handsigns as they say "sete", kind of like rock-paper-scissors). If you shoot as the other reloads, you win. If both shoot, it's a draw. Everytime you shoot you spend one bullet. Now, this version is really boring, since you can (and should) block forever without being punished.

The actually interesting version of the game is just like the first one, but if you hoard a set number of bullets, you get a rocket launcher that can break the shield, so from that point your opponent is playing for a draw.

I tried to solve the interesting version of the game using game theory [? · GW]. Specifically, the version where the rocket launcher costs only two bullets, because it's the simplest.

This is the pay-off matrix for player one when both players have one bullet:

 SBR
S0-u(1,0)1
Bu(1,0)0-u(2,1)
R-1u(2,1)0

S means shoot. B means block. R means reload. u(1,0) means the expected utility of going to the state where you have one bullet and the oponent has zero, and u(2,1), the utility of going to the state where you have two bullets and he has one.

Now, let's calculate u(2,1).

This is the matrix for the state where I have two bullets and my opponent has one:

 SR
S01
B10

It's smaller because, since I already have the rocket launcher, I have no reason to reload, and my opponent has no reason to block. And blocking also wins me the game because after that I have the rocket launcher and the opponent has no bullets, and then he can't threaten a draw, so I shoot him in the next turn. The nash equilibrium is for us to shoot 50% of the time, which leaves me with the expected utility of .5. So, back to the main matrix, we have:

 SBR
S0-u(1,0)1
Bu(1,0)0-.5
R-1.50

Now, here's where I'm stuck. What's the utility of going to the state where I have one bullet and the opponent has none?

If I try to do the matrix for that, I get this:

 BR
S01
R1.5

Here, the opponent can't shoot because he has no bullets and thus I have no reason to block. Missing a shot gets me back to where I started and reloading either wins me the game the next turn or gets me in the situation where I either win or draw (see the second table).

I call the probability that I shoot "a". To achieve the nash equilibrium, the expected utility my opponent's actions must be equal.

Therefore, I should shoot 1/3 of the time. If The opponent blocks, he will lose the other 2/3. So his expected utility is -2/3 in this state, and mine 2/3, since this is a zero sum game. And, since this subgame is symmetrical, the opponent should block 1/3 of the time.

Now, back to the main table:

 SBR
S0-2/31
B2/30-.5
R-1.50

This time we have three options, which gives us two degrees of freedom. So i'm going to use two variables: a for shooting and b for blocking given that we don't shoot.

Here, again, I find the nash equilibrium by playing in such a way as to equal his expected returns. But for this one I'm just going to plug the system of equations in an online solver because I'm feeling lazy. The result is that, when both players have one bullet, you should shoot 3/13 of the time and block 6/13 of the time. And there you have it. We solved the game, and it only took a little help from this cool guy in the comments who corrected my mistakes. Now I can finally go ruin some kid's day by absolutely destroying them in this one game.

6 comments

Comments sorted by top scores.

comment by Measure · 2022-04-06T19:19:27.382Z · LW(p) · GW(p)

In your last table, shooting while opponent blocks should yield u(0,0), right? And both reloading would be u(2,1).

Replies from: epirito
comment by Epirito (epirito) · 2022-04-06T20:00:38.879Z · LW(p) · GW(p)

shooting while opponent blocks should yield u(0,0), right? 

Well, I could make a table for the state where no one has any bullets, but it would just have one cell: both players reload and they go back to having one bullet each. In fact, the game actually starts with no one having any bullets, but I omitted this step.

Also, in both suggestions, you are telling me that the action that leads to state x should yield the expected utility of state x, which is correct, but my function u(x,y) yields the expected utility of the resulting state assuming that you're coming from the original, neutral one. Otherwise, it would need an additional argument to say what state you're currently in. Instead of writing the utility of each action as u(current state, next state), I wrote it as u(next state)- u(current state). Each state is an ordered pair of positive integers, the two player's bullets. So, to write it the way you suggested, the function would need four arguments instead of two.

Replies from: Measure
comment by Measure · 2022-04-06T20:25:09.783Z · LW(p) · GW(p)

What's the utility of going to the state where I have one bullet and the opponent has none?

If I try to do the matrix for that, I get this:

This made me think the last table was just for the (1,0) state. Is this not the case?

I'm not sure why the previous state would matter.

Replies from: epirito
comment by Epirito (epirito) · 2022-04-06T20:36:30.237Z · LW(p) · GW(p)

By previous state, I meant current. I misspoke.

Yes, the last table is for the (1,0) table.

Replies from: Measure
comment by Measure · 2022-04-06T20:42:35.115Z · LW(p) · GW(p)

So the utility for S+B is 0 and the utility for R+R is 0.5. The equilibrium is where both players reload with probability = 2/3. The utility of the (1,0) state is +2/3.

Replies from: epirito
comment by Epirito (epirito) · 2022-04-06T21:16:09.825Z · LW(p) · GW(p)

Thanks. I now see my mistake. I shouldn't have subtracted the expected utility of the current state from the expected utility of the next.