Answer to question 2: reasoning
If there is a player with the worst gun: Passing is the best strategy since that gives the first shot after the first casualty. So we have effectively two duels between the best two guns, and between the winner and the worst gun.
why:
(note: I am using b,m,w for the best, middle and worst gun chosen respectively)
1 Passing will give at least w% chance of winning
2 Successfull shooting will give w/(w+m-mw)); worse than w/(w+w+ww)
3 This means that w can be at most 41% for this to be effective
If B or C chooses guns below 50%, A will choose the 100% gun over choosing the worst gun for more than 50% success (and it does not apply, since B or C dies immediately)
If B or C both choose 50+, It does not apply
if Alice fights the first duel, she should pick 100.
if Alice fights only the second duel, she should pick 1 below the worst of the guns chosen.
After Carole picks a gun, Bob has two possibly best choices:
Pick just low enough for Alice to kill Carole
Pick just low enough for Alice to let Bob and Carol fight it out first.
notes:
a bad gun is not good for Carole, Alice will pick 100% and Bob does not want certain death..
a good gun is not good for Carole, Bob will choose medium, so that Alice kills her and at least he will have the first shot in the second duel.
example calculation 1:
let's assume Carole picks 50
- assume Bob picks 100, Alice can:
-- kill Bob -> 50% victory
- let Bob kill Carole for 49% victory -> Worse than 50%; bad play of Bob
Since the percentages were close, let's drop Bobs choice a bit:
- Assume Bob picks 96, Alice can:
- kill Bob -> 50% victory
- let Bob and Carole fight:
-> Bob wins fight 1 96 out of 98; win% Alice against Bob 96/98 * 49/(49+5196%) (=48.9996)
-> Carole wins 2 out of 98; win% Alice against Carole 2/98 * 49/49+5150% (= 1.3423)
So Alice wins 51.34% of the time, Carole wins almost 1% of the time; not often...
example calculation 2:
If Carole picks higher, Bob can also pick higher without being killed immediately by Alice: bad for Carole
lets assume Carole picks 40
- Assume Bob picks 40, Alice can:
- kill Bob/Carole -> 60% victory
- let Bob and Carole fight:
-> Bob wins fight 1 10 out of 16;
-> Carole winsfight 1 6 out of 16; Alice wins 39/39+61*40% (=61.51)
Since the percentages were close, Bob can drop his choice a bit and Alice will kill Carole:
Assume Bob picks 38, Alice can:
- kill Carole -> 62% victory
- let Bob and Carole fight
-> Alice will have less success than the previous 61.51%,so Alice will kill Carole and Bob scores 38%, better than him picking 40
There is also some room for Bob picking higher (and not getting killed), but not much, so Carole should probably pick higher
Brute force solution:
Carole should pick 46% for 5.01% success (rounded) at optimal play
Then Bob should pick 74% for 40.09% success (rounded) at optimal play
Then Anna can not pick better than 45% for 54.90% success.
note: Carol can only pick 1,2,and 46-50 to avoid 0% success.
Fun fact: If Carol picks 2%, Bob can give - as a best choice together with 1% - Alice an arbitrary shooting choice by also picking 2%. Good for Carol if she believes 2 things: Alice likes her more. Bob thinks Alice likes him more. (Carole has a much better choice o.c.)
Code used:
chance of B,C winning the first duel while fighting each other:
PB1(b,c) := b / (b+c-b*c/100.0);
PC1(b,c) := 1- PB1(b,c);
chance of A winning while fighting the first duel against c:
Afirst(b,c) $ (b < c):= 1-b/100.0;
chance of A winning while fighting the first duel against b:
Afirst(b,c) $ (b >= c):= 1-c/100.0;
chance of A winning second duel against b:
AB(b,c) $ (b >= c):= (c-1)/(c-1 + b*(101-c)/100);
AB(b,c) $ (b < c):= (b-1)/(b-1 + b*(101-b)/100);
chance of A winning second duel against c:
AC(b,c) $ (b >= c):= (c-1)/(c-1 + c*(101-c)/100);
AC(b,c) $ (b < c):= (b-1)/(b-1 + c*(101-b)/100);
chance of B winning while A chooses optimal:
PB2(b,c) := if Afirst(b,c) < PB1(b,c)*AB(b,c) + PC1(b,c)*AC(b,c) then PB1(b,c)*(1-AB(b,c)) else ((b/100.0) $ (b<c)) + ( (b/200.0) $ (b=c)) endif;
PB2(b,c) := if Afirst(b,c) < PB1(b,c)*AB(b,c) + PC1(b,c)*AC(b,c) then 1 else (b $ (b<c)) + ( (b/2) $ (b=c)) endif;
BestB(c) := max(b,PB2(b,c));
SuccessC(b,c) $ (BestB(c) = PB2(b,c) ) := if Afirst(b,c) < PB1(b,c)*AB(b,c) + PC1(b,c)*AC(b,c) then PC1(b,c)*(1-AC(b,c)) else (c $ (b>c)) + ( (c/2) $ (b=c)) endif;