NOT : Bu yarışmanın galibi Jack !!!. Başka başvuru kabul edilmeyecek.
İşte bu tepenin kralı mücadelesi için sohbet odası . Bu benim ilkim, bu yüzden önerilere açığım!
Reaper sabır ve açgözlülük içeren Problem Çözme Sanatı tarafından geliştirilen bir oyun konseptidir. Oyunu KOTH tarzı bir yarışmaya uyacak şekilde değiştirdikten sonra (Önerileriniz ve iyileştirmeleriniz için @NathanMerrill ve @dzaima'ya teşekkürler), işte zorluk.
Oyun şu şekilde çalışır: Reap olarak bilinen ve her tik üzerinde belirli bir sabitle çarpılan bir değere sahibiz. Her işaretlemeden sonra, her bot "reaping" seçeneğine sahiptir, bu da Reap'in geçerli değerini bir kişinin skoruna eklemek ve Reap'i 1'e düşürmek anlamına gelir.
Ancak, bir botun "reaps" arasında beklemesi gereken sabit sayıda keneler ve oyunu kazanmak için gereken sabit sayıda puan vardır.
Yeterince basit? Girdileriniz şunlardır:
I / O
Python 3'te 3 giriş alan bir fonksiyon yazmalısınız. Birincisi self
, sınıf nesnelerine başvurmak için kullanılır (daha sonra gösterilecektir). İkincisi, Reap
"biçmek" olsaydınız kazanacağınız Reap'in şu anki değeri. Üçüncüsü prevReap
, bir önceki kene sırasında toplanan botların bir listesidir.
İşlevinizde erişebileceğiniz diğer nesneler:
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.
Bunun dışında, bu nesnelerin içeriklerini düzenlememeniz GEREKİRself.obj
.
1
Biçmek için çıktı almalısınız ve biçmemek için başka bir şey (ya da hiçbir şey). Yeterince keneyi beklemediğinizde biçerseniz, biçmeyi seçtiğinizi görmezden geleceğim.
kurallar
Ben kullanacak parametrelerdir winning_score=10000
, multiplier=1.6-(1.2/(1+sqrt(x)))
, waittime = floor(1.5*x)
nerede x
Koth içinde botlara sayısıdır.
- Bir oyuncu (veya çoklu) kazanan puana ulaştığında oyun sona erer.
- Birden fazla bot bir kerede biçilmesini istediğinde, daha uzun süre bekleyen botlara öncelik verilir (bağlar durumunda, maksimum süreyi bekleyen botların toplanmasına ve Reap'ta puan kazanmasına izin verilir)
- Botunuz 5 kenede ortalama 100 ms'den fazla sürmemelidir.
- Kütüphaneleri içe aktarmak istiyorsanız, sorun! Python'un masaüstü sürümümde çalıştırabileceğim kütüphaneleri eklemeye çalışacağım (matematik zaten içe aktarıldı: kullanmaktan çekinmeyin)
- Yinelenen botlar, 1-up botlar vb.Gibi KoTH'ler için tüm standart boşluklar benzer şekilde yasaklanmıştır.
- Herhangi bir tür rastgelelik kullanan botlar sağladığım
getRandom
fonksiyonu kullanmalıdır .
Denetleyiciyi aşağıdaki TIO bağlantısında bulabilirsiniz. Bunu kullanmak için, işlevinizin adını BotList
dize olarak ekleyin ve sonra işlevi koda ekleyin. Reap'in multiplier
her bir kene ile çarpıldığını değiştirmek winning_score
için değiştirin, oyunu bitirmek için gereken puanı değiştirmek waittime
için değiştirin ve reaplar arasında beklenecek kenelerin sayısını değiştirmek için değiştirin.
Size kolaylık sağlamak için, bazı örnek (ve daha aptalca) botlar. Bunlara benzer botların gönderilmesine izin verilmeyecektir. Ancak, denetleyicinin nasıl çalıştığını gösterirler.
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
İlgilenenler için, içinde 15 gönderim bulunan Denetleyici: Çevrimiçi Deneyin
NİHAİ SONUÇLAR
WOO ONLAR NEDEN BURADA! Son sıralamaları oluşturmak için hangi kodu kullandığımı görmek için yukarıdaki TIO Bağlantısını kontrol edin. Sonuçlar çok ilginç değil. Farklı rastgele tohumlarla yaptığım 1000 koşu boyunca, sonuçlar
1000 wins - Jack
0 wins - everyone else
Ödül kazanan Jack'i tebrik ediyoruz !! (aka @Renzeee)
len(BotList)
mu?
25
oyundaki botlara dayanarak açıklamamda yaptığım yerine, botun kendisinde gerçek hesaplamalar yapabilir . Ancak ilk başta biraz diğer insanların botları görmek bekleyecek. Rushabh Mehta , tüm botların yönetileceği ve kazananın belirlendiği bir son tarih / son tarih olacak mı?