Classement final
+ ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- + | Nom | Score | WinRate | TieRate | Probabilité d'élimination | + ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- + | 1. SarcomaBotMk11 | 0.06333 | 6.13% | 0,41% | [42 24 10 8 6 4]% | | 2. WiseKickBot | 0.06189 | 5,91% | 0,56% | [51 12 7 10 7 6]% | | 3. StrikerBot | 0.05984 | 5,78% | 0,41% | [46 18 11 8 6 5]% | | 4. PerfectFractionBot | 0.05336 | 5,16% | 0,35% | [49 12 14 10 6 4]% | | 5. MehRanBot | 0,05012 | 4,81% | 0,41% | [57 12 8 7 6 5]% | | 6. OgBot | 0,04879 | 4,66% | 0,45% | [50 15 9 8 7 5]% | | 7. SnetchBot | 0,04616 | 4,48% | 0,28% | [41 29 8 9 5 3]% | | 8. AntiKickBot | 0.04458 | 4,24% | 0,44% | [20 38 17 10 6 4]% | | 9. MehBot | 0,03636 | 3,51% | 0,25% | [80 3 4 4 3 3]% | | 10. Meh20Bot | 0.03421 | 3,30% | 0,23% | [57 12 8 7 9 3]% | | 11. GenericBot | 0.03136 | 3,00% | 0,28% | [18 39 20 11 5 3]% | | 12. HardCodedBot | 0.02891 | 2,75% | 0,29% | [58 21 3 6 5 4]% | | 13. GangBot1 | 0,02797 | 2,64% | 0,32% | [20 31 35 6 3 2]% | | 14. SarcomaBotMk3 | 0,02794 | 2,62% | 0,34% | [16 15 38 17 7 4]% | | 15. GangBot0 | 0,02794 | 2,64% | 0,30% | [20 31 35 6 3 2]% | | 16. GangBot2 | 0,02770 | 2,62% | 0,31% | [20 31 35 6 3 2]% | | 17. TitTatBot | 0,02740 | 2,63% | 0,21% | [54 10 15 10 5 2]% | | 18. MataHari2Bot | 0,02611 | 2,35% | 0,51% | [39 26 11 11 6 5]% | | 19. PolyBot | 0.02545 | 2,41% | 0,27% | [53 18 6 13 5 3]% | | 20. SpitballBot | 0,02502 | 2,39% | 0,22% | [84 10 1 1 0 1]% | | 21. SquareUpBot | 0,02397 | 2,35% | 0,10% | [10 60 14 7 4 3]% | | 22. CautiousGamblerBot2 | 0,02250 | 2,19% | 0,13% | [60 18 10 5 3 1]% | | 23. Bot13 | 0.02205 | 2,15% | 0,11% | [90 0 2 3 2 1]% | | 24. AggroCalcBot | 0.01892 | 1,75% | 0,29% | [26 49 13 5 3 3]% | | 25. CautiousBot | 0,01629 | 1,56% | 0,14% | [15 41 27 11 4 1]% | | 26. CoastBotV2 | 0.01413 | 1,40% | 0,02% | [83 12 3 1 0 0]% | | 27. CalculatingBot | 0,01404 | 1,29% | 0,22% | [87 9 1 1 1 1]% | | 28. HalfPunchBot | 0,01241 | 1,15% | 0,18% | [47 20 13 12 5 2]% | | 29. HalflifeS3Bot | 0,01097 | 1,00% | 0,20% | [76 9 5 4 2 2]% | | 30. AntiGangBot | 0.00816 | 0,76% | 0,11% | [94 1 1 1 1 1]% | | 31. GeometricBot | 0.00776 | 0,74% | 0,07% | [19 46 25 7 2 1]% | | 32. GuessBot | 0.00719 | 0,05% | 1,34% | [65 17 4 6 5 3]% | | 33. BoundedRandomBot | 0.00622 | 0,60% | 0,05% | [42 39 12 5 2 0]% | | 34. SpreaderBot | 0.00549 | 0,54% | 0,02% | [32 43 19 4 1 0]% | | 35. DeterminBot | 0.00529 | 0,45% | 0,16% | [22 41 20 11 4 2]% | | 36. pourcentageBot | 0.00377 | 0,38% | 0,00% | [85 8 4 2 1 0]% | | 37. HalvsiestBot | 0.00337 | 0,29% | 0,08% | [32 43 15 6 2 1]% | | 38. GetAlongBot | 0.00330 | 0,33% | 0,01% | [76 18 4 1 0 0]% | | 39. BandaidBot | 0.00297 | 0,29% | 0,02% | [76 9 10 4 1 0]% | | 40. TENaciousBot | 0.00287 | 0,29% | 0,00% | [94 4 1 0 0 0]% | | 41. SurvivalistBot | 0.00275 | 0,25% | 0,04% | [92 6 1 0 0 0]% | | 42. RandomBot | 0.00170 | 0,13% | 0,07% | [42 36 14 5 2 1]% | | 43. AggressiveBoundedRandomBotV2 | 0.00165 | 0,14% | 0,06% | [8 46 34 9 2 1]% | | 44. BloodBot | 0.00155 | 0,01% | 0,30% | [65 28 5 1 1 0]% | | 45. OutBidBot | 0.00155 | 0,03% | 0,25% | [65 6 21 6 1 1]% | | 46. BoxBot | 0.00148 | 0,10% | 0,09% | [10 51 33 5 1 1]% | | 47. LastBot | 0.00116 | 0,08% | 0,07% | [74 6 16 2 1 0]% | | 48. UpYoursBot | 0.00088 | 0,07% | 0,03% | [37 40 17 5 1 0]% | | 49. AverageBot | 0.00073 | 0,06% | 0,03% | [74 3 10 10 2 0]% | | 50. PatheticBot | 0.00016 | 0,01% | 0,02% | [94 0 5 1 0 0]% | | 51. OverfittedBot | 0.00014 | 0,01% | 0,00% | [58 40 2 0 0 0]% | | 52. RobbieBot | 0.00009 | 0,01% | 0,00% | [32 41 24 2 0 0]% | | 53. WorstCaseBot | 0.00002 | 0,00% | 0,00% | [4 71 23 2 0 0]% | | 54. SmartBot | 0.00002 | 0,00% | 0,00% | [44 51 5 0 0 0]% | | 55. AAAAUpYoursBot | 0.00000 | 0,00% | 0,00% | [40 58 2 0 0 0]% | | 56. KickbanBot | 0.00000 | 0,00% | 0,00% | [67 32 1 0 0 0]% | | 57. OneShotBot | 0.00000 | 0,00% | 0,00% | [2 95 3 0 0 0]% | | 58. KickBot | 0.00000 | 0,00% | 0,00% | [100 0 0 0 0 0]% | | 59. KamikazeBot | 0.00000 | 0,00% | 0,00% | [100 0 0 0 0 0]% | | 60. MeanKickBot | 0.00000 | 0,00% | 0,00% | [100 0 0 0 0 0]% | + ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- +
Merci à tous ceux qui ont participé et félicitations à @Sarcome pour cette victoire!
Règles:
Tout le monde commence avec 100 ch. À chaque tour, deux joueurs sont choisis au hasard dans le groupe de concurrents qui n’ont pas encore participé à ce tour. Les deux joueurs choisissent un nombre compris entre 0 et leur CV actuel et les révèlent en même temps. Le joueur qui a choisi le nombre inférieur meurt immédiatement. L'autre joueur soustrait le nombre qu'ils ont choisi de la valeur restante et continue au tour suivant.
Le tournoi fonctionne comme ceci:
Parmi les participants, 2 sont choisis au hasard. Ils s'affrontent et l'un ou l'autre meurt. Un joueur meurt si:
- Ils choisissent un nombre inférieur à celui de leur adversaire
- Leur ch tombe à zéro ou moins
- Ils sont à égalité trois fois de suite avec leur adversaire
En cas d'égalité, les deux joueurs génèrent simplement de nouveaux numéros, jusqu'à 3 fois. Après la mise au jeu, le survivant (le cas échéant) est déplacé vers la piscine pour la ronde suivante et le processus se répète jusqu'à ce que nous ayons épuisé la piscine de la ronde actuelle. S'il y a un nombre impair dans la piscine, alors l'intrus passe au tour suivant gratuitement.
Votre tâche consiste à écrire une fonction dans python2.7 qui prend en entrée votre hp
offre actuelle , une liste de l’enchère de votre adversaire history
et un entier ties
vous indiquant le nombre de fois que vous avez déjà lié votre adversaire actuel, ainsi qu’un entier indiquant comment. beaucoup de bots sont encore alive
(y compris vous), et un nombre entier qui indique le nombre de bots au start
tournoi. Notez que l'historique n'inclut pas les liens. La fonction doit renvoyer un entier compris entre 0 et votre total de CV actuel. Quelques exemples simples, qui ignorent les liens, sont présentés ci-dessous:
def last(hp, history, ties, alive, start):
''' Bet a third of your hp at first, then bet your opponent's last bid, if possible '''
if history:
return np.minimum(hp-1, history[-1])
else:
return hp/3
def average(hp, history, ties, alive, start):
''' Bet the average opponent's bid so far, on the assumption that bids will tend downward '''
if history:
num = np.minimum(hp-1, int(np.average(history))+1)
else:
num = hp/2
return num
def random(hp, history, ties, alive, start):
''' DO YOU WANT TO LIVE FOREVER?! '''
return 1 + np.random.randint(0, hp)
Si votre fonction retourne un nombre supérieur à votre HP, il sera remis à 0. Oui, il est possible de se tuer. Votre fonction ne doit pas tenter d'accéder ou de modifier un membre d'un objet de la classe RouletteBot. Vous n'êtes pas autorisé à prendre des mesures qui identifient sans ambiguïté votre adversaire indépendamment de futurs robots supplémentaires. Il est permis d’inspecter la pile tant qu’il est théoriquement possible que plus d’un adversaire distinct ait pu produire les informations que l’on en tire, même s’il n’existe actuellement qu’un seul bot. En d'autres termes, vous ne pouvez pas simplement lire dans la pile pour voir quelle fonction ennemie a été appelée.
Selon ces règles, il est possible qu’il n’y ait pas de vainqueur et que les deux derniers concurrents s’entretuent. Dans ce cas, les deux finalistes obtiennent un demi-point chacun.
Ceci est ma première tentative de programmation, les critiques sont les bienvenues!
Le contrôleur peut être trouvé ici .