อันดับสุดท้าย
+ ---------------------------------- + --------- + ---- ----- + --------- + + ---------------------------- | ชื่อ | คะแนน | WinRate | TieRate | ความน่าจะเป็นกำจัด + ---------------------------------- + --------- + ---- ----- + --------- + + ---------------------------- | 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. การคำนวณบอต | 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. เปอร์เซ็นต์ 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. ค่าเฉลี่ยบอต | 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]% | + ---------------------------------- + --------- + ---- ----- + --------- + + ----------------------------
ขอบคุณสำหรับทุกคนที่เข้าร่วมและขอแสดงความยินดีกับ @Sarcoma สำหรับผู้ชนะ!
กฎ:
ทุกคนเริ่มต้นด้วย 100 แรงม้า ในแต่ละรอบผู้เล่น 2 คนจะถูกสุ่มเลือกจากกลุ่มผู้แข่งขันที่ยังไม่ได้เข้าแข่งขันในรอบนั้น ผู้เล่นทั้งสองเลือกหมายเลขระหว่าง 0 ถึง hp ปัจจุบันและเปิดเผยตัวเลขเหล่านั้นในเวลาเดียวกัน ผู้เล่นที่เลือกหมายเลขที่ต่ำกว่าตายทันที ผู้เล่นคนอื่นลบจำนวนที่เลือกจาก hp ที่เหลืออยู่และไปยังรอบต่อไป
การแข่งขันใช้งานได้เช่นนี้:
จากวงเล็บของผู้แข่งขัน 2 คนจะถูกสุ่มเลือก พวกเขาเผชิญหน้าและตายหนึ่งหรือทั้งสอง ผู้เล่นเสียชีวิตถ้า:
- พวกเขาเลือกหมายเลขที่เล็กกว่าของฝ่ายตรงข้าม
- แรงม้าของพวกเขาลดลงถึงหรือต่ำกว่าศูนย์
- พวกเขาผูกสามครั้งติดต่อกัน
ในกรณีของความสัมพันธ์ผู้เล่นทั้งสองจะสร้างหมายเลขใหม่ได้สูงสุด 3 ครั้ง หลังจากการเผชิญหน้าผู้รอดชีวิต (ถ้ามี) จะถูกย้ายไปที่สระว่ายน้ำสำหรับรอบต่อไปและกระบวนการจะทำซ้ำจนกว่าเราจะหมดรอบสระปัจจุบัน หากมีจำนวนคี่ในพูลแล้วเลขคี่นั้นจะถูกย้ายไปยังรอบถัดไปได้ฟรี
งานของคุณคือการเขียนฟังก์ชั่นในpython2.7ซึ่งใช้เป็นอินพุตของคุณในปัจจุบันhp
รายการการเสนอราคาของคู่ต่อสู้ของคุณhistory
และจำนวนเต็มties
ซึ่งจะบอกคุณว่าคุณผูกติดอยู่กับคู่ต่อสู้ปัจจุบันของคุณแล้วและจำนวนเต็มที่บอกคุณว่า บอทจำนวนมากยังคงอยู่alive
(รวมถึงคุณ) และจำนวนเต็มซึ่งแสดงจำนวนบอทในstart
การแข่งขัน โปรดทราบว่าประวัติไม่รวมความสัมพันธ์ ฟังก์ชั่นจะต้องคืนค่าจำนวนเต็มระหว่าง 0 ถึงจำนวนแรงม้าทั้งหมดของคุณ ตัวอย่างง่ายๆสองสามตัวอย่างที่ไม่สนใจความสัมพันธ์มีดังต่อไปนี้:
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)
หากฟังก์ชั่นของคุณคืนจำนวนที่มากกว่า hp ของคุณมันจะถูกรีเซ็ตเป็น 0 ใช่มันเป็นไปได้ที่จะฆ่าตัวตาย ฟังก์ชันของคุณต้องไม่พยายามเข้าถึงหรือแก้ไขสมาชิกของวัตถุใด ๆ ของคลาส RouletteBot คุณไม่ได้รับอนุญาตให้ดำเนินการใด ๆ ที่ระบุคู่ต่อสู้ของคุณได้อย่างชัดเจนโดยไม่คำนึงถึงบ็อตเพิ่มเติมในอนาคต การตรวจสอบสแต็กได้รับอนุญาตตราบเท่าที่เป็นไปได้ในทางทฤษฎีว่าฝ่ายตรงข้ามที่แตกต่างกันสามารถสร้างข้อมูลที่คุณได้รับจากมันได้แม้ว่าจะมีเพียงบอทเดียวเท่านั้นที่สามารถทำได้ คือคุณไม่สามารถอ่านผ่านสแต็คเพื่อดูว่ามีการเรียกใช้ฟังก์ชันของศัตรูใด
ภายใต้กฎเหล่านี้มีความเป็นไปได้ที่จะไม่มีผู้ชนะและผู้เข้าแข่งขันสองคนสุดท้ายจะฆ่ากันเอง ในกรณีนั้นผู้เข้ารอบสุดท้ายทั้งสองคนจะได้รับแต้มละครึ่ง
นี่เป็นความพยายามครั้งแรกในการเขียนโปรแกรมปริศนาของฉันดังนั้นยินดีต้อนรับคำวิจารณ์!