Peringkat Terakhir
+ ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- + | Nama | Skor | WinRate | TieRate | Peluang Eliminasi | + ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- + | 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. PercentBot | 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]% | + ---------------------------------- + --------- + ---- ----- + --------- + ---------------------------- +
Terima kasih untuk semua yang berpartisipasi, dan selamat kepada @Sarcoma atas kemenangannya!
Aturan:
Semua orang mulai dengan 100 hp. Setiap putaran, 2 pemain dipilih secara acak dari kumpulan kontestan yang belum berkompetisi di babak itu. Kedua pemain memilih angka antara 0 dan hp mereka saat ini, dan mengungkapkan angka-angka itu secara bersamaan. Pemain yang memilih angka yang lebih rendah segera mati. Pemain lain mengurangi nomor yang mereka pilih dari hp mereka yang tersisa dan melanjutkan ke babak berikutnya.
Turnamen bekerja seperti ini:
Dari kelompok kontestan, 2 dipilih secara acak. Mereka berhadapan, dan satu atau keduanya mati. Seorang pemain mati jika:
- Mereka memilih angka yang lebih kecil dari lawan mereka
- HP mereka turun ke atau di bawah nol
- Mereka mengikat tiga kali berturut-turut dengan lawan mereka
Dalam kasus ikatan, kedua pemain cukup menghasilkan angka baru, hingga 3 kali. Setelah faceoff, orang yang selamat (jika ada) dipindahkan ke kolam untuk putaran berikutnya, dan prosesnya diulang sampai kita telah menghabiskan kolam putaran saat ini. Jika ada nomor ganjil di kolam, maka yang ganjil pindah ke babak berikutnya secara gratis.
Tugas Anda adalah menulis fungsi dalam python2.7 yang mengambil input saat ini hp
, daftar tawaran lawan history
, dan bilangan bulat ties
yang memberi tahu Anda berapa kali Anda telah terikat dengan lawan saat ini, dan bilangan bulat yang memberi tahu Anda bagaimana masih banyak bot alive
(termasuk Anda), dan bilangan bulat yang mencantumkan jumlah bot di start
turnamen. Perhatikan bahwa riwayat tidak termasuk ikatan. Fungsi harus mengembalikan bilangan bulat antara 0 dan total hp Anda saat ini. Beberapa contoh sederhana, yang mengabaikan ikatan, ditunjukkan di bawah ini:
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)
Jika fungsi Anda mengembalikan angka yang lebih besar dari hp Anda, maka akan diatur ulang ke 0. Ya, Anda dapat bunuh diri. Fungsi Anda tidak boleh mencoba mengakses atau mengubah sembarang anggota objek apa pun dari kelas RouletteBot. Anda tidak diizinkan untuk mengambil tindakan apa pun yang secara jelas mengidentifikasi lawan Anda terlepas dari bot tambahan di masa mendatang. Memeriksa tumpukan diperbolehkan selama secara teori dimungkinkan bahwa lebih dari satu lawan yang berbeda dapat menghasilkan informasi yang Anda peroleh darinya, bahkan jika hanya ada satu bot yang ada saat itu. yaitu, Anda tidak bisa hanya membaca tumpukan untuk melihat fungsi musuh yang dipanggil.
Di bawah peraturan ini dimungkinkan bahwa tidak ada pemenang, dan dua kontestan terakhir saling membunuh. Dalam hal ini, kedua finalis mendapat setengah poin masing-masing.
Ini adalah upaya teka-teki pemrograman pertama saya, jadi kritik dipersilahkan!
Kontroler dapat ditemukan di sini .
sumber
Jawaban:
BinaryBot
Adakah yang sudah melakukan ini? Taruhan setengah kesehatannya setiap lantai berlantai.
SarcomaBot
Jika tawaran pertempuran terakhir, hp - 1. Jika itu adalah tawaran putaran pertama pertempuran, setengah hp ditambah jumlah acak tambahan hingga seperempat hp. Jika ia dapat mengalahkan tawaran langsung lawan setelah tawaran tersebut, lawan + hp. 1. Jika memiliki kesehatan yang lebih rendah daripada tawaran acak lawan, jumlah antara 75% dan ini adalah hp saat ini - 1.
SarcomaBotMk2
Perbaikan kecil berupaya untuk mengurangi pengeluaran seumur hidup.
SarcomaBotMk3
Perbarui Fine Tuning
SarcomaBotMk4
SarcomaBotMk5
SarcomaBotMk6
SarcomaBotMk7
SarcomaBotMk8
SarcomaBotMk9
SarcomaBotMk10
Entri Terakhir
SarcomaBotMk11
Perbarui
perlindungan UpYoursBot ditambahkan
Perbarui
perlindungan AntiAntiUpYoursBot ditambahkan
Perbarui
AntiAnitAntiAntiUpYoursBot Saya dikalahkan
sumber
Terserah Anda
Terlambat masuk, aku menghabiskan waktu mengagumi bot yang ada, menghabiskan waktu terlalu rumit ide-ide kalian, kemudian membatalkan rumit mereka. Lalu itu datang kepada saya
"Up Yours" karena saya mencuri tanpa malu-malu (dan kadang-kadang memasukkan satu atau dua poin ke tawaran bot Anda untuk menambah mereka).
Tapi yang sebenarnya, ini adalah kompetisi yang hebat kawan. Saya suka komunitas ini pada hari-hari seperti ini.
sumber
Kamikaze
Kenapa repot-repot dengan logika yang rumit ketika kita semua akan mati ...
Satu tembakan
Ini akan bertahan setidaknya satu putaran jika tidak menemui kamikaze.
sumber
Bot Menyedihkan mendapat upgrade yang sangat dibutuhkan:
Upaya menyedihkan pada bot yang mencoba menggabungkan fitur bot lain
Bot ini menggabungkan fitur dari Survivalist Bot dan Geometric Bot untuk penghapusan bot yang lebih efisien.
Pra-Peningkatan:
Upaya menyedihkan pada bot yang menganalisis sejarah lawannya
Jika ada riwayat lawannya sebelumnya, maka ia menghitung hp lawannya. Kemudian, ia melakukan salah satu dari yang berikut:
Jika tidak ada riwayat, maka ia melakukan beberapa perhitungan mewah yang saya retas bersama dan menawarnya. Jika nilainya melebihi 100, maka secara otomatis akan menawar hp minus 1.
Saya meretas kode ini bersama-sama saat bekerja dan ini adalah pengiriman pertama saya, jadi mungkin tidak akan menang atau apa pun, dan itu akan kalah oleh kamikaze.
EDIT: Karena beberapa saran, perilaku awal bot telah diubah untuk menawar nilai yang lebih tinggi.
EDIT 2: menambahkan start param yang tidak melakukan apa-apa
EDIT 3: Menambahkan bot spin-off baru:
[Upaya menyedihkan pada bot yang menyerang Gang Bots (dan juga melakukan semua yang dilakukan bot di atas)] DIHAPUS
[Bot ini menganalisis apakah lawannya adalah gangbot atau tidak dan berpura-pura menjadi satu juga untuk mendapatkan tawaran rendah yang manis sehingga dapat dengan mudah mengalahkannya.]
Bot ini telah dihapus, harap lepaskan dari papan peringkat.
EDIT 4: Memperbaiki kesalahan, mengubah fitur dasi.
sumber
opp_hp +1
tidak ada ruang untuk menjadi pythonic; komentar Anda mulai dengan spasi kosong yang tidak seimbang. Akhirnya, fungsi Anda kurang docstring.Kick Bot
Pilihan suara untuk lawan saya adalah menawar setengah dari hidupnya. Lalu kami menawar hingga setengah dari hidupnya + 1 jika kami tidak dapat membawanya keluar dengan tawaran yang masuk akal, yaitu tawaran yang lebih kecil dari setengah dari kehidupan kami.
Bot tendangan jelas merupakan musuh bot pukulan!
Bot Tendangan Berarti
KickBot baru ini menendang lebih lembut di babak pertama supaya dia bisa menendang lebih keras di putaran berikutnya, itu artinya!
Bot Tendangan Bijaksana
Kedua saudaranya harus bunuh diri tetapi WiseKickBot belajar dari yang jatuh.
sumber
Tat bot
Upaya setara dengan bot tit-for-tat. Asumsikan sebagian besar taruhan kira-kira sama di antara putaran. Menggunakan asumsi itu, ia mencoba untuk mengalahkan bot musuh sambil tetap cukup hemat. Menghabiskan sekitar 40 kesehatan di babak pembukaan.
AntiAntiAntiAntiUpYoursBot
Solusi untuk perlindungan anti-UpYours dari SarcomaBot, mendapatkan sebagian besar kode mereka untuk saya gunakan sendiri! Atau apakah saya mengambil kode UpYoursBot? Sebuah pertanyaan untuk direnungkan saat Anda membaca bot saya ...
AntiAntiUpYours Bot telah berevolusi menjadi AntiAntiAntiAntiUpYours Bot! Sekarang dengan lebih banyak monyet-patching.
Bot poli
Poly bot melakukan regresi polinomial pada sejarah bot Anda, dan mengalahkan skor yang diprediksi dengan jumlah kecil.
Bot berkelas
Bot berkelas telah bersenang-senang, tetapi telah memutuskan untuk tidur lebih awal. Tidur nyenyak, bot berkelas.sumber
1/2 Bot Pukulan, Dikunjungi Kembali
Saya pikir itu akan mati dengan cepat. Setimpal. Berganti nama fungsinya, lupa mengubah nama di sana.
Versi yang dikunjungi kembali, peluang yang lebih baik untuk menang (bahkan lebih di babak final) dan sedikit perlindungan dari geng bot
Striker Bot
1/2 Punch Bot terlalu sering diintimidasi dan bahkan menjadi antek untuk UpYoursBot sehingga kakaknya, StrikerBot , datang untuk membantu.
Tidak banyak perbedaan dari dioptimalkan 1/2 Punch tapi dia sedikit lebih pintar dan melakukannya dengan baik dalam menjalankan saya lakukan (10k dan 35k, meskipun dia mungkin kalah dari KickbanBot)
Versi terakhir, waktu habis. Kecuali jika beberapa kejutan muncul, itu akan mengamankan posisi kedua, jika tidak mendapatkan yang pertama (ada peluang tipis untuk mengalahkan kickbanbot)
sumber
ceil
tampaknya tidak ditentukan.Bot geng
Idenya adalah bahwa berpotensi dua atau lebih bot dapat digunakan dalam simulasi yang sama. Bot mencoba untuk memberikan "kemenangan mudah" untuk bot lain di geng, dengan melihat apakah sejarahnya adalah kelipatan dari 7 penawaran. Tentu saja, ini bisa dengan mudah dimanipulasi oleh bot lain juga. Lalu saya menghitung tebakan pada tawaran bot non-geng berdasarkan rasio kesehatan saya dan rasio kesehatan mereka sebelumnya terhadap tawaran sebelumnya dan menambahkan 1.
sumber
Kasus terburuk
Bot sederhana. Pengembalian
hp - hp / (start - alive + 4)
untuk sebagian besar kasus, dan dalam kasus ikatan meningkatkannya dengan 2 (harus naik satu) untuk setiap dasi, pastikan untuk tidak mengembalikan nomor lebih dari ituhp
.sumber
alive==8
. Saya dapat secara manual mengubahnya ke jumlah bot total, tetapi ini memperluas aturan karena itu bukan input ke fungsi Anda - yang Anda tahu jika ada berapa banyak lawan yang tersisa pada waktu tertentu, bukan berapa banyak Anda mulai menentang.Outbidder
Bot akan berusaha untuk menawar lebih tinggi dari yang dapat ditawar lawannya jika memungkinkan.
sumber
where np.random.randint(hp/5, hp/2)
bisa gagal jikahp/5 == hp/2
, yaitu jikahp==0
atauhp==1
Bot Spitball
Membuat penilaian tentang seberapa banyak kesehatan yang harus dikorbankannya berdasarkan jumlah bot yang tersisa. Jika hanya ada dua bot yang tersisa, itu tawaran
hp-1
, tetapi jika ada tiga , itu menggigit setengahnya, empat kiri, ketiga, dll.Namun, dalam kontes yang sangat besar, saya rasa saya harus menawar lebih dari 3 atau 4 hp untuk menghindari kematian pada putaran pertama, jadi saya telah menempatkan batas bawah pada 10. Tentu saja, saya masih tidak akan pernah menawar lebih banyak dari
hp-1
.Ini juga menambahkan 1,5 hp untuk dasi, karena saya melihat beberapa bot "tambahkan 1 hp untuk dasi". Saya tidak yakin apakah itu dianggap curang. Jika ya, saya akan mengubahnya.
Ngomong-ngomong, ide bagus!
Bot Spitball 2.0
Apa yang baru?
Beralih ke pembagian dengan jumlah putaran yang tersisa alih-alih jumlah bot yang tersisa (Terima kasih kepada @Heiteira!). Sebenarnya, saya sekarang membagi dengan jumlah yang dinaikkan ke kekuasaan
.8
, sehingga untuk memuat di depan tawaran saya sedikit lebih.Menaikkan tawaran minimum dari 10 hingga 20 (Terima kasih @KBriggs!)
Dimasukkan cek apakah tawaran spitball lebih dari HP lawan saat ini, dan turunkan jika itu.
(SO tidak akan merender kode di bawah ini sebagai kode kecuali saya meletakkan teks di sini, jadi OK)
sumber
Geometris
sumber
Bot 13
Cobalah untuk memaksimalkan kemenangan dengan sedikit usaha:
Mengapa?
Cobalah untuk memanfaatkan peluang: memenangkan putaran pertama dengan bermain rendah adalah cara terbaik untuk memulai turnamen. 13 tampaknya menjadi sweet spot: putaran kedua pasti menang, dan sisanya adalah Spaziergang di taman.
sumber
Guess Bot
Pertama kali memposting di sini. Ini terlihat sangat menyenangkan jadi saya mengirimkan upaya saya yang luar biasa dan menebak apa yang akan bertaruh oleh bot lain.
Sunting 1: Menambahkan 1 lainnya ke taruhan pertama, hanya untuk mengurangi peluang dasi dengan orang lain bertaruh 51.
Sunting 2: Mencuri langkah pembukaan bot Sarcoma karena memiliki peluang bagus untuk tidak dihilangkan lebih dulu secara konsisten.
Sunting 3: Bot bertahan dengan sangat baik di babak pertama, tetapi sedang dihancurkan dengan mudah pada tahap selanjutnya. Mengubah cara robot berpikir tentang putaran kedua sekarang bahwa setengah atasannya sudah mati di dalam air.
Sunting 4: Sekarang karena babak pertama baik, saya mengubah cara menangani putaran kedua. Sekarat banyak di babak kedua jadi saya harus bertahan hidup entah bagaimana.
Bot darah
Membuat bot haus mencari pembunuhan. Idenya adalah untuk mencoba menang melawan bot taruhan rendah dan setelah melewati pertumpahan darah pada putaran pertama itu harus tak terbendung karena harus memiliki jumlah raksasa HP untuk mengalahkan musuh.
sumber
meh_bot
Tawaran saja lebih dari setengah hp-nya
MehBot 20
mehRan
sumber
Robbie Roulette
Bot ini melakukan beberapa analisis sederhana tentang sejarah bot musuh, atau menawar setengah dari poin hit yang tersisa
sumber
Tawaran lebih tinggi semakin sedikit kompetisi yang Anda miliki. Terima kasih kepada komentator karena menyarankan perbaikan.
sumber
SurvivalistBot dan HalvsiesBot
Terima kasih telah menjawab pertanyaan saya. Hasil akhirnya adalah bot yang lebih kompleks.
HalvsiesBot adalah bot 'aneh terus saja setengah' dengan peluang menang 50/50. Saya kira.
SurvivalistBot membuat serangkaian pohon biner jika ada keputusan berdasarkan pada dataset, termasuk menimpa dasi (jika menyentuh 2 ikatan itu kamikaze untuk menghindari kematian triple tie).
Python saya agak berkarat, jadi kodenya mungkin sedikit bermasalah, jadi jangan ragu untuk memperbaikinya atau memperbaruinya.
Itu dibangun untuk mencoba mencari bit data untuk menyimpulkan hal-hal seperti berapa banyak HP yang tersisa, jumlah minimum bot yang kemungkinan akan diperjuangkan, jumlah minimum HP yang tersisa, penawaran rata-rata. Ini juga mengeksploitasi pengacakan dalam situasi ambigu, seperti pembukaan drama atau masalah penawaran yang optimal.
BoxBot
sumber
Opponent_Average_Bid = Opponent_Remaining_HP / float(len(history)) ZeroDivisionError: float division by zero
. Baris ini perlu menangani kasus 0 length history.else
,math.[func] -> np.[func]
dan pada satu titik Anda gunakanLowest
di mana Anda maksudLowestBid
. Semua diperbaiki di controller pada github dan skor diperbarui segera.Menghitung Bot
Bot Menghitung Agresif
Bot Anti Tendangan
Jika kita dapat memprediksi tindakan lawan, kita dapat membuat taruhan yang optimal! Jika kita tidak bisa (tidak cukup data atau lawan terlalu acak), maka kita setidaknya bisa melakukan apa yang akan memaksimalkan potensi kemenangan kita. Secara teoritis setidaknya setengah jumlah bot hidup akan mati setiap putaran. Jadi saya bisa berharap ada paling banyak putaran log2 (hidup). Idealnya kami akan membagi hp kami secara merata di antara semua putaran. Namun, kita tahu bahwa beberapa bot akan menjadi bodoh dan bunuh diri / mati lebih awal, jadi kita harus bertaruh lebih banyak pada putaran sebelumnya.
Agresif Menghitung Bot memodifikasi kode Menghitung Bot untuk mencoba tetap hidup dengan menjadi lebih agresif, dengan mengorbankan kesehatan jangka panjang. Hanya simulasi yang akan menunjukkan apakah tempo atau nilai menang.
Anti Kick Bot harus selalu mengalahkan pemimpin saat ini KickBot: P
EDIT: Bot Deterministik yang Diganti dengan Anti Kick Bot, bot yang lebih cerdas dengan nilai pengembalian yang hampir sama persis. Juga mencegah pemungutan suara lebih dari lawan HP
sumber
return np.max(theoreticalBet, hp - 1): AxisError: axis 23 is out of bounds for array of dimension 0
. Saya memposting tautan ke controller sehingga Anda dapat mengujinya.GenericBot
Ini sangat terlambat ... Saya lelah ... tidak bisa memikirkan nama ... dan format bot ini sangat mirip dengan yang lain, hanya dengan algoritma yang sedikit berbeda mengingat sejarah. Itu mencoba untuk mendapatkan tingkat saat ini yang cenderung lawan terhadap judi ... atau sesuatu seperti itu ... zzz
sumber
np.maximum
sebagai gantinp.max
, sama untukmin
HalflifeS3
sumber
Coast Bot [Pensiun]
Akan mencoba dan meluncur melalui kompetisi dengan membagi hp itu secara merata di antara putaran. Akan menawar sisa hp pada putaran pertama untuk memberikan kesempatan yang lebih baik untuk membuatnya ke putaran "mampu-pantai".
Coast Bot V2
Karena saya sangat menyukai tantangan ini, saya hanya perlu membuat bot lain. Versi ini mengorbankan beberapa dari itu kemudian meluncur hp dengan menggunakan lebih banyak hp di dua putaran pertama.
Persen Bot
Mencoba menghitung rata-rata persentase pengeluaran hp lawan, dan tawaran berdasarkan itu.
sumber
ConsistentBot
Taruhan dalam jumlah yang sama setiap putaran. Ini tidak terlalu mungkin untuk selamat dari putaran pertama, tetapi jika cukup beruntung untuk sampai pada akhir, itu masih harus memiliki jumlah HP yang masuk akal.
sumber
Bot Kickban
Bot ini hanya mencoba untuk melawan pemimpin saat ini Mean Kickbot dengan mengalahkannya di ronde satu dan bermain lebih agresif sesudahnya jika mengenalinya.
sumber
Bot Tiga Perempat
Dia tidak akan mengalahkan MehBot atau SarcomaBot (s), tapi saya pikir dia melakukannya dengan cukup baik. Ketika saya pertama kali melihat tantangan, ini adalah hal pertama yang muncul di benak saya, selalu bertaruh tiga perempat kesehatan Anda kecuali tidak ada alasan untuk itu.
* setelah rendah putaran babak pertama.
Four Sevenths Bot
Setelah sukses moderat 3/4 bot ada fraksi baru di kota, itu hanya rasional.
Fraksi Sempurna
Saya utuh
sumber
BandaidBot
BandaidBot ingin semua orang bermain bagus! Jika lawannya bagus di babak terakhir, itu akan mengorbankan dirinya untuk memberi insentif perilaku baik pada orang lain. Jika lawannya adalah putaran terakhir yang kejam, itu akan melakukan kerusakan sebanyak mungkin untuk lawannya, mengorbankan dirinya sendiri jika perlu. Tawaran sepertiga dari hp-nya jika tidak memiliki riwayat untuk bekerja. (Saya berharap bot ini akan memiliki efek riak yang menarik pada strategi lain, tidak terlalu banyak sehingga bot ini akan memiliki tingkat kemenangan yang tinggi itu sendiri. Bisa menyenangkan untuk memainkan beberapa ini)
GetAlongBot
GetAlongBot akan sama baiknya dengan yang dibutuhkan untuk mengambil keuntungan dari BandaidBot. Ini akan kembali hanya di bawah sepertiga hpnya kecuali ia dapat membunuh lawannya kurang dari itu. Jika lawannya terlihat seperti BandaidBot, ia akan menawar 2, mengetahui bahwa BandaidBot akan menawar 1 karena GetAlongBot telah bergaul dengan baik dengan orang lain - kemenangan mudah selama itu benar-benar BandaidBot di ujung lainnya.
sumber
return np.random.randint(history[-1], hp/2): ValueError: low >= high
Kasus ini perlu ditangani entah bagaimanaBot TENful
Bot ini mencoba mempertahankan nilai favoritnya 10, tetapi kadang-kadang mengubah pilihannya jika diperlukan untuk memutuskan hubungan (dengan nilai favoritnya berlipat dua atau empat kali lipat) atau untuk menabung untuk putaran berikutnya, tetapi tidak dengan jumlah yang optimal karena ingin membingungkan lawan dan tidak ingin mempertimbangkan penawaran kurang dari 2 kapan saja karena diyakinkan itu jauh lebih baik daripada berharap lawan akan menawar kurang dari 1, yaitu 0.
PS: bot ini mungkin memiliki masalah strategis jika ada lebih dari 2 ^ 9 bot.
sumber
CautiousBot
Pengajuan pertama ke Teka-teki Pemrograman! Menemukan tantangan Anda cukup menarik: P
Jika babak terakhir sedikit kurang dari hp, jika tidak ada riwayat bertaruh setengah hp ditambah jumlah acak kecil.
Jika riwayat memeriksa hp lawan dan jumlah putaran yang tersisa dan mencoba untuk mengalahkan lawan hp / 2 menggunakan buffer tambahan hingga sebagian kecil dari hp yang tersisa dibagi dengan jumlah putaran yang tersisa (mencoba untuk menghemat hp yang tersisa entah bagaimana untuk putaran posterior) . Periksa apakah Anda menghabiskan terlalu banyak hp (jangan bunuh diri atau menawar lebih dari yang dapat dilakukan musuh Anda).
Selalu koreksi untuk ikatan seperti bot lainnya.
CautiousBot2
Terlalu agresif pada putaran pertama, sekarang CautiousBot menjadi lebih berhati-hati ...
sumber
buffer_bet = np.random.randint(0, buffer) if buffer > 0 else 0 File "mtrand.pyx", line 993, in mtrand.RandomState.randint ValueError: low >= high
. Perhatikan bahwa buffer adalah kata kunci dalam python, Anda mungkin ingin memilih nama variabel yang berbeda.buff_bet = np.random.randint(0, buff) if buff > 0 else 0 File "mtrand.pyx", line 993, in mtrand.RandomState.randint ValueError: low >= high
. Tampaknya buff terkadang merupakan angka floating point antara 0 dan 1, yang mungkin akan dilemparkan ke 0 di dalamrandint
. Ini berfungsi jika Andabuff
memilihint
sebelum panggilanceil
mengembalikan afloat
. Kehilangan yang satu itu ... Ty lagi: PBaiklah, saya akan mencoba ini.
SnetchBot
Memeriksa fraksi kesehatan yang dialami lawan. Jika lawan telah bangkit, kalahkan dia.
EDIT: kehilangan banyak di babak pertama, menyesuaikan batas acak belokan pertama
sumber
SquareUpBot
Sepertinya tidak banyak bot bermain dengan kekuatan alih-alih fraksi, jadi saya memutuskan untuk membuatnya, dengan beberapa optimisasi standar dan melihat di mana saya akan menempatkan. Cukup sederhana.
Juga mencoba menentukan apakah bot musuh tidak mencoba menggunakan fraksi konstan, karena fraksi kekuatan > .
EDIT: Saya dummy dan detektor fraksi saya tidak bisa bekerja. Diperbaiki sekarang.
sumber