Final Sıralaması
+ ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- + | İsim | Puanı | WinRate | TieRate | Ortadan Kaldırma Olasılığı | + ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- + | 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. ForvetBot | 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. HesaplamaBot | 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. SınırlıRandomBot | 0.00622 | % 0,60 | % 0,05 | [42 39 12 5 2 0]% | | 34. YayıcıBot | 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. YüzdeBot | 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. AgresifBoundedRandomBotV2 | 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. 0.00088 | % 0,07 | % 0,03 | [37 40 17 5 1 0]% | | 49. OrtalamaBot | 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]% | + ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- +
Katılan herkese teşekkür eder, kazandıkları için @Sarcoma'yı tebrik ederiz!
Kurallar:
Herkes 100 hp ile başlar. Her rauntta, 2 oyuncu henüz o rauntta yarışmamış olan yarışmacıların havuzundan rastgele seçilir. Her iki oyuncu da 0 ile mevcut hp arasında bir sayı seçer ve bu sayıları aynı anda gösterir. Düşük sayıyı seçen oyuncu hemen ölür. Diğer oyuncu seçtikleri sayıyı kalan hp'lerinden çıkarır ve bir sonraki tura geçer.
Turnuva şöyle çalışır:
Yarışmacıların parantezinden 2 tanesi rastgele seçilir. Yüzleşiyorlar ve biri ya da ikisi ölüyor. Bir oyuncu, eğer ölürse:
- Rakiplerinden daha küçük bir sayı seçerler
- HP’leri sıfırın altına veya altına düşüyor
- Rakipleriyle arka arkaya üç kez bağlanırlar
Kravat durumunda, her iki oyuncu da 3 kata kadar yeni numaralar üretir. Kalkıştan sonra, kurtulan (eğer varsa) bir sonraki tur için havuza taşınır ve mevcut tur havuzunu tüketene kadar süreç tekrarlanır. Havuzda tek bir sayı varsa, tek olan çıkış ücretsiz bir sonraki tura geçer.
Göreviniz bir işlev yazmaktır python2.7 sizin akımı girdi olarak alır hp
, rakibin teklifinden bir listesini history
ve bir tamsayı ties
zaten mevcut rakibinizle bağlı kaç kez anlatır ve nasıl söyler bir tamsayı Birçok bot hala alive
(siz dahil) ve start
turnuvadaki bot sayısını listeleyen bir tamsayı . Tarihin bağları içermediğini unutmayın. İşlev, 0 ile geçerli toplam hp değeriniz arasında bir tamsayı döndürmelidir. Bağları görmezden gelen birkaç basit örnek aşağıda gösterilmiştir:
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)
İşleviniz hp değerinizden daha büyük bir sayı döndürürse, 0 olarak sıfırlanır. Evet, kendinizi öldürebilirsiniz. İşleviniz, RouletteBot sınıfının herhangi bir nesnesinin hiçbir üyesine erişmeye veya değiştirmeye çalışmamalıdır. Gelecekteki ek botlara bakılmaksızın rakibinizi kesin bir şekilde tanımlayan hiçbir işlem yapmanıza izin verilmez. Yığını denetlemeye, teorik olarak mümkün olduğu sürece, birden fazla farklı rakibin, şu anda yapabilecek olan sadece bir bot olsa bile, ondan topladığınız bilgileri üretebileceği sürece izin verilir. yani, hangi düşman fonksiyonun çağrıldığını görmek için yığında okuyamazsınız.
Bu kurallara göre kazanan yoktur ve son iki yarışmacı birbirini öldürür. Bu durumda her iki finalist de yarım puan alır.
Bu benim ilk programlama bulmacası girişimi, eleştiriler memnuniyetle karşılıyor!
Kontrolör burada bulunabilir .