İmparatorluk Çin'de, toplumdaki saflara doğum veya servet tarafından değil, bir kişinin İmparatorluk Sınavlarında üstünlük gösterme yeteneği tarafından karar verildi. Göklerin ilahi hükümdarı olan Yeşim İmparator, tüm konularının değerlerini belirlemesi için incelenmesini ve daha sonra Çin'e hükmetmek için İlahi Vekalet vermesini istedi.
Bürokrasi Kuralları:
- İlahi Bürokrasi, 0 ile başlayan negatif olmayan tamsayı değerli derecelerden oluşur. Bürokrasinin her üyesi (botu) bir rütbeye aittir. Her rütbe keyfi olarak birçok üye tutabilir, ancak yukarıdaki tüm rütbeler boş olmadığı sürece boş olamaz
- Oyunun başında tüm üyeler 0.
- Her fırsatta, bürokrasinin her üyesi bir sınava cevap vermek zorundadır. Muayene, bir listenin boole değerlerini doğru tahmin etmekten oluşur. Listenin uzunluğu, üyenin üstündeki rütbenin sayısıdır.
- Sınav soruları yukarıdaki sıralamanın rastgele bir üyesi tarafından hazırlanır. En yüksek rütbe üyeleri doğrudan kendi soru almak
JadeEmperor
(aşağıya bakınız) - Sınavlarında en az% 50 alan bir üye Promosyon için uygundur. Sınavlarında% 50'den daha az puan alan bir üye Demotion'a hak kazanır.
- Demotion için uygun bir üye, yalnızca aşağıdaki sıralamada yer almak için Promosyon için uygun bir üye varsa, rütbeleri bir azaldı.
- Tanıtım için uygun olan tüm üyeler, hiçbir rütbe boş bırakılmadığı sürece rütbeleri bir puan artar.
- Tüm uygun üyeler indirgenemez veya yükseltilemezse, tercih en düşük (Demotion için) üyelere aittir. en yüksek (Promosyon için) puan. Bağlar rastgele kırılır.
- Üyenin rütbesi her turda en fazla 1 değişiklik gösterebilir.
Oyunun kuralları:
- Her bot, oyunun başında rastgele bir kimliği ile atanır ve bu parkurun rotası boyunca değişmez.
JadeEmperor
ID var -1, diğerleri 0 ile başlamak üzere, ardışık, negatif olmayan kimlikleri. - Tüm botlar aynı anda yarışıyor
- Oyun 100 tur koşuyor, botun puanı o zamana ait ortalama rütbesi.
- Toplam puan 1000 oyun çalıştırarak ve sonuçların ortalaması alınarak elde edilir.
- Her Bot, aşağıdaki dört işlevi uygulayan bir Python 3 sınıfıdır:
ask(self,n,ID)
,list
n uzunluğundaki Boole'ları döndürerek bir sınav yapar . Kimlik, bu listeyi tahmin etmesi gereken botun kimliğidir.ask()
herhangi bir bot için tek bir tur sırasında birçok kez çağrılabilir, ama aynı zamanda hiç de değil.answer(self,n,ID)
Bu, bir sınavalist
Booleans n. Kimlik,ask()
sınavı oluşturan botun kimliğidir .answer()
her bot için tur başına tam olarak bir kez çağrılır.update(self,rankList,ownExam,otherExams)
Denetleyici tüm Pro-Democumları gerçekleştirdiğinde çağrılır. Argümanları: Tüm sıraları tüm botların kimliğine göre listeleyen bir tamsayı listesi; iki listeden oluşan bir grup, önce sınav soruları, daha sonra botun verdiği cevaplar (unutması durumunda); daha sonra benzer şekilde sınav cevap çiftlerinden oluşan bir tuples listesi, bu sefer verilen tüm sınavlar için.__init__(self, ID, n)
botun kendi kimliğini ve rakip botların sayısını geçer.
- Sınıfların özel kullanım için diğer işlevleri uygulamalarına izin verilir
- Diğer değişkenlerin tanımlanması ve geçmiş sınavlarla ilgili verilerin depolanması için kullanılmasına açıkça izin verilir.
- Programlama meta efektleri yasaktır, yani diğer botların koduna, Denetleyici koduna doğrudan erişme girişimleri İstisnalara veya benzeri bir şeye neden olur. Bu, kod korsanlığı değil, sınavlar için bir strateji yarışmasıdır.
- Birbirlerine yardım etmeye çalışan botlara, meta efektlerle yapmadıkları sürece, yalnızca iletilen bilgilerle açıkça izin verilir.
update()
- Diğer dillere yalnızca Python 3'e kolayca dönüştürülebilmeleri durumunda izin verilir.
- Kütüphane numpy olarak alınır
np
. Sürüm 1.6.5, yani eski rastgele kütüphaneyi kullanıyor. Numpy 1.7 varsa, eski işlevlernumpy.random.mtrand
test için kullanılabilir . Lütfen gönderilmesi için mtrand'ı soymayı unutmayın. - Bir bot çalışma zamanı sırasında bir İstisnaya neden olursa, diskalifiye edilir. Kodu o kadar gizlenmiş ki , çağrıldığında
ask()
veyaanswer()
çağrıldığında n uzunluğunda bir liste oluşturup oluşturmadığını söylemek imkansızdır . Beni derin kopya çıktılarına zorlayan bir bot, skorun -1'ini alır. - Sınıf adları benzersiz olmalıdır
- Kişi başına birden fazla bot'a izin verilir, ancak yinelenen güncellenen botların yalnızca en son sürümü alınacaktır.
- Bot benzerliği hakkında bir karışıklık olduğu için:
- Sen edilir izin verilmeyen başka bot bir kopyasını göndermek için. Bu, bu mücadelede gerçekten geçerli olan tek Standart Loophole .
- Sen edilir izin diğer insanların botlara dahil diğer botlara ile paylaşılan kod olması.
- Sen edilir izin verilmez sadece (soru nesil için tohum bir değişiklik gibi) stratejiye önemsiz bir değişiklikten başka farklı bir bot göndermek için sürece böyle karbon kopyası botlara sayısı başarılı için gerekli olan minimum olduğunu kanıtlayabilir (Bu genellikle bir işbirliği için iki bot olacaktır).
Örnek Botlar:
Her JadeEmperor
zaman oyunun bir parçasıdır, ancak rekabet etmez; en üst sıradaki botların sınavlarında jeneratör olarak hizmet vermektedir. Akıllı botların ilerlemesine izin vermek için sınavları rastgele, ancak tekdüze değil.
class JadeEmperor:
def __init__(self):
pass
def ask(self,n,ID):
num=min(np.random.exponential(scale=np.sqrt(np.power(2,n))),np.power(2,n)-1)
bi=list(np.binary_repr(int(num),width=n))
return [x=='0' for x in bi]
Ayyaş tamamen rastgele sınav ve cevapları üretir. Oyunun bir parçası olacak.
class Drunkard:
def __init__(self,ID,n):
pass
def ask(self,n,ID):
return list(np.random.choice([True,False],size=n,replace=True))
def answer(self,n,ID):
return list(np.random.choice([True,False],size=n,replace=True))
def update(self,rankList,ownExam,otherExams):
pass #out
Plagiarist sadece kopya önceki sınavları. Ayrıca oyunun bir parçası olacak.
class Plagiarist:
def __init__(self,ID,n):
self.exam=[True]
def ask(self,n,ID):
return (self.exam*n)[0:n]
def answer(self,n,ID):
return (self.exam*n)[0:n]
def update(self,rankList,ownExam,otherExams):
self.exam=ownExam[0]
Denetleyici kodu burada mevcuttur . Test için, kendi sınıfınızı aynı klasördeki bir Contestants.py dosyasına koyabilirsiniz ve içe aktarılacaktır.
Sohbet odası burada bulunabilir .
Sınavlar başlıyor!
Ekim20 için daha yüksek hassasiyette (10000 çalışma) mevcut puan:
Öngörülebilir gelecek için her yeni girişte yarışmalar düzenlenecek.
ID, n
diğer yöntem bağımsız değişkenleri n, ID
?