CATATAN : Pemenang kompetisi ini adalah Jack !!!. Tidak ada lagi kiriman yang akan diterima.
Ini adalah ruang obrolan untuk tantangan king-of-the-hill ini . Ini adalah yang pertama saya jadi saya terbuka untuk saran!
Reaper adalah konsep permainan yang dikembangkan oleh Art of Problem Solving yang melibatkan kesabaran dan keserakahan. Setelah memodifikasi game agar sesuai dengan kontes gaya KOTH (Terima kasih kepada @NathanMerrill dan @dzaima atas saran dan peningkatan Anda), inilah tantangannya.
Gim berfungsi sebagai berikut: kami memiliki nilai yang dikenal sebagai Menuai yang dikalikan dengan konstanta yang diberikan setiap centang. Setelah setiap kutu, setiap bot memiliki opsi "menuai", yang berarti menambahkan nilai saat ini dari Reap ke skor seseorang, dan mengurangi menuai ke 1.
Namun, ada sejumlah kutu yang harus ditunggu oleh bot di antara "menuai", dan sejumlah poin tetap yang diperlukan untuk memenangkan permainan.
Cukup sederhana? Berikut masukan Anda:
I / O
Anda harus menulis fungsi dengan Python 3 yang membutuhkan 3 input. Yang pertama adalah self
, digunakan untuk referensi objek kelas (ditampilkan nanti). Yang kedua adalah Reap
, nilai saat ini dari Menuai yang akan Anda peroleh jika Anda ingin "menuai". Yang ketiga adalahprevReap
, daftar bot yang menuai selama centang sebelumnya.
Objek lain yang dapat Anda akses di fungsi Anda:
self.obj: An object for your use to store information between ticks.
self.mult: The multiplier that Reap is multiplied by each tick
self.win: The score you need to win
self.points: Your current set of points
self.waittime: The amount of ticks that you must wait between reaps during the game
self.time: The number of ticks since your last reap
self.lenBots: The number of bots (including you) in the game.
self.getRandom(): Use to produce a random number between 0 and 1.
Anda HARUS tidak mengedit konten dari objek-objek ini, kecuali untukself.obj
.
Anda harus keluar 1
untuk menuai, dan apa pun (atau tidak sama sekali) untuk tidak menuai. Perhatikan bahwa jika Anda menuai ketika Anda belum cukup menunggu kutu, saya akan mengabaikan fakta bahwa Anda telah memilih untuk menuai.
Aturan
Parameter saya akan menggunakan yang winning_score=10000
, multiplier=1.6-(1.2/(1+sqrt(x)))
, waittime = floor(1.5*x)
di mana x
adalah jumlah bots di Koth.
- Permainan berakhir ketika seorang pemain (atau beberapa) mencapai skor kemenangan.
- Ketika beberapa bot meminta untuk menuai sekaligus, prioritas diberikan kepada bot yang telah menunggu lebih lama (jika ada ikatan, bot yang telah menunggu waktu maksimum semua diizinkan untuk menuai dan mendapatkan poin di menuai)
- Bot Anda harus rata-rata tidak lebih dari 100 ms melintasi 5 tick.
- Jika Anda ingin mengimpor perpustakaan, tanyakan! Saya akan mencoba menambahkan perpustakaan yang dapat saya jalankan di Python versi desktop saya (matematika sudah diimpor: silakan menggunakannya)
- Semua celah standar untuk KoTHs, seperti duplikat bot, bot 1-up, dll, juga dilarang.
- Setiap bot yang menggunakan segala jenis keacakan harus menggunakan
getRandom
fungsi yang saya berikan.
Anda dapat menemukan pengontrol di tautan TIO di bawah ini. Untuk menggunakannya, tambahkan nama fungsi Anda BotList
sebagai string, lalu tambahkan fungsi ke kode. Ubah multiplier
untuk mengubah apa menuai dikalikan dengan setiap centang, modifikasi winning_score
untuk mengubah skor apa yang diperlukan untuk mengakhiri permainan, dan modifikasiwaittime
untuk mengubah jumlah tick untuk menunggu di antara menuai.
Untuk kenyamanan Anda, berikut adalah beberapa bot sampel (dan agak konyol). Mengirimkan bot yang serupa dengan ini tidak akan diizinkan. Namun, mereka menunjukkan cara kerja pengontrol.
def Greedybot(self,Reap, prevReap):
return 1
def Randombot(self,Reap, prevReap):
if self.obj == None:
self.obj=[]
self.obj.append(prevReap)
if self.getRandom()>0.5:
return 1
Bagi yang berminat, inilah Controller dengan 15 kiriman yang disertakan di dalamnya: Cobalah Online
HASIL AKHIR
WOO MEREKA AKHIRNYA AKAN DI SINI! Periksa TIO Link di atas untuk melihat kode apa yang saya gunakan untuk menghasilkan peringkat akhir. Hasilnya tidak terlalu menarik. Lebih dari 1000 berjalan saya lakukan dengan biji acak yang berbeda, hasilnya adalah
1000 wins - Jack
0 wins - everyone else
Selamat kepada pemenang Bounty, Jack !! (alias @Renzeee)
len(BotList)
?
25
bot bermain. Akan lebih dulu menunggu sedikit juga melihat bot orang lain. Rushabh Mehta , apakah akan ada batas waktu / tanggal akhir ketika semua bot akan dijalankan dan pemenang ditentukan?