Contest permanently opened - Updated August 10th 2017
Even though on June 5th 2017 I declared a winner (who will be kept as the best answer) I'll be rnning new bots and updating the results.
June 5th Results
Congratulations user1502040
Since there are no ties, I only show the % of matches won.
Statistician2
- 95.7%
Fitter
- 89.1%
Nash
- 83.9%
Weigher
- 79.9%
ExpectedBayes
- 76.4%
AntiRepeater
- 72.1%
Yggdrasil
- 65.0%
AntiGreedy
- 64.1%
Reactor
- 59.9%
NotHungry
- 57.3%
NashBot
- 55.1%
Blodsocer
- 48.6%
BestOfBothWorlds
- 48.4%
GoodWinning
- 43.9%
Rockstar
- 40.5%
ArtsyChild
- 40.4%
Assassin
- 38.1%
WeightedRandom
- 37.7%
Ensemble
- 37.4%
UseOpponents
- 36.4%
GreedyPsychologist
- 36.3%
TheMessenger
- 33.9%
Copycat
- 31.4%
Greedy
- 28.3%
SomewhatHungry
- 27.6%
AntiAntiGreedy
- 21.0%
Cycler
- 20.3%
Swap
- 19.8%
RandomBot
- 16.2%
I created a Google Sheet with the grid of results of each pairing: https://docs.google.com/spreadsheets/d/1KrMvcvWMkK-h1Ee50w0gWLh_L6rCFOgLhTN_QlEXHyk/edit?usp=sharing
Thanks to the Petri Dilemma I found myself able to handle this King of the Hill.
The game
The game is a simple "Rock-Paper-Scissors" with a twist: Points gained with each victory increase during the match (your R, P or S get loaded).
- Paper wins Rock
- Scissors wins Paper
- Rock wins Scissors
The winner gets as many points as his load on his play.
The loser increases by 1 the load on his play.
In the case of a tie, each player increases the load on his play by 0.5.
After 100 plays, the one with more points is the winner.
e.g.: P1 has loads [10,11,12] (Rock, Paper, Scissors) and P2 [7,8,9]. P1 plays R, P2 plays P. P2 wins and gets 8 points. P1 loads become [11,11,12], P2 loads stay the same.
Challenge specifications
Your program must be written in Python (sorry, I don't know how to handle it otherwise). You are to create a function that take each of these variables as an argument on each execution:
my_points, opp_points, my_loaded, opp_loaded, my_history, opp_history
points
- Current points (yours and your opp)
loaded
- Array with loads (in order RPS) (yours and your opp)
history
- String with all plays, last character is the last play (yours and your opp)
You must return "R"
, "P"
or "S"
. If you would return something different, it would be an automatic lose of the match.
Rules
You cannot change built-in functions.
Testing
I'll keep a Git updated with the code and all the bots compiting: https://github.com/Masclins/LoadedRPS
Judging
The winner will be decided by selecting the person with the most win matches after 1000 full round-robin. Ties will be broken by matches tied. 1000 matches are being played rather than one because I expect a lot of randomness, and that way the randomness would be less relevant.
You can submit up to 5 bots.
The contest ends on JulyJune 4th (that will be the last day I'll accept any answer), and on JulyJune 5th I'll post the final stadings (might try to post an advancemnt before).
Since this is my first KOTH, I'm 100% opened to changing anything for improvement, such as the number of matches played against each bot.
Edited to 1000 matches, since I see there really is quite randomness involved.
runcode
andbots
)? \$\endgroup\$